我是powershell的新手,我试图通过try/catch语句添加错误处理,但它们似乎并没有真正捕获错误.这是powershell v2 CP3.
$objComputer = $objResult.Properties;
$strComputerName = $objComputer.name
write-host "Checking machine: " $strComputerName
try
{
$colItems = get-wmiobject -class "Win32_PhysicalMemory" -namespace "root\CIMV2" -computername $strComputerName -Credential $credentials
foreach ($objItem in $colItems)
{
write-host "Bank Label: " $objItem.BankLabel
write-host "Capacity: " ($objItem.Capacity / 1024 / 1024)
write-host "Caption: " $objItem.Caption
write-host "Creation Class Name: " $objItem.CreationClassName
write-host
}
}
Catch
{
write-host "Failed to get data from machine (Error:" $_.Exception.Message ")"
write-host
}
finally
{ }
Run Code Online (Sandbox Code Playgroud)
当它无法联系特定的机器时,我在控制台中得到它,而不是我的干净捕获消息:
Get-WmiObject : The RPC …
这个问题有两个部分。
Run Code Online (Sandbox Code Playgroud)$password = ConvertTo-SecureString -String "password" -AsPlainText -Force $op = Get-LocalUser | Where-Object {$_.Name -eq "testuser1"} if ( -not $op) { New-LocalUser testuser1 -Password $password | Out-Null }
我在我的设置上测试了这个,它在大多数情况下都可以正常工作而不会抛出任何异常。有没有更好、更快的方法来检查用户是否存在?另外,我使用的脚本是否万无一失,即使用ErrorAction或使用try....catch处理它会更好吗?
在继续创建它们之前,我将使用此脚本检查多个用户帐户。
情况1
案例二
我知道Out-String是输出差异背后的原因,但我希望输出不仅仅是案例 1 中的testuser1。
我是 Powershell 的新手,所以有人可以帮助我理解为什么输出会有所不同吗?
powershell ×2