forループでGetChildItemを使用してファイルシステムを再帰的に実行するPowerShellスクリプトがあります。それが移動すると、ACLの問題を解決しています(主に誰かがBUILTIN \ Administratorsアカウントをブロックした場所)...しかし、そこには[System.UnauthorizedAccessException]があるときのように、それ自体では処理できないものがあります明示的な「拒否」ACEです。PowerShellはGetChildItemでエラーをトラップしてループを継続できますか?
コードの行は次のようになります。
foreach($file in Get-ChildItem $dirRoot -Recurse -ErrorAction Continue) {
...
}
それは読むことができない道につまずくと、それはこの例外を与える:
は、Get-ChildItemコマンドレットを:パスへのアクセスを'C:\ TEMP \ denied'は拒否されました。 52文字:31 + foreachの($のGet-ChildItemコマンドレット<でファイル< < < $ dirRoot -Recurse -ErrorAction 続行){ + CategoryInfo:PermissionDenied: (C:\ tempに\拒否 修正-ACLs.ps1で:文字列)[ゲット-ChildItemコマンド]、無断にAccessException + FullyQualifiedErrorId: DirUnauthorizedAccessError、Microsoft.PowerShell.Commands.GetChildItemCommand
私は(私はACLを修復することができるように/キャッチまたはトラップエラーを試してみたいですつまり、「拒否」を取り除く)、そして最も重要なのは、私のプラックを失うことなくループを続けることですe。私のための任意の提案?
使用しているコードを与えてください – manojlds