我正在尝试使用PowerShell脚本中的PsExec在远程服务器上注册.dll。
我的脚本如下所示:
ForEach($component in $registerComponents) {
try {
PsExec "\\$targetServer" -u $userName -p $password C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegSvcs.exe /u /nologo "$component.dll"
}
catch {
Write-Host $Error
}
}
每次运行脚本时,它都将比挂起之前的一个组件进一步前进,即第一次运行它时,它将成功取消注册第一个$组件并挂起第二个组件;第二次,第一个和第二个组件在挂在第三个组件之前将被取消注册。
认为RegSvcs.exe进程可能仍在远程服务器上运行并且这可能是原因,我添加了一个PsKill调用,如下所示:
ForEach($component in $registerComponents) {
try {
PsExec "\\$targetServer" -u $userName -p $password C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegSvcs.exe /u /nologo "$component.dll"
PsKill "\\$targetServer" -u $userName -p $password RegSvcs.exe
}
catch {
Write-Host $Error
}
}
......但无济于事。从服务器上的远程登录,taskmanager将在它运行时显示RegSvcs.exe;当脚本挂起时,似乎进程没有被执行。
这似乎应该可以正常工作,但我无法做到这一点。 对此有任何帮助将非常感激。