【问题标题】:Passing parameters to a remote scriptblock将参数传递给远程脚本块
【发布时间】:2020-08-22 07:01:28
【问题描述】:

假设我有 2 个脚本。 main-script.ps1 和 base-script.ps1 以及从 main-script 调用的 base-script。

#base-script.ps1
Param(
    [string]$Site,
    [string]$Env,
    [string]$Package,
    [bool]$New_Variable,
    [string]$New_Variable2
)
Write-Host "i am in base script"
Write-Host " i am in server " $env:COMPUTERNAME

Write-Host $Site
Write-Host $Env
Write-Host $Package
Write-Host $New_Variable
Write-Host $New_Variable2
#main-script.ps1
Param(
    [string]$SiteName,
    [string]$Environment,
    [string]$PackageName

)
Write-Host "I am in main-script"

$new_var = $true
$new_var2 = "Green"

$deployToBaseBlock = get-command '.\Base-script.ps1' | Select-Object -ExpandProperty ScriptBlock

Invoke-Command S1 -ScriptBlock $deployToBaseBlock -ArgumentList $SiteName,$Environment,$PackageName,$new_var,$new_var2

Write-Host "I am back in main. exiting"

现在随着 base-script.ps1 中参数的增长,argumentlist 中传递的参数变得冗长且难以管理。有一个更好的方法吗。我无法在这方面进行大量工作。

根据第一条评论,我们需要尝试这样的事情:

start-job -scriptblock { & 'c:\ps\bcpCopy.ps1' @args } -ArgumentList $ARGS

但就我而言,脚本块是在外部定义的。

$deployToBaseBlock = get-command '.\Base-script.ps1' | Select-Object -ExpandProperty ScriptBlock

Invoke-Command S1 -ScriptBlock {$deployToBaseBlock @args} -ArgumentList $arr

$arr 是参数数组。这似乎不起作用。请提出建议。

【问题讨论】:

  • 这能回答你的问题吗? Powershell: passing parameters to a job,见splatting
  • 在给定的示例中,脚本在脚本块内被调用,如下所示: start-job -scriptblock { & 'c:\ps\bcpCopy.ps1' @args } -ArgumentList $ARGS就我而言,脚本块是在脚本块之外定义的: $deployToBaseBlock = get-command '.\Base-script.ps1' | Select-Object -ExpandProperty ScriptBlock 所以这似乎不起作用: Invoke-Command S1 -ScriptBlock {$deployToBaseBlock @args} -ArgumentList $arr, $arr being array of arguments
  • 请不要在注释中添加代码,因为这样会变得不可读。 edit 您提出问题并将其粘贴为Formatted 文本。

标签: powershell powershell-remoting powershell-7.0


【解决方案1】:

无论如何,远程端点都需要重新创建和重新编译脚本块,因此您不妨将原始Base-Script.ps1 文件传递给它。

幸运的是,Invoke-Command 已经为这个确切的用例提供了一个参数:

Invoke-Command -FilePath '.\Base-script.ps1' -ComputerName S1 -ArgumentList $arr

【讨论】:

    猜你喜欢
    • 2020-11-19
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    相关资源
    最近更新 更多