次のことを行うpowershellスクリプトを作成しようとしています:
- リモート マシン (コンピュータのテキスト リスト) にフォルダが存在するかどうかを確認し、存在する場合は削除します。
- リモート共有から同じマシンにフォルダーをコピーし、エラーがあればエラー ログ ファイルに出力し、そうでなければ成功ログ ファイルに出力します。
検索しましたが、一見単純な問題の解決策を見つけることができませんでした。以下のコードを参照してください。
$computers=Get-Content C:\pcs.txt
$source="\\RemoteShare\RemoteFolder"
$dest="C$\Program Files\Destination"
foreach ($computer in $computers) {
If (Test-Path \\$computer\$dest){
Remove-Item \\$computer\$dest -Force -Recurse
}
Copy-Item $source \\$computer\$dest -recurse -force -erroraction silentlycontinue
If (!$error)
{Write-Output $computer | out-file -append -filepath "C:\logs\success.log"}
Else
{Write-Output $computer | out-file -append -filepath "C:\logs\failed.log"}
}
現在、スクリプトが実行されると、失敗したかどうかに関係なく、すべてが failed.log ファイルに記録されます。
forループの実行中に、powershellでエラーを適切に処理するにはどうすればよいですか?