当我在除了我的其他计算机上运行我的PowerShell脚本(它并不总是发生在其他计算机上)时,我收到一个错误,即#34;该进程无法访问该文件&#C; C: \ Temp \ PMCS_TicketLogs.Log因为它正被另一个进程使用。"然后它返回WriteError和IOException。
if(Test-Path c:\temp\PMCS_Quick_Test_Ran.txt)
{
Remove-Item c:\temp\PMCS_Quick_Test_Ran.txt
}
Function global:Quick_Test_Run{
Start-Transcript -Path C:\Temp\PMCS_TicketLogs.Log
out-file c:\temp\PMCS_Quick_Test_Ran.txt
Function global:LastReboot_Run {
$logstring = "Running Last Reboot Check"
Add-content C:\Temp\PMCS_TicketLogs.Log -value $logstring
$os = Get-WmiObject win32_operatingsystem
$uptime = (Get-Date) - ($os.ConvertToDateTime($os.lastbootuptime))
$Display = "" + $Uptime.Days + " days, " + $Uptime.Hours + " hours, " + $Uptime.Minutes + " minutes"
# Write-Output $Display
$WPFRebootField.Text="$Display"
if([dateTime]$FiveDaysAgo = (get-date).addDays(-5))
{
$WPFRebootField.Background = 'red'
}
if([datetime]$TwoDaysAgo = (get-date).adddays(-2))
{
$WPFRebootField.Background = 'green'
}
$logstring = "Date Since Last Reboot = " + $Display
Add-content C:\Temp\PMCS_TicketLogs.Log -value $logstring
$logstring = "Last Reboot Check Finished"
Add-content C:\Temp\PMCS_TicketLogs.Log -value $logstring
}
LastReboot_Run
当代码运行时,它应该生成文件,并且当每个部分完成时,它将结果输出到PMCS_TicketLogs.Log,但它返回该错误。任何人都可以澄清为什么它会在这种特殊情况下返回错误?没有其他人在使用该文件。感谢。
答案 0 :(得分:0)
您的问题是您告诉PowerShell将所有内容记录到您的日志文件中,因此它会将其打开以供阅读,但之后您尝试将“运行上次重新启动检查”写入同一文件,这当然会失败,因为控制台已将其锁定。
如果您总是要记录到该文件,您可以使用Write-Output回显它,它将由记录自动记录。