2017-07-11 9 views
0

私は、PDQ展開から最初に作成されたすべてのADコンピュータから管理者の名前でC:\ Usersフォルダを削除するスクリプトを作成しようとしています。実行しようとすると、ファイルパスが見つからないというエラーが表示されます。検索結果には長いスクリプトがありましたが、私の現在のスクリプトは数行しかありません。できるだけ軽量にして、性能が大きく低下しないようにします。何か不足していますか?以下のコード。ADコンピュータ上のユーザーのフォルダを削除するPowerShellスクリプト

$先= 'C:\ Users \ユーザーフォルダ名'

のGet-ChildItemコマンドレット$先|同様のForEach-Objectに{削除-項目-Force -recurse}

+0

これはローカルコンピュータのみを参照します。これをリモートコンピュータでどのように実行する予定ですか?また、2行目は 'Remove-Item $ Destination -Force -Recurse'でもかまいません。 – TheMadTechnician

+0

これは、個別の分離されたPDQデプロイメントファイルに格納され、ローカルで少しのテストが行​​われた後にリモートPCに実行されます。 – Squilly

+1

これを行うためのグループポリシー機能を使用しない理由はありますか? –

答えて

0

何かがありますどのように多くのに応じて、長い時間がかかる可能性があり、あなたが権限を持っていると仮定しますが、ワイルドカードフィルタでは、Get-ADComputerを実行している仕事ができる

$allComputers = Get-ADComputer -filter "Name -like `"*`"" | Select Name 
$Destination = "C:\Users\folder" 
Foreach($computer in $allComputers.Name) 
{ 
    Invoke-Command -computername $computer -ScriptBlock { 
     param($Destination) 
     if(Test-Path ($Destination)){ 
      Write-Host "Removing $Destination from $computer" 
      Remove-Item $Destination -Force -Recurse 
     } 
    } -ArgumentList $Destination 
} 
+0

ありがとう!これはローカルでテストするために変更可能ですか?ワイルドカードを編集して、代わりに単一のコンピュータの名前を含めると想像していますか? – Squilly

+0

はい、または単純に$ allComputers = @( "server01"、 "server02"、 "etc")を配列として使用すると、foreachでは$ allComputers.Nameではなく$ allComputersになります – davdav

関連する問題