Я хочу, чтобы 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
, но заголовкам в этих файлах могут измениться, и я в конечном итоге с пустой колонной загружаются в систему.
EDIT: Это, как я проверяю, если заголовки совпадают:
$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», который выполнил бы мою работу :). Спасибо за ответы.
Не думайте, что вы можете это сделать, потому что именно так спроектирована Powershell. Если бы это стало возможным, это нарушило бы '$ newobj = '' | Select-Object prop1, prop2' – Kiran