Powershell小技巧之获取注册表值的类型
当你不需要获取注册表数据类型而只要其值是非常简单的:你可以使用Get-ItemProperty:
Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
如果你需要获取数据类型,只需要多几个步骤:
$key = Get-Item -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run$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_MACHINE\Software
通过这种方式用户可以很容易的复制、粘贴注册表内的键值,用户可以通过下面的命令获取已经注册的文件后缀:
dir Registry::HKEY_CLASSES_ROOT\.* -name | Sort-Object
读取注册表键值
在PowerShell中,用户能够以虚拟驱动器的形式来处理注册表的内容
下面的Get-RegidtryValues函数列举存储在一个注册表键值下的所有键值,完整代码如下所示:
function Get-RegistryValues($key) {
(Get-Item $key).GetValueNames()
}Get-RegistryValues HKLM:\Software\Microsoft\Windows\Currentversion
Get-RegistryValue读取任意注册表键值并返回其内容,完整代码如下所示:
function Get-RegistryValue($key, $value) {
(Get-ItemProperty $key $value).$value
}
Get-RegistryValue ' HKLM:\Software\Microsoft\Windows\Currentversion' `
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:\Software\TestABC myValue Hello
Set-RegistryValue HKCU:\Software\TestABC myValue 12 Dword
Set-RegistryValue HKCU:\Software\TestABC 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小技巧之查找获取注册表路径
- Powershell小技巧之使用Update-TypeData扩展类型系统
- Powershell实现从注册表获取本地关联文件的扩展名
- PowerShell获取当前进程PID的小技巧
- Powershell小技巧之从文件获取系统日志
- Powershell小技巧之获取MAC地址
- 读取注册表获取Windows系统XP/7/8/10类型(使用wcscmp比较wchar[]内容)
- 读取注册表获取Windows系统XP/7/8/10类型
- PowerShell小技巧之获取TCP响应(类Telnet)
- Powershell小技巧之获取字符串的行数
- Powershell小技巧之获取当前的时间并转换为时辰
- PowerShell小技巧之获取域名whois信息
- PowerShell小技巧之True和False的类型转换
- PowerShell中使用GetType获取变量数据类型
- Powershell小技巧之获取变量列表
- Powershell小技巧之获取对象可变的特征
- Powershell实现从注册表获取用户配置脚本分享
- PowerShell小技巧之获取Windows系统密码Hash
- 如何获取空对象的类型
- 获取分区类型(U盘、硬盘)