运行脚本时在PowerShell中写入错误

时间:2016-02-11 18:13:56

标签: powershell

当我在除了我的其他计算机上运行我的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,但它返回该错误。任何人都可以澄清为什么它会在这种特殊情况下返回错误?没有其他人在使用该文件。感谢。

1 个答案:

答案 0 :(得分:0)

您的问题是您告诉PowerShell将所有内容记录到您的日志文件中,因此它会将其打开以供阅读,但之后您尝试将“运行上次重新启动检查”写入同一文件,这当然会失败,因为控制台已将其锁定。

如果您总是要记录到该文件,您可以使用Write-Output回显它,它将由记录自动记录。