Powershell小技巧之获取注册表值的类型


当你不需要获取注册表数据类型而只要其值是非常简单的:你可以使用Get-ItemProperty:

Get-ItemProperty -Path HKLM:SOFTWAREMicrosoftWindowsCurrentVersionRun

如果你需要获取数据类型,只需要多几个步骤:

$key = Get-Item -Path HKLM:SOFTWAREMicrosoftWindowsCurrentVersionRun

$key.GetValueNames() | ForEach-Object { $ValueName = $_

$rv = 1 | Select-Object -Property Name, Type, Value $rv.Name = $ValueName $rv.Type = $key.GetValueKind($ValueName) $rv.Value = $key.GetValue($ValueName) $rv }

访问注册表键值

在PowerShell中,用户可以通过类似于HKCU:(作为HKEY_CURRENT_USER)和HKLM:(代表HKEY_LOCAL_MATCHINE)的虚拟驱动器访问注册表键值。
如:Dir Registry::HKEY_LOCAL_MACHINESoftware
通过这种方式用户可以很容易的复制、粘贴注册表内的键值,用户可以通过下面的命令获取已经注册的文件后缀:

dir Registry::HKEY_CLASSES_ROOT.* -name | Sort-Object

读取注册表键值

在PowerShell中,用户能够以虚拟驱动器的形式来处理注册表的内容
下面的Get-RegidtryValues函数列举存储在一个注册表键值下的所有键值,完整代码如下所示:

function Get-RegistryValues($key) { 

                 (Get-Item $key).GetValueNames() 

}

Get-RegistryValues HKLM:SoftwareMicrosoftWindowsCurrentversion Get-RegistryValue读取任意注册表键值并返回其内容,完整代码如下所示: function Get-RegistryValue($key, $value) { (Get-ItemProperty $key $value).$value } Get-RegistryValue ' HKLM:SoftwareMicrosoftWindowsCurrentversion' ` SM_GamesName

写入注册表键值

添加或修改注册表键值在PowerShell中也是很方便的就可以完成的,下面创建名为Set-RegistryValue函数用来操作注册表键值,以下是完整的代码:

function Set-RegistryValue($key, $name, $value, $type="String") { 

  if ((Test-Path $key) -eq $false) { md $key | Out-Null } 

       Set-ItemProperty $key $name $value -type $type 

  } 

   Set-RegistryValue HKCU:SoftwareTestABC myValue Hello 

   Set-RegistryValue HKCU:SoftwareTestABC myValue 12 Dword 

   Set-RegistryValue HKCU:SoftwareTestABC myValue ` 

([Byte[]][Char[]]"Hello") Binary

移除注册表键值

通过Remove-Item删除目标注册表键,函数Remove-RegistryKey的完整代码如下所示:

function Remove-RegistryKey($key) { 

Remove-Item $key -Force 

}

通过Remove-ItemProperty函数删除注册表值,完整的代码如下所示:

function Remove-RegistryValue($key, $value) { 

Remove-ItemProperty $key $value 

}

支持所有PS版本

Powershell小技巧之用变量累积记录错误
当你使用GC查询文件时,当你没有足够的权限你可能会错过不少错误。你可以使用?ErrorActionSilentlyContinue忽略这些错误。有一个不错的方法来获取这些错

Powershell小技巧之获取对象可变的特征
当你得到一个有属性对象,它的一些值有的改变,有的则只能读取。这里有个技巧可以找出那些可以更改的属性。代码的有效范围是当前控制台,但你

Powershell小技巧之获取变量列表
我们的需求是当想要列出脚本中所有变量。这里定义了一个函数Get-Variable:functionGet-Variable{$token=$null$errors=$null$ast=[System.Management.Automation.Language.Parser]::Pars