我希望 PowerShell 在尝试选择不存在的属性时抛出错误,但我得到的是空列作为输出。例子:
$ErrorActionPreference=[System.Management.Automation.ActionPreference]::Stop;
Set-StrictMode -Version 'Latest'
Get-Process *ex* | Select-Object Id,ProcessName,xxx
Id ProcessName xxx
-- ----------- ---
9084 explorer
11404 procexp
我编写了一个通过 导入多个文本文件的脚本Import-Csv
,但是这些文件中的标题可能会更改,并且我最终会将空列加载到系统中。
编辑:这就是我检查标题是否匹配的方式:
$csv = Import-Csv -Delimiter ';' -Path $file.FullName
$FileHeaders = @(($csv | Get-Member -MemberType NoteProperty).Name)
if (Compare-Object $ProperHeaders $FileHeaders) {'err'} else {'ok'}
我知道这就是 PowerShell 的工作方式,但Set-StrictMode
正如@Matt 所提到的,文档对我来说确实有点误导。我只是希望Select-Object
有某种“-NoNewImplicitProps”或“-ReadOnlyPipeline”开关可以为我完成这项工作:)。感谢您的回答。