自托管powershell不';不能在字符串中实现变量

自托管powershell不';不能在字符串中实现变量,powershell,self-hosting,Powershell,Self Hosting,我有一个自托管的PowerShell环境,我有以下脚本 $one = 10 $two = "The value of one is $one" 当我在PowerShell ISE中运行此代码段时,结果与我预期的一样 The value of one is 10 当我在我的自托管PowerShell环境中运行此操作时,字符串未实现,结果未更改。有人知道如何调用标准行为吗 致以最良好的祝愿, 齐米 完整的例子 var script = $@" $one = 10

我有一个自托管的PowerShell环境,我有以下脚本

$one = 10
$two = "The value of one is $one"
当我在PowerShell ISE中运行此代码段时,结果与我预期的一样

The value of one is 10
当我在我的自托管PowerShell环境中运行此操作时,字符串未实现,结果未更改。有人知道如何调用标准行为吗

致以最良好的祝愿, 齐米

完整的例子

var script = $@"
            $one = 10
            $two = 'The value is $one'
     ";

var ps = PowerShell.Create();

ps.AddScript(script);
ps.Invoke();

var valueoftwo = ps.Runspace.SessionStateProxy.GetVariable("two");

Assert.Equal("The value is 10", valueoftwo);
// here the value is 'The value is $one'

您所说的自托管PowerShell环境是什么意思?我引用了nuget软件包Microsoft.PowerShell.5.ReferenceAsmblies,创建了一个PowerShell对象和一个运行空间,然后运行脚本。@zimmybln,您有一些代码来演示这个问题吗?我编辑了这个问题。请参见上文。您的powershell字符串在C#字符串中是单引号
$two='值为$one'
。单引号字符串在PowerShell中不执行变量插值。您需要在带有反斜杠的C字符串中嵌入双引号
$two=\“值为$one\”
-