2016-07-05 24 views
0

私は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 

答えて

0

私は、このファイルがどのように大規模な知らないが、私はそれと思うかもしれ電子メールが送信されている間、少し時間が必要です。

ちょうどあなたがメールを送信した後、待機を統合しよう:

Start-Sleep -s 10 

Start-Sleep -s(for seconds) <seconds> 

これが動作するかどうか私に教えてください。

関連する問題