운영체제 (LNX,WIN)

Windows 로컬 보안 정책 및 설정 상태값 수집하여 컴플라이언스 모니터링

날으는물고기 2024. 4. 23. 00:15

윈도우에서 secedit 명령어를 사용하여 로컬 보안 계정 정책 정보를 수집하고, 특정 기준을 위반한 경우 알람을 발생시키며, 기존 정책을 강제로 적용하는 파워셸 스크립트를 작성하는 과정은 다음과 같습니다.

  1. 로컬 보안 정책 정보 수집: secedit /export 명령어를 사용하여 현재 시스템의 보안 설정을 파일로 내보냅니다.
  2. 정책 파일 분석: 내보낸 설정 파일을 분석하여 특정 기준을 위반하는 설정을 찾습니다.
  3. 기준 위반 시 알람 발생: 기준을 위반하는 설정이 발견되면 사용자에게 알립니다.
  4. 정책 강제 적용: secedit /configure 명령어를 사용하여 원하는 보안 정책을 시스템에 다시 적용합니다.

아래는 이 과정을 수행하는 간단한 파워셸 스크립트 예제입니다. 이 예제에서는 최소 비밀번호 길이를 체크하는 것을 기준으로 삼았으나, 실제 요구 사항에 따라 다른 설정을 검사하고 조정해야 할 수 있습니다.

# 정책 설정을 내보낼 파일 경로
$exportPath = "C:\security\secpol.cfg"

# 원하는 보안 정책 설정 파일 경로
$policyPath = "C:\security\desired_secpol.cfg"

# 현재 정책 설정 내보내기
secedit /export /cfg $exportPath

# 설정 파일을 분석하여 최소 비밀번호 길이 확인 (예: 8자 이상이어야 함)
$minPasswordLength = (Get-Content $exportPath | Where-Object { $_ -like "MinimumPasswordLength =*" }).Split('=')[1].Trim()

# 기준을 위반하는 경우 알람 발생
if ($minPasswordLength -lt 8) {
    Write-Host "알림: 최소 비밀번호 길이 기준을 위반하였습니다. 기준: 8자, 현재 설정: $minPasswordLength자"

    # 원하는 보안 정책 강제 적용
    secedit /configure /db secedit.sdb /cfg $policyPath /overwrite

    Write-Host "원하는 보안 정책을 시스템에 적용하였습니다."
} else {
    Write-Host "모든 보안 정책이 기준을 만족합니다."
}

이 스크립트는 다음 단계로 작동합니다.

  • 현재 시스템의 보안 정책을 C:\security\secpol.cfg 파일로 내보냅니다.
  • 이 파일을 분석하여 MinimumPasswordLength 설정을 찾고, 이 값이 8 미만인지 확인합니다.
  • 만약 최소 비밀번호 길이가 8자 미만이라면 사용자에게 알림을 주고, C:\security\desired_secpol.cfg 파일에 정의된 보안 정책을 시스템에 강제로 적용합니다.
  • 그렇지 않다면, 모든 보안 정책이 기준을 만족한다는 메시지를 출력합니다.

 

이 예제를 실제 사용 환경에 맞게 조정해야 합니다. 특히, $policyPath에 지정된 파일은 시스템에 적용하고자 하는 정확한 보안 정책을 포함해야 하며, 이 파일은 secedit /export를 통해 생성하고 필요한 대로 수정하여 사용할 수 있습니다.

 

매일 정해진 시간에 위 파워셸 스크립트를 실행하기 위해서는 Windows 작업 스케줄러(Task Scheduler)를 사용하는 것이 가장 적합합니다. 작업 스케줄러를 사용하면 시스템 이벤트나 특정 시간에 스크립트를 자동으로 실행할 수 있습니다. 아래 단계에 따라 파워셸 스크립트를 매일 실행되도록 스케줄링하는 방법을 설명합니다.

1. 파워셸 스크립트 파일 저장

위에서 제공된 파워셸 스크립트를 .ps1 확장자를 가진 파일로 저장합니다. 예를 들어, CheckSecPolicy.ps1이라는 이름을 사용할 수 있습니다.

2. 작업 스케줄러 열기

  • 시작 버튼을 클릭하거나 Windows 키를 누릅니다.
  • 작업 스케줄러 또는 Task Scheduler를 검색하고 엽니다.

3. 새 작업 만들기

  • 작업 스케줄러 라이브러리에서 작업 만들기(Create Task)를 클릭합니다.
  • 일반(General) 탭에서 작업에 이름을 지정합니다. 예: Check Security Policy.

