powershell之Powershell 中的 Foreach 错误处理

Demo 阅读:39 2024-09-07 23:24:14 评论:0

有没有办法在 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 中有一个错误的名称,那么不要显示我目前得到的“无法验证参数”错误,而是将失败的名称输出到一个文本文件。

谢谢

请您参考如下方法:

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

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

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


标签:Shell
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号