get-wmiコマンドレットを使用してプロファイルを削除します。コードがループ内の各削除コマンドを通過すると、どのプロファイルが削除されているかを表示したいと思います。 windows powershellは、各ループの実行中に現在の変数をパイプラインに表示します。
$total = 0
$count = 1
foreach ($localpath in $dispaths)
{$total = $total + 1}
Foreach ($localpath in $dispaths)
{cls
write-host "Deleting Profile: $_.localpath ($count of $total)"
$count = $count + 1
get-wmiobject -class win32_userprofile -computername $cname | where
{$_.localpath -eq $localpath.localpath} | foreach {$_.Delete()}
}
が、カウントが正しく動作しながら、表示行は文字通り示しています:私はこれを試してみました./localpath(135の1)
の代わりに、どんな現在の文字列を表示:プロファイルの削除
localpath変数の内部はです。 。それは変数の文字列があるべき何も表示さdoesntの(135の1)
:
削除プロフィール:$ ._ localPathにからそれはちょうどこのような何かを表示しました。どこが間違っていますか?
もう一度BenHさんに、これがどのように表示されるか教えてください。 PowerShellスクリプトを最初から学んだことはありません。特定の問題を解決するために必要なだけなので、その背後にある多くの論理的な構文や構文が私の経験から欠落しています。 変更を加えてスクリプトを実行すると、それ以上のローカルパスが得られます。各行のローカルパスセルではなく、実行ごとに行全体が表示されます。これは次のようになります。 プロフィールの削除:@ {samaccountanme = rbobo; enabled = FALSE; Localpath = C:\ Users \ rbobo} .localpath(19中の135) 何か考えてみませんか? – soltkr
@soltkrこの問題を解決するために、回答が更新されました。これは、変数を展開するときに引用符の内側にあるため、 '.property'を文字列として追加して変数を展開するだけです。 '$ variable.property'を部分式' $() 'の中に入れて、プロパティを評価します。 – BenH
あなたは間違いなしです。新しいコードが完璧に機能しました! – soltkr