4. 보안 옵션 설정

  • 보안 옵션(Security options)에서 작업을 실행할 사용자 계정을 선택합니다. 대부분의 경우 시스템(System) 계정이 적합할 수 있습니다.
  • 최상의 권한으로 실행(Run with highest privileges) 체크박스를 선택합니다.

5. 트리거 설정

  • 트리거(Triggers) 탭을 클릭한 다음 새로 만들기(New...)를 클릭합니다.
  • 시작 작업(Begin the task)에서 일정에 따라(On a schedule)을 선택합니다.
  • 설정(Settings)에서 매일(Daily)을 선택하고 시작 시간을 설정합니다.
  • 확인(OK)을 클릭합니다.

6. 작업 실행

  • 작업(Actions) 탭을 클릭한 다음 새로 만들기(New...)를 클릭합니다.
  • 동작(Action)에서 프로그램 시작(Start a program)을 선택합니다.
  • 프로그램/스크립트(Program/script)powershell.exe를 입력합니다.
  • 인수 추가(Add arguments)에 다음을 입력합니다: -ExecutionPolicy Bypass -File "C:\path\to\CheckSecPolicy.ps1" (여기서 C:\path\to\CheckSecPolicy.ps1는 실제 스크립트 파일의 경로로 교체해야 합니다.)
  • 확인(OK)을 클릭합니다.

7. 설정 완료

  • 모든 설정을 마쳤다면, 확인(OK)을 클릭하여 작업을 저장합니다.
  • 필요한 경우, 작업 스케줄러에 설정된 작업의 속성을 나중에 수정할 수 있습니다.

 

이제 설정한 시간에 매일 자동으로 파워셸 스크립트가 실행됩니다. 이 스케줄링을 통해 시스템의 보안 정책이 지속적으로 모니터링되고 필요한 조치가 자동으로 취해질 수 있습니다.

 

Windows 환경에서 계정의 "사용 기간 제한 없음" 옵션을 확인하고, 필요한 경우 이를 강제로 해제하는 작업은 파워셸을 사용하여 수행할 수 있습니다. 이 과정에서는 먼저 모든 사용자 계정의 패스워드 만료 정책을 검사한 후, 기준에 맞지 않는 계정(즉, "사용 기간 제한 없음"이 설정된 계정)을 찾아 해당 설정을 해제합니다.

 

Active Directory 환경에서는 Set-ADUser cmdlet을 사용하여 이러한 변경을 적용할 수 있지만, 로컬 컴퓨터 계정에 대해서는 net user 명령어와 파워셸 스크립트를 조합하여 작업을 수행해야 합니다. 아래 예제는 로컬 컴퓨터에서 작동합니다.

스크립트 예제

이 스크립트는 모든 로컬 계정을 검사하여 "사용 기간 제한 없음" 옵션이 설정된 계정을 찾고, 해당 설정을 해제합니다.

# 로컬 계정 목록을 가져옵니다.
$accounts = Get-LocalUser

foreach ($account in $accounts) {
    # 각 계정에 대해 'Password never expires' 옵션이 설정되어 있는지 확인합니다.
    $passwordNeverExpires = ($account | Select-Object -ExpandProperty PasswordNeverExpires)

    if ($passwordNeverExpires -eq $true) {
        # 'Password never expires' 옵션이 설정된 경우, 해당 설정을 해제합니다.
        $username = $account.Name
        Write-Host "사용 기간 제한 없음 옵션이 설정된 계정 발견: $username. 옵션 해제 중..."
        # net user 명령어를 사용하여 패스워드 만료 정책을 변경합니다.
        net user $username /expires:never
        # 패스워드 만료 설정을 해제합니다.
        net user $username /logonpasswordchg:no
    }
}

스크립트 설명

  1. Get-LocalUser cmdlet을 사용하여 시스템의 모든 로컬 계정을 가져옵니다.
  2. 각 계정에 대해 PasswordNeverExpires 속성이 $true인지 확인합니다. 이는 "사용 기간 제한 없음" 옵션이 설정되어 있는지를 나타냅니다.
  3. 만약 어떤 계정에서 이 옵션이 설정되어 있다면, net user 명령어를 사용하여 해당 계정의 "사용 기간 제한 없음" 옵션을 해제합니다. 여기서 /expires:never 옵션은 사용자 계정의 만료 날짜를 설정하고, /logonpasswordchg:no는 사용자가 다음 로그온 시 비밀번호를 변경하지 않도록 설정합니다.

