【问题标题】:Write Error in PowerShell when running script运行脚本时在 PowerShell 中写入错误
【发布时间】:2016-02-12 18:16:53
【问题描述】:

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

【问题讨论】:

  • 样本不完整。
  • 还有什么要参考的?
  • 你的函数脚本块永远不会关闭或调用
  • 我添加了一个例子。
  • 你在哪里打电话给Stop-Transcript

标签: powershell


【解决方案1】:

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

如果你总是要记录到那个文件,你可以用 Write-Output 代替它,它会被脚本自动记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多