如何在远程处理会话中执行PowerShell块(它是字符串而不是脚本块)?
我正在尝试在远程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 {
$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的所有新功能:不客气。我建议您将问题重命名为:如何将本地变量发送到远程会话?不客气。我建议您将问题重命名为:如何将本地变量发送到远程会话?