2016-12-13 4 views
0

ライナーはサーバーからリモートコンピュータに正常に動作します。私は1本のライナーを持ってForEachループに変換したい。私は自分の環境内のすべてのコンピュータをループしたい。Powershellネットワークと共有フォルダ内のコンピュータとカウントファイルの一覧をループします

ワンライナー:

Write-output (Get-ChildItem '\\mycomputer\C$\Program Files\OSC\LogGen\LOGS').Count 

のForEachの試み(動作しない)foreachのコンピュータのリストをループし、リスト内の各コンピュータのカウント結果を返します。

$computerlist = gc "D:\computerlist.txt" 

ForEach ($host in $computerlist) { 
Write-Output (Get-ChildItem "\\$host\C$\Program Files\LOGS").Count 
} 
+1

※絶対に役に立たない問題の説明です。どのようにして*働かないのですか?あなたは間違った結果を得ますか?間違いはありますか?もしそうなら、**正確なエラーメッセージは何ですか?あなたは*働かない*が何を意味しているかを知っています。もしあなたが誰かにあなたを助けてもらいたいのであれば、その情報を共有する必要があります。私たちはあなたの心を読んだり、ここからあなたの画面を見ることはできません。 –

答えて

4

psドライブを調べてみてください。本当にきちんとしていて、今どこでも使用しています。

New-PSDrive -Name U -PSProvider FileSystem -Root "\\$PC\C$" 

これにより、ネットワークドライブと同様に対話できるU:という新しいドライブが作成されます。主な違いは、このドライブはスクリプトのスコープ内にのみ存在することです。ループ内にドライブを作成する場合は、ドライブを閉じて次の繰り返しのために文字を解放することが重要です。

ForEach ($PC in $computerlist) { 
    New-PSDrive -Name U -PSProvider FileSystem -Root "\\$PC\C$" 
    Write-Output (Get-ChildItem "U:\Program Files\LOGS").Count 
    Remove-PSDrive U -force 
} 
+1

$ hostを$ varに変更する必要がありました。エラーが発生しました。ホストは制限付きの変数です。 – bdavisson

関連する問題