如何在新过程中将参数传递给脚本块

问题描述

我想从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脚本中时,它似乎可以正常工作。

解决方法

很可能没有在新作用域中定义$block变量。这行得通。

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

我使用了&invoke方法,您也可以使用。

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

在新控制台中输出

Hello friend . How are you?