使用通过PowerShell复制的密钥调用.exe文件

时间:2016-06-16 13:38:50

标签: powershell

我尝试使用此脚本执行从网络文件夹复制到主机文件夹的执行.exe文件,其中包含用于静默安装的密钥:

Get-ChildItem "D:\" -Filter *.exe | Where Name -NotMatch '.*NoDB\.exe$' | % {
New-Object psobject -Property @{
    No = [int]([regex]::Match($_.Name, '(?<=CL)\d+').Value)
    Name = $_.FullName
}

} | Sort No -Descending | Select -ExpandProperty Name -First 1 | Invoke-Item -s2 -sp"-SilentInstallation=standalone -UpdateMaterials=yestoall -UpgradeDBIfRequired=yes"

但我收到错误:

 Invoke-Item : A parameter cannot be found that matches parameter name  's2'.
At line:20 char:78
+ ... ding | Select -ExpandProperty Name -First 1 | Invoke-Item -s2 -sp"-Si ...
+                                                               ~~~
+ CategoryInfo          : InvalidArgument: (:) [Invoke-Item], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.InvokeItemCommand

1 个答案:

答案 0 :(得分:1)

您收到错误是因为您将参数传递给Invoke-Item cmdlet而不是您的应用程序,

尝试使用&调用可执行文件并传递参数:

Get-ChildItem "D:\" -Filter *.exe | Where Name -NotMatch '.*NoDB\.exe$' | % {
New-Object psobject -Property @{
    No = [int]([regex]::Match($_.Name, '(?<=CL)\d+').Value)
    Name = $_.FullName
}

} | Sort No -Descending | Select -ExpandProperty Name -First 1 | 
 Foreach { & $_ -s2 -sp"-SilentInstallation=standalone -UpdateMaterials=yestoall -UpgradeDBIfRequired=yes"}