아래 PS 스크립트 수정에 대한 약간의 제안을 요청합니다. 현재 나는이 스크립트가 배포 될 위치의 IP 주소로 37 줄의 IP 주소의 처음 3 옥텟을 수동으로 변경해야합니다. 누군가가 스크립트를 수정할 수있는 방법을 알고 있는지 확인하여 처음 세 옥텟을 수동으로 변경할 필요가 없으므로 마지막 옥텟은 항상 1-60이됩니다. 호스트 시스템에서 PS 버전 2.0Powershell IP 주소
Function Check-Patches{
Param($Filename)
$logname = "C:\temp\PatchVerify\$FileName.csv"
[xml]$x = Get-Content "C:\Users\Cambridge\SecurityScans\$FileName.mbsa"
$PatchStatus = @()
#This list is created based on a text file that is provided.
$monthlyPatches = Get-Content "C:\Temp\PatchVerify\Patches_NA.txt" | ? {$_ -match "-KB(?<KB>\d+)"} | % { $matches.KB}
#Create objects for all the patches in the updatelog that were in the monthly list.
Switch ($x | % {$_.SecScan} | % {$_.Check} | ? {$_.id -eq 500} | % {$_.detail} | % {$_.updatedata} | ? {$monthlyPatches -contains $_.KBID})
{
{$_.isinstalled -eq "true"}
{
$PatchStatus += New-Object PsObject -property @{Device=$FileName; Patch=$_.KBID; Present="YES"}
Continue
}
{$_.isinstalled -eq "false"}
{
$PatchStatus += New-Object PsObject -property @{Device=$FileName; Patch=$_.KBID; Present="NO"}
Continue
}
}
$detectedPatches = $PatchStatus | % {$_.Patch}
#Populate all of the monthly patches that weren't found on the machine as installed or failed
$monthlypatches | ? {$detectedPatches -notcontains $_} | % { $PatchStatus += New-Object PsObject -property @{Device=$FileName; Patch=$_; Present="Unknown"} }
#Output results
$PatchStatus
}
1..60 | % { Check-Patches "172.26.210.$_" } | Export-Csv "C:\temp\PatchVerify\$env:ComputerName.csv" -NoTypeInformation
아니요, 직접 수정해야 할 것 같지 않습니다. 그렇게 말하고있다. 너는 무엇을 바꾸고 있니? 목록 있어요? 각 서브넷이 정의되었지만 텍스트 파일을 가져 와서 루프 할 수 있습니까? – Matt
IP에서 사이트로의 변경은 스크립트에 나열된 것이 내가 테스트 환경에서 사용하고있는 것입니다. 각 서브넷을 반복 할 수있는 텍스트 파일의 예가 있습니까? – user2637664
정말로, 나는 당신의 질문에 이미 대답했다. 답변을 수락하고 새 질문을 게시해야합니다. 그러나 CSV에서 다른 패치를 얻는 것과 관련된 새로운 질문에 대해서는 Patches_NA.txt 파일의 내용이 어떻게 나타나는지 샘플을 보여 주어야합니다. 그래서 우리는 현재 작업하고있는 것을 알고 있습니다. – TheMadTechnician