我将安装(32位)Java版本的请求放在一个变量中:
$java={Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*| Select-Object DisplayName, DisplayVersion| Where-Object {$_.DisplayName -like "Java ? Up*"}}
当我问
时&$java
它返回所需的值。 但是当把这个变量放在消息框中时:
[System.Windows.Forms.MessageBox]::Show("Javaversion: $java","Softwareversion",0,[System.Windows.Forms.MessageBoxIcon]::Asterisk)
它返回变量({Get-Item...
)的内容,而不是Java版本。
消息框的格式是什么?
答案 0 :(得分:0)
使用scriptblock(基本上是lambda表达式/匿名函数)定义$java
。通过使用调用操作符(&
),您可以调用/执行scriptblock,然后获取其中定义的操作的结果。但是,通过将变量放入字符串,您可以将scriptblock的字符串表示形式(基本上是其定义)插入到字符串中。
您可能只需删除大括号,以便立即执行Get-ItemProperty
并将结果分配给变量$java
:
$java = Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |
Select-Object DisplayName, DisplayVersion |
Where-Object {$_.DisplayName -like "Java ? Up*"}