Get-WmiObject -Class win32_logicaldisk -Filter 'DeviceID="C:"'
Run Code Online (Sandbox Code Playgroud)
做我想要的
$var="C:"
Get-WmiObject -Class win32_logicaldisk -Filter 'DeviceID="{$var}"'
Run Code Online (Sandbox Code Playgroud)
什么也没做。我试图更改引号,连接字符串和其他1000项内容,但是它们没有用。为什么上面的示例不起作用,什么起作用?
小智 6
例如,如果您使用 select-string 从文件中获取数据,则返回的是单引号字符串。如果该字符串包含变量,它们将不会扩展。如果变量是干净的 - 不与其他文本混合,则可以使用 Invoke-Expression:
$abc = 123
$a = '$abc'
iex $a -> 123
Run Code Online (Sandbox Code Playgroud)
如果变量是路径名的一部分,则此方法不起作用。使用 $ExecutionContext.InvokeCommand.ExpandString($var)
$path = '$Home/HiMum'
$ExecutionContext.InvokeCommand.ExpandString($path)
-> /home/JoeBlogs/HiMum
Run Code Online (Sandbox Code Playgroud)
Windows 上的幸运儿也许能够使用 Convert-String 将单打转换为双打。
当以'(单引号)开头的字符串文字时,您正在创建一个逐字字符串-也就是说,字符串中的每个字符都按字面意义进行解释,并且变量引用和表达式将不会扩展!
使用"如果您希望变量进行扩展:
$var = 'C:'
Get-WmiObject -Class win32_logicaldisk -Filter "DeviceID='$var'"
Run Code Online (Sandbox Code Playgroud)
如果您的变量名奇怪的字符,或后跟一个字字符,你可以用两个大括号限定变量名{}立即之后的$:
$var = 'C:'
Get-WmiObject -Class win32_logicaldisk -Filter "DeviceID='${var}'"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5053 次 |
| 最近记录: |