Puncte:0

PoshWSUS - cum să obțineți data ultimei corecții pe server?

drapel jp

deci am acest modul PoshWSUS și un script care rulează pe WSUS și face un fișier CSV. Încerc să-l actualizez astfel încât să conțină și el data ultimului patch coloană, dar întâmpinați probleme în a înțelege

Import-Module -name poshwsus -force
Import-modul -nume SysDBApi -force
Import-module -name EncryptedCredential -force -ErrorAction Stop

#obține acreditări
$cred = Import-Clixml „E:\WCO\transit.xml”
$SysDBcred = Import-Clixml „E:\WCO\SysDBCred.xml”
$UseSSL = $True
$Port = 8530
$Date = get-date -Format zz-LL-aaaa
$Time = get-date -format HHmmss
$Filename = „$($env:COMPUTERNAME)_$($Date)_$($Time)”


[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") | out-null

Connect-PSWSUSServer -WsusServer $env:COMPUTERNAME -Port $Port
$ClientInfoHash = Get-PSWSUSClient | 
    Group-Object -Property Id -AsHashTable -AsString 
$UpdateScope = New-PSWSUSUpdateScope -UpdateApprovalActions Instalare -ExcludedInstallationStates NotApplicable 
$Classifications = Get-PSWSUSClassification | Unde-Object {$_.Title -eq „Actualizări de securitate” }
$UpdateScope.Classifications.AddRange($Classifications)
$WsusData = Get-PSWSUSUpdateSummaryPerClient -UpdateScope $UpdateScope
$WsusData | 
    Select-Object @{name="Nume computer";Expresie={($ClientInfoHash[$_.ComputerTargetID].FullDomainName).split(".",2) | selectați -primul 1}},
                  @{name="Nume domeniu";Expresie={
                      if ( ($ClientInfoHash[$_.ComputerTargetID].FullDomainName).split(".",2)[1])
                      {
                        ($ClientInfoHash[$_.ComputerTargetID].FullDomainName).split(".",2) | selectați -ultimul 1
                      }
                      altfel
                      {
                        „GRUP DE LUCRU”
                      }
                  }},

                  @{name="Customer";Expression={(Get-SysDBHost -Credentials $SysDBcred -ComputerName ( ($ClientInfoHash[$_.ComputerTargetID].FullDomainName).split(".",2) | selectați -primul 1)) .Client}},
                  @{name="Ultima stare raportată";Expresie={$ClientInfoHash[$_.ComputerTargetID].LastReportedStatusTime}},
                  @{name="Actualizări necesare";expression={$_.needed}}, 
                  @{name="Total Updates";expression={($_.Installed+$_.Needed+$_.PendingReboot+$_.Failed)}}, 
                  @{name="% Of Compliance";expression={"$([math]::Round((($_.Instalat / ($_.Instalat+$_.Necesar+$_.PendingReboot+$_.Failed)) * 100),0))%"}}, 
                  @{name="Sistem de operare";Expression={$ClientInfoHash[$_.ComputerTargetID].OSDescription}}|
    Export-Csv -Calea "E:\Rapoarte\$($Filename)_UpdatesStatus.csv" -NoTypeInformation -Encoding "utf8" -Delimiter ";" 

Pe un alt server WSUS folosim interogări sqlcmd și SQL pentru a obține aceste date, iar partea care primește aceste informații arată astfel:

SELECTAȚI LIP.FullDomainName ca „Nume server”, LIP.GroupName ca „Nume grup”,
LIP.CreationDate ca „Cea mai recentă dată de instalare a patch-urilor”, CASE WHEN NUP.NumUPatches este NULL THEN 0 ELSE NUP.NumUPatches END ca „Numărul de corecții necesare” FROM LATETINSTPATCH LIP LEFT JOIN NumOfUNINSTPATCH NUP ON LIP.NumUPatches=ComputerIDNUP.ComputerID=
COMANDĂ DE NUP.NumUPatches

Conform https://docs.microsoft.com/en-us/previous-versions/windows/desktop/bb410149(v=vs.85) este în PUBLIC_VIEWS.vUpdate, dar cum să lucrezi cu asta în PoshWSUS?

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.