如何创建可在Invoke-Command命令中使用的scriptblock项

时间:2013-09-18 21:51:03

标签: powershell remote-desktop invoke-command scriptblock

我想在远程计算机上运行几行代码,因此我必须使用“Invoke-command”cmdlet来实现这一点。 我想运行的脚本相当长(不仅仅是一个简单的命令,而是一些循环,条件等),因此不可能只是在线复制代码。 那么有人可以教我这样做的语法吗?

for example: I have the following code:
Function createDict(){
    $Dict = @{}
    $Variables = Get-Content .\Variables.ini.
    foreach ($str in $Variables){
            if ($str -eq ""){
            continue
        }
        if ($str.StartsWith("[") -or $str.StartsWith("#")){
            continue
        } else {
            $Pair = $str.Split('=')
            $Dict.Add($Pair[0], $Pair[1])
        }
        }
    return $Dict
}
Import-Module virtualmachinemanager
    stop-VM NHQA-W8-64b-Q13
start-VM NHQA-W8-64b-Q13

你不需要尝试理解上面的代码,我只是想告诉你我在这里尝试在远程机器上执行什么样的事情。 非常感谢你提前!

1 个答案:

答案 0 :(得分:2)

你有几个选择,可能更多:

使您的函数/ cmdlet可用作脚本并在远程会话上点源它们:

. \\path\to\cmdlets.ps1

您拥有的另一个选项是PowerShell中的脚本块是一个对象,因此可以将其分配给变量并以这种方式重复使用。考虑以下简单的例子:

$files = { -not $_.PSIsContainer }
$folders = { $_.PSIsContainer }
dir | ? $files
dir | ? $folders

我希望这些想法有所帮助。对不起,我没有更直接的答案。也许如果你能提供一些你尝试过的例子以及你遇到的错误,那将有助于提供更直接,更好的答案。