주의사항

  • 이 스크립트는 로컬 사용자 계정에만 적용됩니다. Active Directory 환경에서는 다른 방법을 사용해야 합니다.
  • 스크립트를 실행하기 전에는 항상 해당 변경 사항이 조직의 정책과 일치하는지 확인하십시오.
  • 스크립트를 실행하기 전에 관리자 권한으로 파워셸을 실행해야 합니다.
  • 변경 사항이 예상대로 적용되었는지 확인하기 위해, 변경 후에는 계정 설정을 검토하는 것이 좋습니다.

 

이 스크립트는 단순히 로컬 계정에 대한 "사용 기간 제한 없음" 옵션을 해제하는 예제를 제공합니다. 실제 사용 환경에서는 보다 복잡한 조건과 정책이 적용될 수 있으므로, 필요에 따라 스크립트를 조정해야 할 수 있습니다.

 

화면 보호기 설정을 체크하고, 설정된 기준값을 벗어난 경우 강제로 기준값으로 적용하는 작업을 수행하기 위해, 파워셸 스크립트를 사용할 수 있습니다. 이러한 설정은 레지스트리를 통해 관리되므로, 레지스트리 항목을 조회하고 수정하는 방식으로 진행됩니다.

스크립트 예제

아래의 스크립트는 두 가지 주요 작업을 수행합니다.

  1. 현재 화면 보호기 시간 초과 값을 검사합니다.
  2. 설정된 값이 기준값(예: 10분)을 벗어난 경우, 이를 기준값으로 강제 적용합니다.
# 화면 보호기 시간 초과 값의 레지스트리 경로
$regPath = "HKCU:\Software\Policies\Microsoft\Windows\Control Panel\Desktop"
$timeoutValueName = "ScreenSaveTimeOut"
$desiredTimeout = 600 # 10분

# 현재 화면 보호기 시간 초과 값을 조회합니다.
$currentTimeout = Get-ItemProperty -Path $regPath -Name $timeoutValueName -ErrorAction SilentlyContinue

if ($currentTimeout -eq $null) {
    Write-Host "화면 보호기 시간 초과 값이 설정되어 있지 않습니다. 기준값으로 설정합니다."
    New-ItemProperty -Path $regPath -Name $timeoutValueName -Value $desiredTimeout -PropertyType String -Force
} elseif ($currentTimeout.$timeoutValueName -ne $desiredTimeout) {
    Write-Host "화면 보호기 설정이 기준값과 다릅니다. 기준값으로 재설정합니다."
    Set-ItemProperty -Path $regPath -Name $timeoutValueName -Value $desiredTimeout
} else {
    Write-Host "화면 보호기 설정이 기준값에 맞게 설정되어 있습니다."
}

스크립트 설명

  1. 레지스트리 경로 HKCU:\Software\Policies\Microsoft\Windows\Control Panel\Desktop 및 화면 보호기 시간 초과 값의 이름 ScreenSaveTimeOut을 정의합니다. 기준값으로 600초(=10분)을 사용합니다.
  2. Get-ItemProperty를 사용하여 현재 설정된 화면 보호기 시간 초과 값을 조회합니다.
  3. 해당 레지스트리 값이 존재하지 않는 경우, New-ItemProperty를 사용하여 기준값을 설정합니다.
  4. 현재 값이 기준값과 다른 경우, Set-ItemProperty를 사용하여 기준값으로 변경합니다.
  5. 현재 설정이 이미 기준값에 맞는 경우, 적절한 메시지를 출력합니다.

주의사항

  • 이 스크립트는 현재 사용자(HKCU, 즉 HKEY_CURRENT_USER)의 레지스트리 설정을 변경합니다. 다른 사용자의 설정을 변경하려면 해당 사용자의 레지스트리 허브를 대상으로 해야 합니다.
  • 관리자 권한으로 파워셸을 실행할 필요가 있을 수 있습니다.
  • 레지스트리를 수정하기 전에는 항상 현재 설정의 백업을 권장합니다.
  • 실제 환경에서 이 스크립트를 배포하기 전에는 테스트 환경에서 충분히 테스트해야 합니다.

 

이 스크립트는 화면 보호기 시간 초과 설정을 관리하는 간단한 방법을 제공합니다. 조직의 보안 정책이나 기준에 따라 필요한 경우 이 스크립트를 조정하여 사용할 수 있습니다.

 

