在不同体系结构上使用SWbemLocator进行异常处理

时间:2016-12-08 11:21:54

标签: powershell wmi

我在脚本中有以下位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位计算机来自行测试脚本,并且无法在线找到相关文档。

1 个答案:

答案 0 :(得分:1)

我告诉你如何继续它的逻辑。我已根据您的要求制作了剧本,并且我还在每行上添加了评论,供您理解和参考。根据

添加代码
hg

注意:如果您正在远程运行所有命令,请使用 scriptblock 调用命令将计算机名称作为参数传递。

希望它能帮助你理解逻辑。