【问题标题】:Strings with variables include namespace and object information?带变量的字符串包括命名空间和对象信息?
【发布时间】:2015-12-07 02:46:41
【问题描述】:
# Locate Local HDD drive letter (100GB+)
#(Get-WmiObject -Query "SELECT * FROM Win32_LogicalDisk WHERE DriveType LIKE 3" | Sort-Object -Descending Size)[0] | Format-List *
$oLocalLargestHDD = (Get-WmiObject -Query "SELECT * FROM Win32_LogicalDisk WHERE DriveType LIKE 3" | Sort-Object -Descending Size)[0]
If ($oLocalLargestHDD.Size -gt 100000000)
{
    $sMsg = "HDD ( $oLocalLargestHDD.Name ) is found!"
    Write-Host $sMsg
} else {
    Write-Host "HDD is NOT found!"
}

输出:

找到硬盘(\BRIANG\root\cimv2:Win32_LogicalDisk.DeviceID="C:".Name)!

而不是

找到硬盘 (C:)!

【问题讨论】:

  • $sMsg = "HDD $($oLocalLargestHDD.Name) is found!"

标签: string powershell wmi powershell-2.0


【解决方案1】:

您没有正确地进行变量扩展。你需要有一个subexpression。你很亲密。

$sMsg = "HDD ($($oLocalLargestHDD.Name)) is found!"

或者您可以使用format operator

$sMsg = "HDD ({0}) is found!" -f $oLocalLargestHDD.Name

您看到的是$oLocalLargestHDD 对象的字符串表示形式。使用上述任何一种方法都允许您使用该属性。

【讨论】:

  • 马特,谢谢先生!我更喜欢你的第二个例子。
  • @BrianGonzalez 不客气。如果这回答了您的问题,请考虑将其标记为左侧的复选标记。
  • 在使用 Write-Host 时也可以使用此方法吗?它似乎不喜欢“-f”格式参数。
  • @BrianGonzalez 如果你把整个东西放在括号里就可以了。 Write-Host ("HDD ({0}) is found!" -f $oLocalLargestHDD.Name)
猜你喜欢
  • 1970-01-01
  • 2010-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-30
  • 2018-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多