J3qx

information archive

Get-InstallUpdate.ps1

Posted by j3qx на Ноябрь 17, 2016

cls

#На входе CSV с разделителем
$input_srv = «C:\temp\Servers.csv»
#На входе CSV с разделителем
$input_hotfix = «C:\temp\Hotfix_WIN-610.csv»
#На выходе CSV с разделителем
$out_file = «C:\temp\Out_KB_WIN-610.csv»
#Разделитель указать тут
$delimetr = «,»

#HOTFIX вручную
$hotfix_id = «KB3083185»

#HOTFIX файл со списком
#$hotfix_id = (Import-csv -Delimiter $delimetr -Encoding Default -Path $input_hotfix).name

[array]$ocol = $null

#SERVER Файл со списком
#$servers = Import-csv -Delimiter $delimetr -Encoding Default -Path $input_srv

#Список по фильтру
$servers = Get-ADComputer -SearchBase «DC=office,DC=example,DC=ru» -Properties operatingSystem -Filter {operatingSystem -like «Windows Server*»}

$servers | foreach {
$name = $_.name.TrimEnd(«.office.example.ru»)
$ping = $null
$ad_object = $null
try{$ping = Test-Connection $name -Count 2 -ea SilentlyContinue}catch{}
try{$ad_object = Get-ADComputer $name -ea SilentlyContinue}catch{}
if ($ping -and $ad_object){
$hotfix_srv = $null
try{
$hotfix_srv = Get-WmiObject -ComputerName $name -Class Win32_QuickFixEngineering -ErrorAction Stop
if ($hotfix_srv){
$hotfix = Compare-Object $hotfix_srv.HotFixID $hotfix_id -IncludeEqual -ExcludeDifferent
if ($hotfix) {
$hotfix | foreach {
$o = New-Object PSObject
$o | Add-Member -MemberType NoteProperty -Name Name -Value $name
$o | Add-Member -MemberType NoteProperty -Name OS -Value (Get-ADComputer $name -Properties operatingSystem).operatingSystem
$o | Add-Member -MemberType NoteProperty -Name Value -Value $_.InputObject
$ocol += $o
$o
}
}
else {
$o = New-Object PSObject
$o | Add-Member -MemberType NoteProperty -Name Name -Value $name
$o | Add-Member -MemberType NoteProperty -Name OS -Value (Get-ADComputer $name -Properties operatingSystem).operatingSystem
$o | Add-Member -MemberType NoteProperty -Name Value -Value «Not Installed»
$ocol += $o
$o
}
}
}
catch{
$Err = $Error[0].Exception
$o = New-Object PSObject
$o | Add-Member -MemberType NoteProperty -Name Name -Value $name
$o | Add-Member -MemberType NoteProperty -Name OS -Value (Get-ADComputer $name -Properties operatingSystem).operatingSystem
$o | Add-Member -MemberType NoteProperty -Name Value -Value $Err.Message
$ocol += $o
$o
}
}
else
{
$o = New-Object PSObject
$o | Add-Member -MemberType NoteProperty -Name Name -Value $name
$o | Add-Member -MemberType NoteProperty -Name OS -Value «Host unavalible»
$o | Add-Member -MemberType NoteProperty -Name Value -Value «Host unavalible»
$ocol += $o
$o
}
}

$ocol | Export-Csv -Path $out_file -Delimiter $delimetr -NoTypeInformation -Encoding Default

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

 
%d такие блоггеры, как: