-1

我想在远程机器上运行几行代码,所以我必须使用“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

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

4

1 回答 1

2

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

将您的函数/cmdlet 作为脚本提供,并在远程会话中对它们进行点源:

. \\path\to\cmdlets.ps1

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

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

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

于 2013-09-18T22:03:53.987 回答