powershell变量不会在脚本的第二部分中使用

时间:2013-08-15 13:18:56

标签: powershell

我正在学习power shell,我对此代码有疑问。当我解析它时,一切正常,但不是在一起。可能是什么问题呢?谢谢你的回答。

$hotfix = read-host "Enter hotfixID"

Start-Process firefox.exe (get-hotfix | 
Where-Object -filter {$_.hotfixID -eq $hotfix} | 
Select-Object -ExpandProperty Caption)

2 个答案:

答案 0 :(得分:1)

您的脚本在这里正常运行。请注意,我没有安装Firefox,但它可以与iexplore一起使用。您遇到了什么问题?

另外,正如@ Colyn1337所述,你不需要使用Where-Object;您可以按如下方式简化此脚本:

$Hotfix = Read-Host "Enter Hotfix ID"

Start-Process firefox.exe
(
    Get-HotFix -Id "$Hotfix" | 
        Select-Object -ExpandProperty Caption
)

编辑:正如下面的评论所讨论的那样,问题是当通过powershell.exe -command scriptname调用时参数不起作用。解决方案是通过ArgumentList隐式传递参数:

$Hotfix = Read-Host "Enter Hotfix ID"

Start-Process firefox.exe -ArgumentList `
(
    Get-HotFix -Id "$Hotfix" | 
        Select-Object -ExpandProperty Caption
)

答案 1 :(得分:0)

要获取特定的修补程序,您需要尝试以下内容:

$hotFix = Read-Host "Enter hotfixID"
Get-Hotfix -Id $hotFix

如果我了解您要尝试的操作,则无需创建浏览器进程。