0

我想从 pwsh 核心启动一个新的 powershell 会话,以运行一些旨在在 powershell 5.1 中运行的代码(它检查版本表)。

我可以让脚本块正常执行,但我想将变量值从我的 pwsh 会话传递到新会话。

一个不起作用的例子是:

7.0.3: >_ $block = {param($name)Write-Host "Hello, $name. How are you?"}
7.0.3: >_ start powershell -argumentlist "-noexit $block 'friend'"

新窗口打开:

5.1: >_ Hello,  . How are you? friend
5.1: >_ 

但是,当我将它包装在一个完整的.ps1脚本中时,它似乎工作正常。

4

1 回答 1

0

很可能该$block变量未在新范围中定义。这行得通。

start powershell -ArgumentList '-noexit & {param($name)Write-Host "Hello, $name. How are you?"} friend'

我使用了 & 调用方法,你也可以使用 .

start powershell -ArgumentList '-noexit . {param($name)Write-Host "Hello, $name. How are you?"} friend'

在新控制台中输出

Hello friend . How are you?
于 2020-09-11T05:53:54.977 回答