화면 보호기 해제 시 비밀번호 입력을 요구하는 옵션을 체크하고, 이 설정이 비활성화된 경우 활성화하는 기능을 기존 스크립트에 추가하는 것은 레지스트리 값을 조정하여 이루어질 수 있습니다. 이러한 설정은 보통 "ScreenSaverIsSecure" 레지스트리 키를 통해 관리됩니다.

 

아래는 기존 화면 보호기 시간 초과 설정을 검사하고 조정하는 스크립트에 화면 보호기 해제 시 비밀번호 입력 요구 옵션을 체크하도록 추가한 예제입니다.

스크립트 업데이트

# 화면 보호기 설정의 레지스트리 경로
$regPath = "HKCU:\Software\Policies\Microsoft\Windows\Control Panel\Desktop"
$timeoutValueName = "ScreenSaveTimeOut"
$secureValueName = "ScreenSaverIsSecure"
$desiredTimeout = 600 # 10분
$desiredSecureSetting = "1" # 화면 보호기 해제 시 비밀번호 요구 활성화

# 현재 화면 보호기 시간 초과 값을 조회합니다.
$currentTimeout = Get-ItemProperty -Path $regPath -Name $timeoutValueName -ErrorAction SilentlyContinue
# 화면 보호기 해제 시 비밀번호 입력 요구 설정 조회
$currentSecureSetting = Get-ItemProperty -Path $regPath -Name $secureValueName -ErrorAction SilentlyContinue

# 시간 초과 값 설정
if ($currentTimeout -eq $null) {
    Write-Host "화면 보호기 시간 초과 값이 설정되어 있지 않습니다. 기준값으로 설정합니다."
    New-ItemProperty -Path $regPath -Name $timeoutValueName -Value $desiredTimeout -PropertyType String -Force
} elseif ($currentTimeout.$timeoutValueName -ne $desiredTimeout) {
    Write-Host "화면 보호기 설정이 기준값과 다릅니다. 기준값으로 재설정합니다."
    Set-ItemProperty -Path $regPath -Name $timeoutValueName -Value $desiredTimeout
} else {
    Write-Host "화면 보호기 시간 설정이 기준값에 맞게 설정되어 있습니다."
}

# 비밀번호 요구 설정
if ($currentSecureSetting -eq $null) {
    Write-Host "화면 보호기 해제 시 비밀번호 입력 요구 설정이 없습니다. 활성화합니다."
    New-ItemProperty -Path $regPath -Name $secureValueName -Value $desiredSecureSetting -PropertyType String -Force
} elseif ($currentSecureSetting.$secureValueName -ne $desiredSecureSetting) {
    Write-Host "화면 보호기 해제 시 비밀번호 입력 요구 설정이 기준과 다릅니다. 활성화합니다."
    Set-ItemProperty -Path $regPath -Name $secureValueName -Value $desiredSecureSetting
} else {
    Write-Host "화면 보호기 해제 시 비밀번호 입력 요구 설정이 이미 활성화되어 있습니다."
}

스크립트 설명

  • 먼저 화면 보호기 시간 초과 값(ScreenSaveTimeOut)과 화면 보호기 해제 시 비밀번호 입력 요구(ScreenSaverIsSecure)에 대한 현재 설정을 조회합니다.
  • 각 설정에 대해, 기준값과 다를 경우 해당 값을 기준값으로 변경합니다. 화면 보호기 시간 초과 값은 600초(10분)로, 비밀번호 요구는 활성화(1)로 설정합니다.
  • 설정이 이미 기준값에 맞는 경우, 적절한 메시지를 출력합니다.

주의사항

  • 이 스크립트는 현재 사용자의 설정만 변경합니다(HKCU). 다른 사용자나 전역 설정을 변경하려면 해당 레지스트리 키를 조정해야 합니다.
  • 레지스트리 수정은 주의해서 수행해야 합니다. 변경 전에는 반드시 레지스트리 설정의 백업을 권장합니다.
  • 관리자 권한으로 파워셸을 실행해야 할 수 있습니다.
  • 실제 환경에서 배포 전에는 테스트 환경에서 충분히 검증해야 합니다.

 

이 업데이트된 스크립트를 통해, 화면 보호기 시간 초과 설정과 함께 화면 보호기 해제 시 비밀번호 입력을 요구하는 옵션이 모두 기준에 맞게 설정되도록 관리할 수 있습니다.

 

