Powershell 如何在写主机或双引号中展开成员变量?

Powershell 如何在写主机或双引号中展开成员变量?,powershell,Powershell,我已经编写了一个PS脚本,出于诊断目的,我使用Write Host向屏幕回显消息。这很好,只要我必须像这样展开正态变量 编写主机“你好,世界,$name” 当我尝试回显一些成员变量时,问题开始了,如下所示 Write-Host "Hello World, $Person.Name" 这并没有像预期的那样扩大。下面的工作是使用temp变量 如下 有没有一种不使用临时变量的优雅方法呢?试试这个: $dir = ls Write-Host "Dir elements:" $dir.Length 如

我已经编写了一个PS脚本,出于诊断目的,我使用Write Host向屏幕回显消息。这很好,只要我必须像这样展开正态变量

编写主机“你好,世界,$name”

当我尝试回显一些成员变量时,问题开始了,如下所示

Write-Host "Hello World, $Person.Name"
这并没有像预期的那样扩大。下面的工作是使用temp变量 如下

有没有一种不使用临时变量的优雅方法呢?

试试这个:

$dir = ls
Write-Host "Dir elements:" $dir.Length

如果要在双引号字符串中使用属性访问,则需要一个子表达式:

"Foo $($bar.Property)"

这种方法的问题是,如果更改为写入输出并重定向到文件,文本将被分成两行输出。被接受的答案避免了这个问题。@IdoRan:据我所知或测试,都没有:
$s='foo';“$s.Length”
→ <代码>食物长度(PS v5.1)。我还发现他们不太可能改变这些规则,因为这在兼容性方面不是很好。
"Foo $($bar.Property)"