次のPowershellスクリプトを検討してください。このスクリプトは、名前に「og」が含まれるC:\内のフォルダーを検索します。
PS C:\>(ls |%{$ _。Name} |?{$ _。Contains( "og")}) PerfLogs プログラムファイル setup.log
ここで、検索を絞り込んで1つのアイテムのみを取得します。
PS C:\>(ls |%{$ _。Name} |?{$ _。Contains( "Prog")}) プログラムファイル
奇妙なことは、最初の操作が配列を生成するのに対し、2番目の操作(IMHOは意味的に同じ操作なので、同じタイプの結果を生成するはずです)がstringを生成することです。これは、次の結果で確認できます。
PS C:\>(ls |%{$ _。Name} |?{$ _。Contains( "og")})。Length 3 PS C:\>(ls |%{$ _。Name} |?{$ _。Contains( "Prog")})。Length 13
これは、「Prog」に一致するフォルダよりも「og」に一致するフォルダが少ないため、非常にいらいらする可能性があります。
明らかに、PowerShellは暗黙的に単一項目配列を単一オブジェクトに「アンボックス化」し、長さ1の配列を取得することはありません。 m配列を扱うかどうか。
これを防ぐにはどうすればよいですか?これにどう対処しますか?
$_.Contains
、その後、%{,,$_.Name}
作品...