Windows 업데이트 현황을 확인하고 현재 설치된 업데이트의 상태를 파악하는 작업은 Windows Update API 또는 PowerShell을 사용하여 수행할 수 있습니다. 여기서는 PowerShell을 활용하여 설치된 업데이트와 해당 상태를 체크하는 방법을 소개합니다.

PowerShell 스크립트 예제

아래의 PowerShell 스크립트는 시스템에 설치된 업데이트 목록과 각 업데이트의 설치 상태를 조회합니다.

# Windows Update 관련 COM 오브젝트 생성
$updateSession = New-Object -ComObject Microsoft.Update.Session
$updateSearcher = $updateSession.CreateUpdateSearcher()

# 설치된 업데이트 검색
$historyCount = $updateSearcher.GetTotalHistoryCount()
$updateHistory = $updateSearcher.QueryHistory(0, $historyCount)

# 각 업데이트의 상세 정보 출력
foreach ($update in $updateHistory) {
    $title = $update.Title
    $installedOn = $update.Date
    $description = $update.Description
    $operation = switch ($update.Operation) {
        1 {"Installation"}
        2 {"Uninstallation"}
        3 {"Other"}
    }
    $result = switch ($update.ResultCode) {
        1 {"In Progress"}
        2 {"Succeeded"}
        3 {"Succeeded With Errors"}
        4 {"Failed"}
        5 {"Aborted"}
    }

    # 출력 형식
    Write-Host "Title: $title"
    Write-Host "Installed On: $installedOn"
    Write-Host "Description: $description"
    Write-Host "Operation: $operation"
    Write-Host "Result: $result"
    Write-Host "-----------------------------"
}

스크립트 설명

  1. COM 오브젝트 초기화: Windows Update 관련 작업을 위해 Microsoft.Update.Session COM 오브젝트를 생성합니다.
  2. 업데이트 검색 객체 생성: 생성된 세션을 바탕으로 업데이트 검색 객체를 생성합니다.
  3. 설치된 업데이트 목록 조회: QueryHistory 메서드를 사용하여 설치된 업데이트의 전체 이력을 조회합니다.
  4. 업데이트 정보 출력: 각 업데이트의 제목, 설치 날짜, 설명, 수행된 작업(설치/제거 등), 결과(성공/실패 등)를 출력합니다.

주의사항

  • 이 스크립트는 관리자 권한으로 실행되어야 합니다. 일부 정보는 관리자 권한이 없으면 제대로 조회되지 않을 수 있습니다.
  • PowerShell 스크립트를 사용할 때는 스크립트 실행 정책이 제한적인 경우가 많으므로, 스크립트 실행 정책을 확인하거나 필요에 따라 조정할 수 있어야 합니다(Set-ExecutionPolicy).
  • 시스템의 업데이트 상태를 정기적으로 체크하려면 작업 스케줄러를 통해 이 스크립트를 주기적으로 실행하도록 설정할 수 있습니다.

 

이 스크립트를 통해 Windows 업데이트의 현재 상태를 체계적으로 모니터링하고 관리하는 것이 가능해집니다, 어떤 업데이트가 성공적으로 설치되었는지, 어떤 업데이트가 실패했는지 파악할 수 있습니다.

 

시스템에 특정 KB(지식 기반) 코드가 포함되어 있는지를 확인하고, 이를 수동으로 입력받거나 여러 시스템 중 가장 최신 값을 사용하여 체크하는 기능을 파워셸 스크립트에 추가하는 방법을 설명하겠습니다. 이를 위해 먼저 사용자로부터 KB 코드를 입력받는 과정을 추가하고, 설치된 업데이트 내역을 검사하여 해당 KB 코드가 포함되어 있는지 확인합니다.

스크립트 예제

아래 스크립트는 사용자로부터 최신 KB 코드를 입력받고, 시스템에 해당 KB가 설치되어 있는지를 확인합니다.

# Windows Update 관련 COM 오브젝트 생성
$updateSession = New-Object -ComObject Microsoft.Update.Session
$updateSearcher = $updateSession.CreateUpdateSearcher()

# 사용자로부터 최신 KB 코드 입력받기
$latestKB = Read-Host "최신 KB 코드를 입력하세요 (예: KB1234567)"

# 설치된 업데이트 검색
$historyCount = $updateSearcher.GetTotalHistoryCount()
$updateHistory = $updateSearcher.QueryHistory(0, $historyCount)

