我在脚本中有以下位Powershell,需要运行许多计算机并添加注册表项。在x64计算机上,此密钥需要添加到注册表的32位和64位部分。
$objswbem = New-Object -ComObject "WbemScripting.SWbemNamedValueSet"
$objswbem.Add("__ProviderArchitecture", $Arch) | Out-null
$objswbem.Add("__RequiredArchitecture", $True) | Out-null
$ObjLocator = New-Object -ComObject "Wbemscripting.SWbemLocator"
$objServices = $objLocator.ConnectServer($Computer,"root\Default",$null,$null,$null,$null,$null,$objswbem)
$objReg = $objServices.Get("stdRegProv")
这将分别传递给它的值32和64.
我不确定的是当$Arch
设置为64时,在32位机器上会抛出什么异常,因为我需要处理这个并允许脚本继续而不运行64位操作,否则抛出例外。
我已使用无效数字(如128)进行测试,并在$objLocator.ConnectServer
处抛出无效数字异常。我只是不确定它是否会通过有效数字64的相同例外。
我无法访问32位计算机来自行测试脚本,并且无法在线找到相关文档。
答案 0 :(得分:1)
我告诉你如何继续它的逻辑。我已根据您的要求制作了剧本,并且我还在每行上添加了评论,供您理解和参考。根据
添加代码hg
注意:如果您正在远程运行所有命令,请使用 scriptblock 和调用命令将计算机名称作为参数传递。
希望它能帮助你理解逻辑。