質問

仮想サーバのリサイクルビンからすべての内容を削除するPowerShellスクリプトを書き込む。何らかの理由で、Windows 2003 Recycle Binのパスを見つけることでエラーが発生し、すべてを削除するためにビンを見つけることができません。ここに誰かが私がこのコードスニペットで間違っていることについて私にいくつかのアドバイスを与えることができるかどうか疑問に思いました:

if($serverVersion.name -like '*2003*'){
$dir = "\\$server" + '\C$\recycled'
}
elseif($serverVersion.name -like '*2008*'){
$dir = "\\$server" + '\C$\$recycle.bin'
}

$recycleArray = @()
foreach ($item in get-childitem -path $dir){
    $recycleArray += $item
}

for ($i = 0; $i -le $recycleArray.length; $i++){
    $removal = $dir + "\" + $recycleArray[$i]
    remove-item $removal -force -recurse 
    }
.

R2K8ごみ箱からすべてを正しく削除することができますので、ごみ箱へのパスを見つけることができます。これは私が見るのが興味があるために私が受け取るエラーメッセージの写真です:

画像の入力ここで

また、好奇心のうち、このコードをすべて削減し、2003年と2008年の両方に2つの1つのライナーを作る方法はありますか?私がこれを書いた現在の方法は、PowerShellのコマンドレットを利用して、W2K3ごみ箱の何が問題なのかを考え出した後に改善したいと思います。

役に立ちましたか?

解決

問題は、IDOWS Server 2003 C:\ Recyclerではなく、この場所にあるリサイクルBINが見つかったため、JSUTはコードを変更し、機能する必要があります。

このコードを試して、問題を解決したかどうかを確認

if($serverVersion.name -like '*2003*'){
$dir = "\\$server" + '\C$\recycled'
}
elseif($serverVersion.name -like '*2008*'){
$dir = "\\$server" + '\C$\$recycle.bin'
}


foreach ($item in get-childitem -path $dir){
     remove-item $item.FullName -Force -Recurse
}
.

他のヒント

だから私はUNCパスを使用するのではなく、Invoke-CommandまたはLocal ScheduledタスクのようなPowerShellのリモコンを通して稼働しています。また、データをドライブにしてもフォルダが表示されるため、すべてまたは2003/2008スタイルのリサイクルビンのすべてのドライブを確認するだけです。これはあなたが探しているものだけでなく、あなたが目を払っているものに合わないかもしれないかもしれませんが、それは助けることができるかもしれません。

$local_drives = Get-WmiObject Win32_LogicalDisk | Where-Object {$_.DriveType -eq 3}
foreach ($drive in $local_drives)
{
    $drive_letter = $drive.DeviceID
    $recycle_bins_03 = $drive_letter + '\RECYCLER'
    if (Test-Path $recycle_bins_03)
    {
        Get-ChildItem $recycle_bins_03 -Force | Remove-Item -Force -Recurse
    }
    $recycle_bins_08 = $drive_letter + '\$RECYCLE.BIN'
    if (Test-Path $recycle_bins_08)
    {
        Get-ChildItem $recycle_bins_08 -Force | Remove-Item -Force -Recurse
    }
}
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top