# 입력받은 KB 코드가 설치되었는지 확인
$found = $false
foreach ($update in $updateHistory) {
    if ($update.Title -like "*$latestKB*") {
        $found = $true
        Write-Host "설치된 업데이트: $($update.Title)"
        Write-Host "설치일: $($update.Date)"
        break
    }
}

if (-not $found) {
    Write-Host "시스템에 $latestKB 업데이트가 설치되어 있지 않습니다."
}

스크립트 설명

  1. COM 오브젝트 초기화: Windows Update 관련 작업을 위해 Microsoft.Update.Session COM 오브젝트를 생성합니다.
  2. 사용자 입력: Read-Host를 사용하여 사용자로부터 최신 KB 코드를 입력받습니다.
  3. 업데이트 이력 조회: QueryHistory 메서드를 사용하여 시스템에 설치된 업데이트의 전체 이력을 조회합니다.
  4. 특정 KB 검색: 조회된 업데이트 목록을 순회하면서 입력받은 KB 코드가 제목에 포함되어 있는지 확인합니다.
  5. 결과 출력: 해당 KB가 설치되어 있으면 설치된 업데이트의 제목과 설치일을 출력하고, 설치되어 있지 않으면 알림 메시지를 출력합니다.

주의사항

  • 이 스크립트는 관리자 권한으로 실행되어야 합니다. 일부 정보는 관리자 권한이 없으면 제대로 조회되지 않을 수 있습니다.
  • Read-Host를 통해 입력받은 KB 코드는 유효한 형식인지 검증이 필요할 수 있습니다. 입력 형식 검증 로직을 추가하여 사용자의 실수를 줄일 수 있습니다.
  • 스크립트 실행 정책이 제한적인 경우 Set-ExecutionPolicy를 통해 조정할 수 있습니다.

 

이 스크립트는 사용자가 직접 KB 코드를 입력하고, 시스템에 해당 KB가 설치되어 있는지 확인할 수 있게 해 줍니다. 이를 통해 시스템의 보안 업데이트 상태를 효과적으로 관리할 수 있습니다.

 

Get-HotFix 명령어는 PowerShell을 사용하여 Windows 시스템에서 특정 핫픽스, 서비스 팩 또는 업데이트가 설치되었는지 확인하는 데 사용할 수 있는 간편하고 효율적인 방법입니다. 이 명령어를 사용하면 시스템에서 특정 KB(Article ID)가 설치되었는지 직접적으로 확인할 수 있습니다.

Get-HotFix 명령어 사용법

아래는 Get-HotFix를 사용하여 시스템에 특정 KB가 설치되었는지 확인하는 PowerShell 스크립트 예제입니다.

# 사용자로부터 KB 코드 입력받기
$kbId = Read-Host "확인할 KB 코드를 입력하세요 (예: KB1234567)"

try {
    # Get-HotFix를 사용하여 특정 KB 검색
    $hotfix = Get-HotFix -Id $kbId
    if ($hotfix) {
        Write-Host "시스템에 $kbId 핫픽스가 설치되어 있습니다."
        Write-Host "설치 날짜: $($hotfix.InstalledOn)"
    }
} catch {
    Write-Host "시스템에 $kbId 핫픽스가 설치되어 있지 않습니다."
}

스크립트 설명

  1. 사용자 입력: Read-Host를 사용하여 사용자로부터 검사할 KB 코드를 입력받습니다.
  2. 핫픽스 검사: Get-HotFix 명령어를 사용하여 입력받은 KB 코드에 해당하는 핫픽스가 시스템에 설치되었는지 확인합니다.
  3. 결과 출력: 설치된 경우, 해당 핫픽스의 설치 날짜와 함께 설치 사실을 알리고, 설치되지 않은 경우 해당 사실을 알립니다.

주의사항

  • Get-HotFix 명령어는 관리자 권한으로 실행된 PowerShell 세션에서 사용해야 할 수 있습니다.
  • 일부 시스템에서는 InstalledOn 정보가 정확하지 않게 보고될 수 있으므로, 다른 소스를 통해 확인하는 것이 좋습니다.
  • 이 스크립트는 설치된 업데이트만을 확인하며, 최신 업데이트가 시스템에 적용되어야 하는지는 판단하지 않습니다.

 

이 방법은 특정 업데이트가 시스템에 적용되었는지 신속하게 확인할 때 유용하며, 특히 보안 감사나 컴플라이언스 검증 과정에서 활용될 수 있습니다.

728x90