我需要从 Powershell 调用远程 VB 脚本,并且 VB 脚本需要在远程机器上运行。
我一直在使用 \$computer\root\cimv2:Win32_Process").Create(C:\test.vbs)
这可行,但是我无法从脚本中获取返回值,而只能从 win32 进程中获取返回值。
我会将整个东西转换为powershell,但不能因为我连接到旧域我无法安装其他工具所以必须调用远程vbscript
我需要从 Powershell 调用远程 VB 脚本,并且 VB 脚本需要在远程机器上运行。
我一直在使用 \$computer\root\cimv2:Win32_Process").Create(C:\test.vbs)
这可行,但是我无法从脚本中获取返回值,而只能从 win32 进程中获取返回值。
我会将整个东西转换为powershell,但不能因为我连接到旧域我无法安装其他工具所以必须调用远程vbscript
这是一个老问题,但我想分享我的解决方案。它与 Ansgar 发布的相同,但已经过测试并且工作正常:
$VNC = '\\share\software\AppName\_Install_Silent.vbs'
$Computer = 'RemoteHost'
$TMP = "\\$Computer\c$\TEMP"
if (!(Test-Path $TMP)) {
New-Item -Path $TMP -ItemType Directory
}
Copy-Item -LiteralPath (Split-Path $VNC -Parent) -Destination $TMP -Container -Recurse -Force -Verbose
$LocalPath = Join-Path 'C:\TEMP' (Join-Path (Split-Path $VNC -Parent | Split-Path -Leaf) (Split-Path $VNC -Leaf))
Invoke-Command -ScriptBlock {cscript.exe $Using:LocalPath} -Computer $Computer
# Restart might be needed of remote host
不同之处在于您必须首先将文件复制到远程计算机以避免双跳问题,然后您可以使用$Using
变量安装它。
希望这可以帮助某人。
我可能会尝试任一远程调用:
Invoke-Command -ScriptBlock { cscript.exe "C:\test.vbs" } -Computer $computer
或PsExec
:
PsExec \\$computer cscript.exe "C:\test.vbs"
不过,现在无法测试其中任何一个。