War*_* P 4 registry powershell
在Win2008R2上的PowerShell 2.0中,如果我想从注册表项获得相同的输出,"REG QUERY"将以可读的格式提供给我,使用来自特定注册表项的值,如下所示:
reg query hkcu\Software\Microsoft\CharMap
HKEY_CURRENT_USER\Software\Microsoft\CharMap
Advanced REG_DWORD 0x0
CodePage REG_SZ Unicode
Font REG_SZ Arial
Run Code Online (Sandbox Code Playgroud)
我如何使用PowerShell做到这一点?PowerShell的行为再一次使我神秘.
Get-ItemProperty示例:
Get-ItemProperty HKCU:\Software\Microsoft\CharMap
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\Microsoft\CharMap
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\Microsoft
PSChildName : CharMap
PSDrive : HKCU
PSProvider : Microsoft.PowerShell.Core\Registry
Advanced : 0
CodePage : Unicode
Font : Arial
Run Code Online (Sandbox Code Playgroud)
在我上面的设计示例中,我希望看到"高级","CodePage"和"字体",但不是任何PowerShell元数据(以PS开头的名称).遗憾地过滤名称"PS"对我来说不起作用,因为我并不真正尝试阅读MS Windows字符映射设置,我只是选择它们作为一个注册表项,可能每个人都有Windows,所以每个人都可以看到完全如此不同于使用PowerShell的经验是看一下注册表,相比之下说该REG.EXE程序.有理由说任何人可能想要从注册表项中获取注册表值而不获取任何元数据,并且任何在PowerShell中编写工具的人都可能想要执行这个简单的任务.
我希望输出类似REG QUERY但仍然是原生PowerShell格式,而不仅仅是扁平化为文本.我用谷歌搜索并搜索到了,似乎无法解决这个问题.
我希望能够做到这一点:
$all = GetRealRegistryKeysFrom( HKCU:\Software\Microsoft\CharMap )
for ($item in $all) { ... }
Run Code Online (Sandbox Code Playgroud)
更新使用下面的功能,效果很好....
例 Get-RegistryKeyPropertiesAndValues -path HKCU:\Software\.....
这是一个诀窍:
Get-ItemProperty HKCU:\Software\Microsoft\CharMap | out-string -stream | ? { $_ -NOTMATCH '^ps.+' }
Run Code Online (Sandbox Code Playgroud)
问题是当房产开始时PS.使用此代码,您可以详细说明以下内容:
PSPath
PSParentPath
PSChildName
PSDrive
PSProvider
Run Code Online (Sandbox Code Playgroud)
......在where子句中一个接一个.或者只是尝试使用
get-item hkcu\Software\Microsoft\CharMap
Run Code Online (Sandbox Code Playgroud)
更新转载的脚本:
Function Get-RegistryKeyPropertiesAndValues
{
<#
Get-RegistryKeyPropertiesAndValues -path 'HKCU:\Volatile Environment'
Http://www.ScriptingGuys.com/blog
#>
Param(
[Parameter(Mandatory=$true)]
[string]$path)
Push-Location
Set-Location -Path $path
Get-Item . |
Select-Object -ExpandProperty property |
ForEach-Object {
New-Object psobject -Property @{"property"=$_;
"Value" = (Get-ItemProperty -Path . -Name $_).$_}}
Pop-Location
} #end function Get-RegistryKeyPropertiesAndValues
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13406 次 |
| 最近记录: |