私はNetAppにアクセスし、2つのコマンドを実行して結果をcsvファイルに出力し、そのcsvファイルを私に電子メールで送信する基本的なスクリプトを作成しています。最後に、ファイルを削除する必要があります。Powershell Remove-Itemスクリプト終了後のアイテムロックファイル
私が読んでいたことから学んだことは、前のステップが完了するまでpowershellが待ってから、送信後自動的にファイルを閉じるべきではないでしょうか? Send-MailMessageコマンドまでファイルを削除できます。次のコマンドはファイルを削除することで、エラーが生成されます。これは、スクリプト内の各行をハイライトして手動で実行し、コマンド間で数分間待機する場合にも発生します。これまでにファイルのロックを解除するには、Powershellを閉じるしかありませんでした。
Powershellにこの開いているファイルを強制的に削除させるにはどうすればいいですか?それを使用している他のプロセスはありません。私は電子メールを受け取りましたが、もはやファイルを保持することに興味がありません。私はこれを行うために第三者ツールを使用しないことを好むでしょう
私はファイルを削除しようとするとエラーが発生します。
deleteコマンド:
If (Test-Path $attachment){
Remove-Item $attachment -Force
}
エラー:
Remove-Item : Cannot remove item C:\perfstat\NcVol.csv: The process cannot access the file 'C:\perfstat\NcVol.csv' because it is being used by another process.
At line:1 char:1
+ Remove-Item $attachment -Force
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (C:\perfstat\NcVol.csv:FileInfo) [Remove-Item], IOException
+ FullyQualifiedErrorId : RemoveFileSystemItemIOError,Microsoft.PowerShell.Commands.RemoveItemCommand
その他のビット:
$attachment = "c:\perfstat\NcVol.csv"
# Get the stats from the NetApp
Get-NcVol | Export-Csv -LiteralPath $attachment -Force -NoTypeInformation -Verbose
Get-NcAggr | Export-Csv -LiteralPath $attachment -Force -NoTypeInformation -Verbose -Append
#Send the message
Send-MailMessage -To $emailTo -From $emailFrom -Subject $emailSubject -Body $emailBody -BodyAsHTML -Attachments $attachment -SmtpServer $emailSmtpServer
#Now delete the file