次の PowerShell スクリプトをより汎用的にしようとしています。固定リストではなく、除外の配列を渡したいです。以下の部分的な解決策を除いて、これを行う方法がわかりません。
オリジナル
これは、ワイルドカード ファイルまたはフォルダーのリストを除く、パス内のすべてのファイルを取得します。
Get-ChildItem -Path "$sitePath" -Recurse | `
where {!$_.PSIsContainer } | `
Select -ExpandProperty FullName | `
Where {$_ -notlike "$sitePath\Custom\*"} | `
Where {$_ -notlike "$sitePath\Download\*"} | `
Where {$_ -notlike "$sitePath\Temp\*"} | `
Where {$_ -notlike "$sitePath\Portal\*"} | `
Where {$_ -notlike "$sitePath\web.config*"} | `
SELECT $_
部分的な解決
これは私が思いついた最高のものです。$excludeList というワイルドカードの配列を作成できますが、制限があり、少し遅くなります。
$excludeList = @("$sitePath\Custom\*",
"$sitePath\Download\*",
"$sitePath\Portal\*",
"$sitePath\web.config*")
Get-ChildItem -Path "$sitePath" -Recurse | `
where {!$_.PSIsContainer } | `
Select -ExpandProperty FullName | `
Where {$_ -notlike $excludeList[0]} | `
Where {$_ -notlike $excludeList[1]} | `
Where {$_ -notlike $excludeList[2]} | `
Where {$_ -notlike $excludeList[3]} | `
Where {$_ -notlike $excludeList[4]} | `
Where {$_ -notlike $excludeList[5]} | `
Where {$_ -notlike $excludeList[6]} | `
Where {$_ -notlike $excludeList[7]} | `
Where {$_ -notlike $excludeList[8]} | `
Where {$_ -notlike $excludeList[9]} | `
Where {$_ -notlike $excludeList[10]} | `
SELECT $_
配列を where 句に渡すより良い方法はありますか? 私が見つけたすべてのソリューションは、ワイルドカード以外の一致のみを許可します。
誰かが助けてくれることを願っています!