Param($PackageDir) if ($PSBoundParameters.Count -ne 1) { Write-Output "Error: -PackageDir " ;exit 1} If ( -not (Test-Path $packagedir)) { Write-Output "Error: -PackageDir does not exist." ;exit 1} $packages = (Get-ChildItem -Path $packagedir| where {$_.extension -eq ".msi"} | Sort Name | %{$_.FullName}) $success = $true if ($packages.Count -gt 0){ Write-Output "Installation of updates (msi) is starting... " foreach ($package in $packages){ Start-Process msiexec.exe -Wait -ArgumentList "/i $package /qn" if (!($LASTEXITCODE -eq 0)) { $success = $false $package = "+ " + (Get-Item $package).Name + ": Failed" } else { $package = "+ " + (Get-Item $package).Name + ": Success" } Write-Output $package } Write-Output "Finished installing updates." if ($success) { Write-Output "Info: All updates were successfully installed." } else { Write-Output "Info: There are failed updates." } } else { Write-Output "There are no app updates (msi)." } $packages = (Get-ChildItem -Path $packagedir| where {$_.extension -eq ".exe"} | Sort Name | %{$_.FullName}) $success = $true if ($packages.Count -gt 0){ Write-Output "Installation of updates (exe) is starting... " foreach ($package in $packages){ Copy-Item $package -Destination "$env:TEMP\myinstaller.exe" -Force Start-Process "$env:TEMP\myinstaller.exe" -Wait -ArgumentList "/silent /install" if (!($LASTEXITCODE -eq 0)) { $success = $false $package = "+ " + (Get-Item $package).Name + ": Failed" } else { $package = "+ " + (Get-Item $package).Name + ": Success" } } Write-Output "Finished installing updates." if ($success) { Write-Output "Info: All updates were successfully installed." } else { Write-Output "Info: All updates were successfully installed." } } else { Write-Output "There are no app updates (exe)." } exit 0