【发布时间】:2014-12-17 10:05:21
【问题描述】:
问候和节日快乐!
我希望这个问题没有在其他地方得到回答,因为我已经搜索了 Stack 和 Google 大约一个小时,但还没有看到可以准确回答我想要完成的问题的示例或帖子。
我创建了一个脚本来检查 WindowsUpdate 和 WindowsUpdate\AU 注册表项以及相关值是否正确数据配置。如果它们与所需的配置不一致,它会更正它们。我在家,所以下面的脚本并不是我在工作中创建它的方式(我以不同的方式获得了我的注册表项/值),但应该让您大致了解我想要做什么:
param($comp, [string]$location)
switch($location)
{
"EAST" {$WUServerDesConfig = "https://myeastmp.domain.com:8531"}
"WEST" {$WUServerDesConfig = "https://mywestmp.domain.com:8531"}
}
$WUServerActual = Invoke-Command -ComputerName $comp -scriptblock {(Get-ItemProperty -Path HKLM:\\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate).WUServer}
if($WUServerActual -ne $WUServerDesConfig)
{
Invoke-Command -ComputerName $comp -ScriptBlock {Set-ItemProperty -Path HKLM:\\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate -Name WUServer -Type String -Value $WUServerDesConfig}
}
这不行,看来背后的原因是不能将普通变量传递给Set-ItemProperty的-value参数(我相信它需要一个对象)。为什么会这样,我完全不知道,因为如果我只是用字符串本身替换变量,它就可以正常工作。然而,这种方法的问题在于,根据地区的不同,服务器会发生变化。
到目前为止,我认为自己对 PowerShell 的了解只有中级(尽管我发誓,我每天都在进步),因此对于如何最好地完成此任务的任何帮助或建议将不胜感激。谢谢!
【问题讨论】:
标签: windows powershell registry