如何修复PowerShell哈希字面量不允许空键错误并从CSV读取用户ID
错误原因
你触发报错的核心问题是误用了ForEach-Object的-Property参数,且在写哈希表时使用了$userId作为键(带$符号的变量作为哈希表键时如果变量为空就会触发空键报错),同时你也没有正确把CSV里的所有ID收集为数组传入接口。
修复后的完整代码
$Global:userPath = "C:\AuditLogSearch\Reference\User.csv" function Log-Search { # 直接读取CSV提取所有Id列生成数组,和你硬编码的数组结构完全一致 $userId = @(Import-Csv $userPath).Id # 若$sessionID是全局定义的,此处可改为$Global:sessionID避免作用域问题 Search-UnifiedAuditLog -SessionId $sessionID -SessionCommand ReturnLargeSet -UserIds $userId }
补充说明
- 如果你的CSV文件存在空行或者Id列为空的记录,可以加过滤逻辑避免传空值:
$userId = @(Import-Csv $userPath | Where-Object {$_.Id -notmatch '^\s*$'}).Id - 如果你需要保留循环逻辑做额外处理,正确的
ForEach-Object写法如下:$userId = Import-Csv $userPath | ForEach-Object { $_.Id }
内容的提问来源于stack exchange,提问作者ziico
相关产品推荐
相关产品推荐

