2012-06-28 49 views
4

我想從機器A運行PS遠程會話以訪問機器B.兩者都位於同一個域中,並且Kerberos身份驗證正在工作,並且我可以建立PS遠程會話。將變量傳遞給PoSh遠程文件執行

我試圖運行從計算機A計算機B上傳遞參數的腳本到腳本如下:

$build_script_dir = Resolve-Path . 
$file_to_execute = "$build_script_dir\file_to_execute.ps1" 

invoke-command -ComputerName MachineB -FilePath $file_to_execute -argumentlist $Arg1,$Arg2,$Arg3,$Arg4 

這似乎並不調用腳本。我甚至試圖採取腳本到遠程計算機,然後執行它的方式如下:

$remote_file = "c:\path-to-file\remote_file.ps1" 

invoke-command -ComputerName MachineB -ScriptBlock {$remote_file} -argumentlist $Arg1,$Arg2,$Arg3,$Arg4 

缺少什麼我是從運行停止腳本?我有大約10個參數傳遞給腳本,腳本將操作IIS。

保羅

回答

1

如果只存在於遠程計算機上的腳本:

Invoke-Command -ComputerName Server01 -scriptBlock { C:\scripts\Test.PS1 "Arguments here"} 

-FilePath查找本地計算機上的腳本。

當您在-ScriptBlock中指定文件路徑時,您可以調用駐留在遠程系統上的腳本。

另外,如果您需要將任何變量從本地機器傳遞到遠程腳本,請使用-Argumentlist。但是,-ScriptBlock需要param()。例如,

Invoke-Command -ComputerName Server01 -scriptBlock { param($name, $age) C:\scripts\Test.PS1 -Name $name -Age $age} -ArgumentList $name,$age 

在上述命令中,$ name和$ age是局部變量。

+0

我有一個約15個參數的列表 - 我是否需要在param()中分配它們,或者我可能使用PSObject? – stack72

+0

發送散列給遠程腳本並使用-Property在腳本中使用該散列。 – ravikanth