ดังนั้นฉันจึงมีโมดูล PoshWSUS และสคริปต์ที่รันบน WSUS และสร้างไฟล์ CSV ฉันพยายามอัปเดตเพื่อให้มี วันที่แพทช์ล่าสุด คอลัมน์ แต่มีปัญหาในการคิดออก
นำเข้าโมดูล -ชื่อ poshwsus -บังคับ
นำเข้าโมดูล - ชื่อ SysDBApi - บังคับ
นำเข้าโมดูล - ชื่อ EncryptedCredential - บังคับ - ErrorAction หยุด
#รับสิทธิ์
$cred = นำเข้า-Clixml 'E:\WCO\transit.xml'
$SysDBcred = นำเข้า-Clixml 'E:\WCO\SysDBCred.xml'
$UseSSL = $จริง
$พอร์ต = 8530
$Date = รับวันที่ -รูปแบบ dd-MM-yyyy
$Time = รับวันที่ -รูปแบบ HHmmss
$ชื่อไฟล์ = "$($env:COMPUTERNAME)_$($วันที่)_$($เวลา)"
[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") | ไม่เป็นโมฆะ
เชื่อมต่อ PSWSUSServer -WsusServer $env:COMPUTERNAME -พอร์ต $พอร์ต
$ClientInfoHash = รับ PSWSUSClient |
Group-Object - รหัสคุณสมบัติ -AsHashTable -AsString
$UpdateScope = ใหม่ PSWSUSUpdateScope -UpdateApprovalActions ติดตั้ง -ExcludedInstallationStates ไม่สามารถใช้ได้
$Classifications = รับ-PSWSUSClassification | Where-Object {$_.Title -eq "การอัปเดตความปลอดภัย" }
$UpdateScope.Classifications.AddRange($การจัดประเภท)
$WsusData = รับ PSWSUSUpdateSummaryPerClient -UpdateScope $UpdateScope
$WsusData |
Select-Object @{name="ชื่อคอมพิวเตอร์";Expression={($ClientInfoHash[$_.ComputerTargetID].FullDomainName).split(".",2) | เลือก - แรก 1}},
@{name="ชื่อโดเมน";Expression={
ถ้า ( ($ClientInfoHash[$_.ComputerTargetID].FullDomainName).split(".",2)[1])
{
($ClientInfoHash[$_.ComputerTargetID].FullDomainName).split(".",2) | เลือก - สุดท้าย 1
}
อื่น
{
"กลุ่มงาน"
}
}},
@{name="Customer";Expression={(Get-SysDBHost -Credentials $SysDBcred -ComputerName ( ($ClientInfoHash[$_.ComputerTargetID].FullDomainName).split(".",2) | เลือก -first 1)) .ลูกค้า}},
@{name="สถานะการรายงานล่าสุด";Expression={$ClientInfoHash[$_.ComputerTargetID].LastReportedStatusTime}},
@{name="Required Updates";expression={$_.needed}},
@{name="Total Updates";expression={($_.Installed+$_.Needed+$_.PendingReboot+$_.Failed)}},
@{name="% ของการปฏิบัติตาม";expression={"$([math]::Round((($_.Installed / ($_.Installed+$_.Needed+$_.PendingReboot+$_.Failed)) * 100),0))%"}},
@{name="ระบบปฏิบัติการ";Expression={$ClientInfoHash[$_.ComputerTargetID].OSDescription}}|
ส่งออก Csv -เส้นทาง "E:\Reports\$($ชื่อไฟล์)_UpdatesStatus.csv" -NoTypeInformation -เข้ารหัส "utf8" -ตัวคั่น ";"
บนเซิร์ฟเวอร์ WSUS อื่น เราใช้คำสั่ง sqlcmd และ SQL เพื่อรับข้อมูลนี้ และส่วนที่รับข้อมูลนี้จะมีลักษณะดังนี้:
เลือก LIP.FullDomainName เป็น 'ชื่อเซิร์ฟเวอร์', LIP.GroupName เป็น 'ชื่อกลุ่ม',
LIP.CreationDate เป็น 'วันที่ติดตั้งแพตช์ล่าสุด' กรณีที่ NUP.NumUPatches เป็น NULL แล้ว 0 อื่น ๆ NUP.NumUPatches END เป็น 'จำนวนแพตช์ที่ต้องการ' จาก LATESTINSTPATCH LIP ซ้าย เข้าร่วม NumOfUNINSTPATCH NUP บน LIP.ComputerID=NUP.ComputerID
สั่งซื้อโดย NUP.NumUPatches
ตาม https://docs.microsoft.com/en-us/previous-versions/windows/desktop/bb410149(v=vs.85)
มันอยู่ใน PUBLIC_VIEWS.vUpdate แต่จะทำงานกับสิ่งนี้ใน PoshWSUS ได้อย่างไร