如何在远程处理会话中执行PowerShell块(它是字符串而不是脚本块)?

如何在远程处理会话中执行PowerShell块(它是字符串而不是脚本块)?,powershell,powershell-remoting,powershell-3.0,Powershell,Powershell Remoting,Powershell 3.0,我正在尝试在远程PowerShell会话中自定义提示。这一切都很好: $session = New-PSSession MyRemoteServer Invoke-Command -Session $session -ScriptBlock { New-PSDrive -Name MyApp -PSProvider FileSystem -Root D:\Applications\MyApp | Out-Null CD MyApp:\ function prompt {

我正在尝试在远程PowerShell会话中自定义提示。这一切都很好:

$session = New-PSSession MyRemoteServer
Invoke-Command -Session $session -ScriptBlock {
    New-PSDrive -Name MyApp -PSProvider FileSystem -Root D:\Applications\MyApp | Out-Null
    CD MyApp:\
    function prompt { "test" }
}
Enter-PSSession -Session $session
它创建一个会话,为方便起见设置PSDrive,然后定制“Test”提示

但是,我不希望提示说“test”,我希望执行一些。但是,我不想在脚本块(上面的a)中硬编码它,因为我想在许多类似的函数中重用它,以便连接到不同类型的服务器

因此,我在本地定义了该函数,并且可以使用“get Content function:\RemotePrompt”获取内容。然而,我正在努力想办法把这个发送到另一个会话。调用表达式似乎不需要会话,调用命令似乎总是需要一个脚本块

我真正想要做的是类似于
Invoke命令-ScriptBlock{function prompt$MyRemoteCode}
的事情,但是变量被“解析”


这可能/容易吗?

您可以使用
scriptblock
.net类:

[scriptblock]::Create( $s)

其中,$s是
字符串
类型。

您可以使用
脚本块
.net类:

[scriptblock]::Create( $s)

其中,$s是一种
字符串
类型。

带有以$using:为前缀的Powershell V3变量的系统会自动识别为本地变量,并发送到远程计算机 因此,您可以使用
PS>$test=“local var”
PS>icm-cn server1-ScriptBlock{write host$using:test}
本地风险值


您可以在此处看到V3的所有新功能:

带有带$using:前缀的Powershell V3变量会自动识别为本地变量并发送到远程计算机 因此,您可以使用
PS>$test=“local var”
PS>icm-cn server1-ScriptBlock{write host$using:test}
本地风险值


您可以在这里看到V3的所有新功能:

不客气。我建议您将问题重命名为:如何将本地变量发送到远程会话?不客气。我建议您将问题重命名为:如何将本地变量发送到远程会话?