自托管powershell不';不能在字符串中实现变量
我有一个自托管的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
$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\”
-