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

运行脚本时在PowerShell中写入错误,powershell,Powershell,当我在除我之外的其他计算机上运行PowerShell脚本时(在其他计算机上并不总是发生这种情况),我得到一个错误,即“进程无法访问文件'C:\Temp\PMCS\u TicketLogs.Log,因为它正被另一个进程使用。”然后它返回WriteError和IOException if(Test-Path c:\temp\PMCS_Quick_Test_Ran.txt) { Remove-Item c:\temp\PMCS_Quick_Test_Ran.txt }

当我在除我之外的其他计算机上运行PowerShell脚本时(在其他计算机上并不总是发生这种情况),我得到一个错误,即“进程无法访问文件'C:\Temp\PMCS\u 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,但它返回该错误。有人能澄清为什么在这种特殊情况下它会返回错误吗?没有其他东西在使用该文件。谢谢。

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


如果您总是要记录到该文件,您可以用写输出来回送它,它将由成绩单自动记录。

示例不完整。我还应该放些什么作为参考?您的函数scriptblock从未关闭或调用过。我添加了一个示例。您在哪里调用
停止成绩单