相关疑难解决方法(0)

Try/catch似乎没有效果

我是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 …

powershell

68
推荐指数
5
解决办法
9万
查看次数

使用 Powershell 检查本地用户帐户/组是否存在

这个问题有两个部分。

  1. 我想在继续创建之前检查本地用户是否存在。到目前为止,我已经想出了一个简单的脚本来检查本地用户是否存在。这是在我继续创建用户之前检查用户是否存在的脚本。
$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
 }
Run Code Online (Sandbox Code Playgroud)

我在我的设置上测试了这个,它在大多数情况下都可以正常工作而不会抛出任何异常。有没有更好、更快的方法来检查用户是否存在?另外,我使用的脚本是否万无一失,即使用ErrorAction或使用try....catch处理它会更好吗?

在继续创建它们之前,我将使用此脚本检查多个用户帐户。

  1. 为什么 $op 在以下情况下不同?

情况1

在此处输入图片说明

案例二

在此处输入图片说明

我知道Out-String是输出差异背后的原因,但我希望输出不仅仅是案例 1 中的testuser1

我是 Powershell 的新手,所以有人可以帮助我理解为什么输出会有所不同吗?

powershell

5
推荐指数
3
解决办法
2万
查看次数

标签 统计

powershell ×2