0

私が取り組んでいるスクリプトは、一時フォルダー (C ディスク内) を削除し、一時フォルダー内のすべてを削除してから、新しい一時フォルダーを作成することを目的としています。すべてを削除するスクリプトは既に作成されていますが、Powershell で新しい一時フォルダーを作成する方法がわかりません。Powershell で新しい一時フォルダーを作成する方法を誰かが知っているかどうか疑問に思っていました。

#remove all temporary files
if($serverVersion.name -like "*2003*"){
    $dir = "\\$server" + '\C$\temp'
}
elseif($serverVersion.name -like "*2008*"){
    $dir = "\\$server" + '\C$\Windows\Temp'
    }

$tempArray = @()
foreach ($item in get-childitem -path $dir){
    if ($item.name -like "*.tmp"){
        $tempArray = $tempArray + $item
        }
    }

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

一時フォルダーも正しく削除していますか?また、新しい一時フォルダーを作成するにはどうすればよいですか?

編集:人々が提案したことに基づいてコードを更新しました。これが望ましい効果をもたらすかどうか、さらにこれを削減する方法があるかどうか疑問に思っていました:

if($serverVersion.name -like "*2003*"){
    $dir = "\\$server" + '\C$\temp'
    remove-item $dir -force -recurse
    new-item -path "\\$server" + '\C$\Windows\temp' -Type Directory
}
elseif($serverVersion.name -like "*2008*"){
    $dir = "\\$server" + '\C$\Windows\Temp'
    remove-item $dir -force -recurse
    New-Item -Path "\\$server" + '\C$\Windows\Temp' -Type Directory 
    }
4

2 に答える 2

1

New-Itemコマンドレットを使用してフォルダーを作成します。

New-Item -Path "\\$server\admin$\Temp" -Type Directory 

「md」エイリアスを使用することもできます (mkdir 関数を指します)。

md "\\$server\admin$\Temp" -Force

アップデート:

これが私がすることです:ディレクトリを削除します。$? を確認してください。変数 (最後のコマンドが成功した場合は $true を返します)、コマンドが正常に完了しなかった場合は、Temp フォルダーを作成します。それ以外の場合は、エラーが発生し、Temp dir がまだ存在している必要があります。

Remove-Item  -Path "\\$server\admin$\Temp" -Force -Recurse

if($?)
{
    New-Item -Path "\\$server\admin$\Temp" -Type Directory 
}

ps Force スイッチを New-Item (または 'md') に追加して、前のコマンドの結果に関係なくフォルダーを作成することもできます。

于 2012-07-23T19:13:34.960 に答える
1

再帰的なremove-itemを使用して一時フォルダーを単純に削除してみませんか

# Remove recursively
Remove-Item  -Path "\\$server\admin$\Temp" -Force -Recurse
# Create another one
New-Item -Path "\\$server\admin$\Temp" -Type Directory 
于 2012-07-23T19:54:39.763 に答える