すべての PowerShell プラットフォームで実行されるコードを記述したいと考えています。\
次のコードは、Windows では/
パス区切り記号を使用し、Linux ではパス区切り記号を使用して出力を生成します。
Get-ChildItem -File -Recurse | ForEach-Object { $_.FullName }
obj
ディレクトリの下にあるファイルを除外したい。ディレクトリの数と深さobj
は不明です。これを行う 1 つの方法は、次のようなものを使用してそれらを除外することです。ただし、Linux ではパス セパレータが異なるため、これは機能しません。
Get-ChildItem -File -Recurse |
Where-Object { -not ($_.FullName -like '*\obj\*' |
ForEach-Object { $_.FullName }
正規表現パターンを使用するとうまくいくように見えますが、これを行うためのより明確な方法があるかどうか知りたいです。これは厄介だと思います。それだけでなく、この\\
文字は Linux ファイル名の一部として有効であり、このコードに脆弱性が存在する可能性があります。
Get-ChildItem -Recurse |
Where-Object { -not ( $_.FullName -like "*[/\]obj[/\]*") } |
ForEach-Object { $_.FullName }