Powershell 启动进程-参数列表不起作用

Powershell 启动进程-参数列表不起作用
Start-Transcript c:\scripts\InstallUpdates.log -Append # -NoClobber
$SourceMSUFiles = (get-content install-list.txt | where {$_ -like "*.msu"})

#Install MSU files

foreach($file in $SourceMSUFiles)
{
    $Argument= "$Files",' /quiet',' /norestart'
    & start wusa -ArgumentList @Argument -Wait # -RedirectStandardOutput "c:\scripts\InstallUpdates.log"
    Write-Host "Installing $file" `n
}
stop-transcript

在正常的 cmd 行中它将像这样工作:

wusa $files /quiet /norestart

我想使用 Powershell 来做我通常用命令行做的事情。

答案1

实际上,您可以使用相同的命令。或者您正在寻找更惯用的东西?我认为使用 CMD 语法启动可执行文件更容易,除非您看到一些奇怪的错误()甚至重定向也能起作用:

Get-Content install-list.txt | Where-Object {$_ -like "*.msu} | Foreach-Object {
    wusa $_ /quiet /norestart >> "c:\script\installupdates.log" | Wait-Process
}

当我尝试对虚假更新执行此操作时,日志文件为空。我认为这可能与安静选项有关。命令行中似乎也很安静!

答案2

在 powershell 中,你可以像在 CMD 中一样调用它。无需使用Start-Process

答案3

约翰斯的回答解决了这个问题。

最终代码

Get-Content install-list.txt | Where-Object {$_ -like "*.msu"} | Foreach-Object {
    wusa $_ /quiet /norestart >> "c:\script\installupdates.log" | Wait-Process
}
Write-Host "Installed patches on"
((get-date -DisplayHint Date))
get-hotfix|where {$_.InstalledOn -gt ((get-Date).AddDays(-1))}|Select HotfixId

相关内容