0

Powershell内のターゲットディレクトリをスキャンしようとするとエラーが発生します。

私が使用しているコードは次のとおりです。

    $path = read-host 'Enter the target drive letter'

    $objects = get-childitem $path -force -recurse

基本的に私がやりたいのは、この一般的な検索を機能させて(ユーザー指定の場所をスキャンして)、ファイルタイプやサイズなどでファイルなどの特定のアイテムを検索できるようにすることです。ただし、これを実行すると、パスに「ドキュメントと設定」または「プログラムファイル」フォルダなどのスペースがドライブに含まれている場合はエラーが発生します。

このエラーが発生せずにこれを実行できる方法はありますか?私はPowerShellにまったく慣れておらず、これが他の場所で回答されているのを見ることができませんでしたが、これがすでに他の場所でカバーされている場合はお詫びします。

アップデート:

Powershellv2.0で実行されています。考えてみると、宇宙に関係していると思ったのは、エラーのように見えるのはこれらだけだからですが、メッセージ自体はそう言っています。

    Get-ChildItem : Access to the path 'C:\Documents and Settings' is denied. At
    C:\users\robert\desktop\v1.ps1:5 char:25 + $objects = get-childitem <<<<  $path
    - force -recurse + CategoryInfo : PermissionDenied: (C:\Documents and
    Settings:String) [Get-ChildItem], UnauthorizedAccessException +
    FullyQualifiedErrorId :
    DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand

これが誤解を招く可能性がある場合は申し訳ありませんが、無制限の実行ポリシーで管理者としてこれを実行しているので、権限は問題にならないはずですが、これが実際に原因である場合は、これをオーバーライドしてすべてをスキャンする方法がありますターゲットドライブ?

4

2 に答える 2

0

VistaまたはWindows7?ルートの[ドキュメントと設定]ジャンクションでつまずいただけであれば、問題ないかもしれません。ジャンクションはc:\ usersにリンクしており、循環検索や不完全な検索を防ぐために、gciはリンクをたどっていない可能性があります。これにつまずく別の方法は次のとおりです。

バニラコマンドで:

cd 'C:\documents and settings'
explorer .

Win7では、ポップアップエラーメッセージが表示されます。

Location is not available
C:\documents and settings is not accessible
Access is denied

エラーは発生せcd 'C:\documents and settings'ず、シェルはそのフォルダー内にプロンプ​​トを返します(リンクターゲット、c:\ usersとは対照的)。単一のコマンドを実行すると、explorer 'C:\documents and settings'エラーなしでマイドキュメントフォルダが起動します...しかし、私は逸脱します。

再帰検索を無限ループで実行したり、「ドキュメントと設定」とユーザーの間のフォルダをスキップしたりすることは望ましくありません。たぶんget-childItemはこれをもっと良い方法で処理するはずです、dunno。

一方、この方法でジャンクションポイントを除外できます。この方法で大規模な再帰検索をテストしたことはありませんが、実行時間が長くなる可能性があります。

gci "c:\" -force | where {($_.attributes.toString() -like "*ReparsePoint*") -eq $false}

$trueと交換しない限り、結果には「ドキュメントと設定」は含まれません$false

于 2013-02-14T14:18:13.963 に答える
0

使用: (追加の二重引用符を参照)

$objects = get-childitem "$path" -force -recurse
于 2013-02-13T13:09:35.197 に答える