使用Powershell在远程计算机上使用返回值调用VBScript

时间:2013-04-10 09:31:47

标签: powershell scripting vbscript

我需要从Powershell调用一个远程VB脚本,VB脚本需要在远程机器上运行。

我一直在使用\ $ computer \ root \ cimv2:Win32_Process“)。创建(C:\ test.vbs)

这样可行,但我无法从脚本中获取返回值,只能从win32进程返回值。

我会把整个东西转换为powershell,但不能因为我连接到遗留域我无法安装其他工具所以必须调用远程vbscript

2 个答案:

答案 0 :(得分:2)

这是一个老问题,但我想分享我的解决方案。它与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变量进行安装。

希望这有助于某人。

答案 1 :(得分:1)

我可能会尝试远程调用:

Invoke-Command -ScriptBlock { cscript.exe "C:\test.vbs" } -Computer $computer

PsExec

PsExec \\$computer cscript.exe "C:\test.vbs"

现在无法测试其中任何一个。