PowerShell脚本“无法找到接受参数的位置参数”?

时间:2017-09-22 11:58:23

标签: powershell

我目前正在尝试运行如下脚本(查找和卸载CCleaner):

Get-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object {$_.DisplayName -eq "CCleaner"} -OutVariable Results **{
& "$($Results.InstallLocation)\uninst.exe"
}

错误是:

Where-Object : A positional parameter cannot be found that accepts argument 
& "$($Results.InstallLocation)\uninst.exe" /S
.At line:1 char:98
+ Get-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object <<<<  {$_.DisplayName -eq "CCleaner"} -OutVariable Results {
+ CategoryInfo          : InvalidArgument: (:) [Where-Object], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.WhereObjectCommand

最后一部分似乎有问题。我确信这是因为我在PS v3中写这个,但是我在运行PS v2或v1的PC上运行它作为PSSession。

1 个答案:

答案 0 :(得分:0)

我认为这就是你所追求的:

Get-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object {$_.DisplayName -eq "CCleaner"} | ForEach-Object { & "$($_.InstallLocation)\uninst.exe" }

否则,您需要在&#34;结果&#34;

之后使用命名参数