首页 > 解决方案 > 启动时无法通过 PS 重新启动后登录到网络共享

问题描述

准备使用一些我已经编写了一段时间但从未能够解决一个特定问题的脚本。希望能找到解决办法。

该项目是在一个周末对大约 900 台机器进行 Win10 Build 升级。需要确保它们及时备份并且升级成功。

文件暂存在文件共享上。脚本存储在同一个共享中。将在每台机器上使用 bat 文件创建一个任务,以获取脚本并执行它们。

在脚本中,我将其设置为将数据及其进度记录到网络上自己的文件中,文件名是计算机.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 有更好的解决方案,但是我有可用的选项,我必须想出一些办法。它的工作原理是在重新启动后减去日志记录的部分。

标签: windowspowershelllogging

解决方案


我同意@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."

推荐阅读