我目前正在将登录脚本从VBS转换为Powershell,并且如果某个特定文件是旧版本,则其中一个更新已减少到:
sub UrgentSupportApp()
On Error Resume Next
Set objShell = CreateObject("WScript.Shell")
objShell.Run "powershell -file ""\\DC1\NETLOGON\PSSubs\UrgentSupportApp.ps1""", 0, true
If Err <> 0 Then
strMessage = "ERROR: Sub - UrgentSupportApp"
DisplayCustomError(strMessage)
End If
End Sub
但是当我登录时,我看到了这个错误:
数字(十进制): - 214703565
数字(十六进制):&amp; H80020009
描述:无法等待进程。
来源:WshShell.Run
我知道powershell工作正常,因为我已将其作为独立脚本进行测试。但是,我不确定通过网络访问它是否会影响env:USERPROFILE
变量(用户在此范围内?)。
我尝试将bWaitOnReturn
参数更改为false
,这导致没有错误,但脚本实际上并没有完成工作。
有没有人有关于如何调试此错误或可能出错的提示?
ps1脚本如下所示:
$appsource = '\\file\Administration\Unused\Apps\IT Support App\IT Self Help.exe'
$apptarget = $env:USERPROFILE + '\desktop\IT Self Help.exe'
$oldapp1 = $env:USERPROFILE + '\desktop\Urgent IT Help Request.exe'
$oldapp2 = $env:USERPROFILE + '\desktop\IT Help Request.exe'
$currentversion = (Get-Command $appsource).FileVersionInfo.FileVersion
If (Test-Path $oldapp1) {Remove-Item $oldapp1}
If (Test-Path $oldapp2) {Remove-Item $oldapp2}
If (Test-Path $apptarget) {
If (!((Get-Command $apptarget).FileVersionInfo.FileVersion -eq $currentversion)) {
Copy-Item $appsource $env:USERPROFILE'\desktop' -Force
}
}
Else {Copy-Item $appsource $env:USERPROFILE'\desktop' -Force}
它只删除任何具有旧名称的文件,然后如果它不存在则复制最新版本。
答案 0 :(得分:0)
我可以通过将VBS调用更改为:
来解决此问题 objShell.Run("powershell.exe -noexit \\DC1\NETLOGON\PSSubs\UrgentSupportApp.ps1"), 0
我不确定为什么会这样,但确实如此。
请注意,当用户登录计算机时,会通过登录脚本在瘦客户端上调用此方法。