Hello,
i have a Script for Install Security Hotfixes remote.The Script is great, but if you add a lot of hosts it take a long time to finish the deployment. Have anyone a idea how i can add multi threads?
Here is the code:
$RootHotfixPath = 'C:\Temp\'
$Hotfixes = @('windows6.1-kb4499175-x64_3704acfff45ddf163d8049683d5a3b75e49b58cb.msu')
$Servers = Get-Content 'C:\temp\MachineList.txt'
foreach ($Server in $Servers)
{
Write-Host "Processing $Server..."
$needsReboot = $False
$remotePath = "\\$Server\c$\Temp\Patches\"
if( ! (Test-Connection $Server -Count 1 -Quiet))
{
Write-Warning "$Server is not accessible"
continue
}
if(!(Test-Path $remotePath))
{
New-Item -ItemType Directory -Force -Path $remotePath | Out-Null
}
foreach ($Hotfix in $Hotfixes)
{
Write-Host "`thotfix: $Hotfix"
$HotfixPath = "$RootHotfixPath$Hotfix"
Copy-Item $Hotfixpath $remotePath
# Run command as SYSTEM via PsExec (-s switch)
& C:\Tools\PSTools\PsExec -s \\$Server wusa C:\Temp\Patches\$Hotfix /quiet /norestart
write-host "& C:\Tools\PSTools\PsExec -s \\$Server wusa C:\Temp\Patches\$Hotfix /quiet /norestart"
if ($LastExitCode -eq 3010) {
$needsReboot = $true
}
}
# Delete local copy of update packages
Remove-Item $remotePath -Force -Recurse
if($needsReboot)
{
Write-Host "Restarting $Server..."
#Restart-Computer -ComputerName $Server -Force -Confirm
}
}