远程将参数从PS传递到批次

时间:2016-08-24 15:52:45

标签: powershell batch-file parameter-passing invoke-command

我已经阅读了Q / A已经可用,并且找不到我的答案(可能太简单了?)。

我有一个PS功能: 1)将本地.bat文件放入远程机器(目标) 2)调用远程.bat(通过invoke-command)传递一个参数 3)等待远程.bat成功完成 4)从目标机器中删除.bat

我的问题是一切都运行得很好但是...参数没有显示!

PS脚本的代码是:

function Run-BatchFile ($computer,$dbn, [string]$batLocation)
{
$sessions = New-PSSession -ComputerName $computer -Credential elsmith
Copy-Item -Path $batLocation -Destination "\\$computer\C$\temp" #copy the file locally on the machine where it will be executed
$batfilename = Split-Path -Path $batLocation -Leaf
Invoke-Command -Session $sessions -ScriptBlock {param($batfilename) &  cmd.exe /c "C:\Temp\$batfilename $dbn" } -ArgumentList $batfilename -AsJob   
-ArgumentList $batfilename -AsJob
Get-job | Wait-Job   
Remove-Item -Path "\\$computer\C$\Temp\$batfilename" -Force 
Remove-PSSession -Session $sessions 
}
Run-BatchFile SERVERNAME JOHN "C:\Temp\test_remote_called.bat"  

调用脚本的代码只是:

set DB=%1
echo Test of %DB% was successful >> c:\temp\output.txt
exit /B

输出结果为:

Test of  was successful

我确定必须有一个微不足道的方法来解决这个问题:我犯了一个严重的错误吗?我错过了什么吗?

0 个答案:

没有答案