【问题标题】:Foreach error handling in PowershellPowershell 中的 Foreach 错误处理
【发布时间】:2013-07-22 20:13:28
【问题描述】:

有没有办法在 foreach 循环中捕获和保存坏名?我有以下内容:

$CollectionName = "Import Test"
$PCName = Import-Csv "C:\Powershell\import_test.csv" 
foreach($computer in $PCName) {
Add-CMDeviceCollectionDirectMembershipRule -CollectionName $CollectionName -ResourceID $(Get-   CMDevice -Name $computer.computername).ResourceID
}

我想做的是,如果 csv 中有一个错误的名称,那么不要显示我目前得到的“无法验证参数”错误,而是将失败的名称输出到一个文本文件。

谢谢

【问题讨论】:

标签: powershell


【解决方案1】:

是的。将语句放入循环中的 try..catch 块中:

foreach($computer in $PCName) {
  try {
    Add-CMDeviceCollectionDirectMembershipRule ...
  } catch {
    "Bad name: $name" | Out-File 'C:\bad_names.txt' -Append
  }
}

如果错误是非终止错误(即显示错误消息,但未被try..catch 捕获),您可以通过在命令中添加-ErrorAction Stop 或设置@ 将其变为终止错误987654325@.

【讨论】:

  • 谢谢,完美。我读过关于 try catch 但之前没有使用过它们。
猜你喜欢
  • 1970-01-01
  • 2019-08-11
  • 2015-01-04
  • 2015-08-26
  • 1970-01-01
  • 2011-10-25
  • 2013-05-30
  • 2023-03-30
  • 2023-03-06
相关资源
最近更新 更多