仅在Powershell中写入变量值

问题描述 投票:0回答:2

我正在尝试将4个值收集到变量中,然后将这些值写入屏幕,这样看起来像这样:

value1,value2,value3,value4

相反,我得到以下信息:

@{name=value1},@{domain=value2},@{domainrole=value3},@{workgroup=value3}

这是我的代码。任何反馈将不胜感激。谢谢。

$name = Get-CimInstance -ClassName Win32_ComputerSystem | select name
$domain = Get-CimInstance -ClassName Win32_ComputerSystem | select domain
$domainrole = Get-CimInstance -ClassName Win32_ComputerSystem | select domainrole
$workgroup = Get-CimInstance -ClassName Win32_ComputerSystem | select workgroup
write-host "$name,$domain,$domainrole,$workgroup"
powershell
2个回答
0
投票

您有一些选择可以实现这一目标。一种方法是使用-ExpandProperty的参数Select-Object来转换具有字符串属性的对象,如下所示:

$name = Get-CimInstance -ClassName Win32_ComputerSystem | Select-Object -ExpandProperty name
$domain = Get-CimInstance -ClassName Win32_ComputerSystem | Select-Object -ExpandProperty domain
$domainrole = Get-CimInstance -ClassName Win32_ComputerSystem | Select-Object -ExpandProperty domainrole
$workgroup = Get-CimInstance -ClassName Win32_ComputerSystem | Select-Object -ExpandProperty workgroup
"$name,$domain,$domainrole,$workgroup"

或者您可以保留对象并使用点符号对其属性进行访问:

$name = Get-CimInstance -ClassName Win32_ComputerSystem
$domain = Get-CimInstance -ClassName Win32_ComputerSystem
$domainrole = Get-CimInstance -ClassName Win32_ComputerSystem
$workgroup = Get-CimInstance -ClassName Win32_ComputerSystem
"$name.name,$domain.domain,$domainrole.domainrole,$workgroup.workgroup"

我建议使用后者,因为您仍可以在不损失其属性的情况下将对象用于代码中的进一步步骤。 ;-)


0
投票

这是一个非常命令性的问题。我喜欢使用foreach-object或简称%:

[pscustomobject]@{name='joe'} | % name

joe
© www.soinside.com 2019 - 2024. All rights reserved.