2017-03-07 67 views
0

を使用してだから私は、私は私が何か愚かなシンプルをしないのですと想像などのPowershellに新たなんです。PowerShellのプログレスバーのget-adcomputer

x、y、zプロパティを持つActiveDirectoryコンピュータをすべて表示するには、以下に示すスクリプトの所要時間を表示するプログレスバーを表示しようとしています。

私はあなたがループを必要とするが、私は実際にそれを達成していた場合、私はわからないプログレスバーを取得することを理解しています。何も、私はあなたが進捗状況を表示する-PercentComplete $Progressが必要

$computerList = Get-ADComputer -Filter * -Property * | Select-Object Name,OperatingSystem 
foreach ($computer in $computerList) { 
    Write-Progress -Activity 'Processing computers' -CurrentOperation $computer 
    Start-Sleep -Milliseconds 200 
} 
+0

進捗状況については、PercentCompleteパラメータも必要です。それ以外の場合は、ステータスメッセージだけが表示されます。 'man write-progress -ex'を見てください。 – Joey

答えて

2

他の人が指摘しているPERCENTCOMPLETEパラメータが欠落以外にも、あなたの最初の行は、完成する予定です。だからあなたのWrite-Progressはあなたのsleepの時間の長さを表示するだけです。最初の行からそれらのプロパティを表示するのにかかる時間はかかりません。あなたの計画はSleepの代わりにそのデータで何かをしている場合

それは意味をなさないと思います。それ以外の場合は、進行状況の追跡を開始する前に、処理はすでに完了しています。

コマンドは、その後、あなたがそれを実行していますとパイプラインでそのコマンドの進行状況を追跡したい場合Measure-Command

Measure-Command {Get-ADComputer -filter * -Property * | select Name,OperatingSystem} 

を使用したい、その後所要時間を知りたいと思った場合、あなたがしようとしていますカップルの問題にぶつかる。最初に、サーバーにはオブジェクトの数が表示されません。これはあなたのコマンドはかなり長い時間がかかる作るオーバーヘッドの多くを追加するためにやっているやって

$i = 0 
Get-ADComputer -filter * -Property * | 
    % { 
     $i++ 
     Write-Progress -Activity 'Processing computers' -PercentComplete ($i/$PreviousCount*100) 
    } | 
    Select-Object Name,OperatingSystem 

第二:しかし、あなたが前にそれを実行し、返された、あなたはこのような何かを行うことができますどのように多くのオブジェクトを知っていたと言います。

もう一つの勧告は、あなたがSelect-Objectですべてのものを濾過し、操作にかかる時間を気にしているので、のみ2つのプロパティを要求します。

+0

こんにちは、ありがとう、それは素晴らしい投稿と理解しやすいです。どうすればいいですか? – cmoneyg

+0

@cmoneyg答えがあなたのために働いた場合は、回答を受け入れることをお勧めします。 – BenH

2

コマンドを実行したときに起こるようですありません!ここで

はあなたの例で実装したものです:あなたforeachループが始まる前に

$computerList = Get-ADComputer -Filter * -Property * | Select-Object Name,OperatingSystem 
$i=0 
foreach ($computer in $computerList) { 
    $Progress = $i/$computerList.count*100 
    Write-Progress -Activity 'Processing computers' -CurrentOperation $computer -PercentComplete $Progress 
    Start-Sleep -Milliseconds 200;$i++ 
} 
+0

に次のエラーが表示されます。Get-ADComputer:サーバーが次のエラーを返しました:無効な列挙コンテキスト。ラインで :1つの文字:17 + $ COMPUTERLIST =のGet-ADComputer -Filter * -Property * |選択し、オブジェクト名、Operat ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo :NotSpecified:(:) [Get-ADComputer]、ADException + FullyQualifiedErrorId:サーバーが次のエラーを返しました:無効な列挙型コンテキスト、Microsoft.ActiveDirectory.Management.Commands.GetADComputer – cmoneyg

+2

@cmoneygこのエラーは 'foreach 'ループ。 'Get-ADComputer'コマンドのトラブルシューティングを行う必要があります。 – sodawillow

+0

あなたは正しい@sodawillowはここに良い記事です。 https://social.technet.microsoft.com/wiki/contents/articles/32418.active-directory-troubleshooting-server-has-returned-the-following-error-invalid-enumeration-context。aspx – cmoneyg

関連する問題