我正在尝试创建一个Powershell脚本,该脚本可以显示“Test”(Screenshot1)中所有注册表项的列表。 每个Key都有一个StringValue“Version”。我需要知道每个人的价值。 输出应该是这样的:
Sub1版本:112
Sub2版本:112
Bus3版本:111
我还需要知道每个键设置中“服务器”的值。 (Screenshot2) 它应该看起来像这样:
Sub1版本:112服务器:2012
Sub2版本:112服务器:2008
Bus3版本:111服务器:2012
我试图通过使用“get-childitem”和“get-itemproperty”来实现它,但由于缺乏经验而最终失败了。我不明白如何让它工作,以显示所需的输出。有没有人知道如何做到这一点?
答案 0 :(得分:1)
这是一个不完全回答您问题的示例脚本。但它显示了如何访问注册表项和值。
function ShowDotNetVersion
{
# http://msdn.microsoft.com/en-us/library/hh925568(v=vs.110).aspx
$p = Get-ItemProperty "HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\" -Name Release -ErrorAction SilentlyContinue
if ($p -eq $null) { $rc = "UNKN" }
else { $rc = $p.Release.ToString() }
if ($rc -eq "378389") { $rc = ".NET 4.5" }
if ($rc -eq "378675") { $rc = ".NET 4.5.1/Windows 8.1" }
if ($rc -eq "378758") { $rc = ".NET 4.5.1" }
if ($rc -eq "381023") { $rc = ".NET 4.5.1/Windows 10/9860" }
if ($rc -eq "381029") { $rc = ".NET 4.5.1/Windows 10/9896" }
if ($rc -eq "394254") { $rc = ".NET 4.6/Windows 10" }
Write-Host ".NET framework $rc is installed"
$p = (Get-ItemProperty "HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\" -Name Version -ErrorAction SilentlyContinue).Version.ToString()
Write-Host ".Net framework version is $($p)"
}
这是我的powershell启动脚本的一部分,所以我每天多次运行它。也许它可以激励你自己回答你自己的问题。
答案 1 :(得分:0)
这是我的解决方案
$file = "c:\temp\RegistryValues.txt"
$items = Get-Item "HKLM:\SOFTWARE\WOW6432Node\Test\*"
$items2 = $items | select -ExpandProperty name
$items2 | % {
$i = $(($_).split("\")[-1])
$j = $(Get-ItemPropertyValue "Registry::$_" -Name 'version')
$k = $(Get-ItemPropertyValue "Registry::$_\Setting" -Name 'Server')
"$i Version: $j Setting: $k" | add-content $file
}