我已经编写了以下代码来获取处理器数量。
Function cpucount {
Get-WmiObject Win32_processor | select -Expand NumberOfLogicalProcessors | Unique
}
Function cpumodel {
'cpu: $(cpucount) X {0:0}' -f ( Get-WmiObject Win32_processor | select -Expand Name | Unique )
}
麻烦的是,我希望代码显示以下输出。处理器数量和处理器型号。
cpu:4 X Intel(R) Xeon(R) CPU L7555 @ 1.87GHz
现在,当我调用我的代码时,它给了我以下输出,主要是通过switch语句命名为cpumodel的函数。
PS C:\Users\Administrator> .\test.ps1 cpu
cpu: $(cpucount) X Intel(R) Xeon(R) CPU L7555 @ 1.87GHz
如何在cpumodel函数中调用我的格式语法中的cpucount函数,或者我将如何实现我想要的结果?最后,如何避免以下输出中的空格?
Intel(R) Xeon(R) CPU L7555 @ 1.87GHz
答案 0 :(得分:1)
单引号字符串文字不处理子表达式($(...)
内的内容)。 PowerShell始终将它们视为文字文本。
您需要使用双引号字符串文字:
"cpu: $(cpucount) X {0:0}" -f ( Get-WmiObject Win32_processor | select -Expand Name | Unique )
^ ^
对于额外的空格,它们是调用Get-WmiObject
返回的值的一部分。所以,你需要自己从价值中删除它们。使用-replace
运算符可以轻松完成此操作:
Function cpumodel {
$data = Get-WmiObject Win32_processor | select -Expand Name | Unique
$data = $data -replace '\s+', ' '
"cpu: $(cpucount) X {0:0}" -f $data
}