将本地功能传递给远程服务器

时间:2013-12-04 14:49:41

标签: powershell

我正在尝试将本地函数传递给具有多个参数的远程服务器。我计划为许多服务器运行它,因此参数列表将针对每种服务器类型进行更改。这是我试图用我正在使用的命令调用的函数的片段。远程计算机接受第一个参数,但似乎永远不会得到第二个参数。

Function Backup-Server{
[CmdletBinding()]
param
(
    [Parameter(Mandatory=$true)]
    [string]$BackupTarget,
    [Parameter(Mandatory=$false)]
    [switch]$BareMetal,
    [Parameter(Mandatory=$false)]
    [switch]$SystemState,
    [Parameter(Mandatory=$false)]
    [string[]]$Volume,
    [Parameter(Mandatory=$false)]
    [switch]$CriticalVolumes,
    [Parameter(Mandatory=$false)]
    [string[]]$File
)

Do stuff...
}

Invoke-Command -ComputerName dc-01.test.com -ScriptBlock ${Function:Backup-Server} -ArgumentList @("$BackupTarget","$SystemState") -AsJob

有什么想法?我感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我建议您将所有内容都包含在计算机本地的脚本文件中(例如c:\ script.ps1),然后在本地运行时调用目标计算机上的文件:

Invoke-Command -FilePath c:\script.ps1 -ComputerName server1,server2