Список КБ, установленный для обновлений Windows и состояния последней перезагрузки, требуется в одном файле - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь получить весь список КБ, установленных на нескольких серверах, и получить время последней перезагрузки системы.Мое требование - получить результат в формате csv или текстовом формате с именами столбцов «Имя хоста», «Имя базы данных», «Установлено», «Установлено» и «Последняя перезагрузка».Я должен выполнить 2 сценария, чтобы сделать это, а затем я должен отформатировать его, и я не хочу, чтобы другие столбцы, которые я получаю из кода 1, требуются только ограниченные столбцы. Могут ли некоторые помочь мне получить тот же формат, который я получил заново?

Требуется вывод в следующем формате:

"Source" "Description" "HotFixID"  "InstalledBy"  "InstalledOn" "Last Reboot"

Пожалуйста, найдите код ниже 2.

К вашему сведению: я новичок в powershell.

Код 1: Будет отображен список всех установленных исправлений в КБ.

$computers = Get-Content -path "C:\Users\joy\Desktop\Machine_List.txt"
$patches = Get-Content -path "C:\Users\joy\Desktop\KB_List.txt"

foreach ($computer in $computers){
 foreach ($patch in $patches){

 Get-HotFix -id $patch -ComputerName $computer | -OutVariable results -ErrorAction SilentlyContinue

 if ($results -ne $null) {

 $results | Out-File C:\Users\joy\Desktop\report1.txt -Append -Force

 }

 else {

 Add-content "$Patch is not Present in $computer" -path "C:\Users\joy\Desktop\report2.txt"

 }

 }

Код 2: При этом будет произведена последняя перезагрузка системы.

$machines = Get-Content C:\Users\joy\Desktop\Machine_List.txt 
$report = @() 
$object = @() 
foreach($machine in $machines) 
{ 
$machine 
$object = gwmi win32_operatingsystem -ComputerName $machine | select csname, @{LABEL='LastBootUpTime';EXPRESSION={$_.ConverttoDateTime($_.lastbootuptime)}} 
$report += $object 
} 
$report | Export-csv C:\Users\joy\Desktop\Reboot.csv

1 Ответ

0 голосов
/ 25 июня 2018
$computers = Get-Content C:\Users\XXXXXXXX\Desktop\Machine_List.txt
$patchlist = Get-Content C:\Users\XXXXXXXX\Desktop\KB_List.txt
foreach($computer in $computers)
{
Get-HotFix -ComputerName $computer -Id $patchlist | select 
InstalledOn,InstalledBy,Description,HotFixID,__SERVER | Format-Table | Out-File 
C:\Users\XXXXXXXX\Desktop\report1.txt
#Get-CimInstance -ClassName Win32_Operatingsystem | select csname, lastbootuptime | 
Format-Table |Out-File C:\Users\XXXXXXXX\Desktop\report1.txt
gwmi win32_operatingsystem -ComputerName $computer | select csname, 
@{LABEL='LastBootUpTime';EXPRESSION={$_.ConverttoDateTime($_.lastbootuptime)}} | Out- 
File C:\Users\XXXXXXXX\Desktop\report1.txt -Append
}

Попробуйте, это позволит вам получить информацию о том, что вы ищете. Но этот сценарий получает информацию об установленных исправлениях только с удаленных компьютеров. Если вы хотите добавить еще один цикл для печати исправлений, установленных в другом текстовом файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...