有没有办法在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中有一个错误的名称,那么我只会将失败的名称输出到文本文件,而不是显示我当前得到的“无法验证参数”错误。
由于
答案 0 :(得分:6)
是。将语句放在循环中的try..catch
块中:
foreach($computer in $PCName) {
try {
Add-CMDeviceCollectionDirectMembershipRule ...
} catch {
"Bad name: $name" | Out-File 'C:\bad_names.txt' -Append
}
}
如果错误是非终止错误(即显示错误消息,但未被try..catch
捕获),则可以通过向命令添加-ErrorAction Stop
将其转换为终止错误或者设置$ErrorActionPreference = "Stop"
。