存在しないプロパティを選択しようとすると 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」スイッチがあればいいのにと思います:) 。答えてくれてありがとう。