准备使用一些我已经写了一段时间但从未解决过的特定问题的脚本。希望找到解决方案。
该项目将在一个周末内将Win10 Build升级到大约900台计算机。需要确保它们及时备份并且升级成功。
文件在文件共享上暂存。脚本存储在同一共享上。将在每台计算机上创建一个带有bat文件的任务,以获取脚本并执行它们。
在脚本中,我将其设置为记录数据并将其进度记录到网络上自己的文件中,文件名为 computer .txt
问题:
升级完成后,重新启动将执行设置为运行“ AtStartup”的任务。我让它立即重新连接到网络共享,以再次开始记录其状态。有时它会很好地工作,而有时则不能。 50/50。该脚本除此以外还可以工作。一切都很好。
为什么要记录日志?
有很多计算机可以一次全部观看,只有少数人可以监视它们并解决问题。日志将让我知道在哪里进行日志记录可能存在问题。我想继续重新启动数据。
这似乎不是网络问题,因为我已验证机器正在通信。
我尝试添加一个睡眠计时器,使Windows有2分钟的时间来完成引导。那没有帮助。
我不确定在哪里可以找到为什么它有时只能工作。
网络共享路径和设置文件变量的映射
$Drive_Root_Path = "\\File Path\"
$Drive_Letter = "X"
Remove-PSDrive $Drive_Letter
$Drive = New-PSDrive -Name $Drive_Letter -PSProvider FileSystem -Root $Drive_Root_Path
$Win10_Upgrade_Log_Folder = $Drive.Root + "Log Folder\"
$Log_File = $Win10_Upgrade_Log_Folder + $env:COMPUTERNAME + ".txt"
示例如何将数据添加到文件
Add-Content -Path $Log_File -Value (Get-Date) -NoNewline
Add-Content -Path $Log_File -Value " Setting Executino Policy back to Restricted."
我知道有更好的解决方案来升级Windows,但是有了可用的选项,我不得不提出一些建议。它的工作原理是减去重新启动后的日志记录部分。
答案 0 :(得分:1)
我同意@Theo尝试使用UNC路径而不是映射驱动器。我还主张在路径中也尝试使用完全限定的域名。这使您的代码更加简单:
$Win10_Upgrade_Log_Folder = "\\server.contoso.com\Log Folder\"
$Log_File = $Win10_Upgrade_Log_Folder + $env:COMPUTERNAME + ".txt"
添加内容是相同的:
Add-Content -Path $Log_File -Value (Get-Date) -NoNewline
Add-Content -Path $Log_File -Value " Setting Executino Policy back to Restricted."