使用PowerShell处理CSV时,如何忽略不存在的数据并继续执行?
解决PowerShell执行AD组添加时遇错误中断的问题
问题分析
你的脚本存在两个关键问题:
- 循环变量使用错误:
Foreach($EmployeeID in $Snumber)中,你引用了整个CSV数组的$Snumber.EmployeeID,这会导致每次循环都把所有员工ID传给Add-ADGroupMember,而非当前循环的单个员工ID。 - 错误处理参数错误:你使用的
$ErrorAction = 'continue'是错误的,PowerShell全局错误偏好设置的变量名是$ErrorActionPreference,而非$ErrorAction;另外,也可以直接给目标cmdlet指定-ErrorAction参数来控制单条命令的错误行为。
修正后的脚本
方法1:给Add-ADGroupMember单独指定错误行为
这种方法更灵活,仅针对当前命令生效:
$Snumber = Import-Csv c:\temp\Snumber.csv Foreach($EmployeeID in $Snumber) { # 使用当前循环的员工ID,添加-ErrorAction Continue确保报错后继续执行 Add-ADGroupMember -Identity "Group" -Members $EmployeeID.EmployeeID -ErrorAction Continue }
方法2:设置全局错误偏好
如果希望整个脚本内所有命令都遇到错误后继续执行,可以设置全局变量:
# 设置全局错误行为为继续执行(会显示错误信息) $ErrorActionPreference = 'Continue' $Snumber = Import-Csv c:\temp\Snumber.csv Foreach($EmployeeID in $Snumber) { Add-ADGroupMember -Identity "Group" -Members $EmployeeID.EmployeeID }
说明
-ErrorAction Continue:命令执行出错时,会显示错误信息,但不会中断脚本,继续执行后续循环。- 如果你想完全隐藏错误信息,可以把
Continue换成SilentlyContinue,但仍会继续执行后续操作。
内容的提问来源于stack exchange,提问作者sdt789
相关产品推荐
相关产品推荐

