PowerShell版

役割、機能の一覧を表示

$host_name = hostname
$file_name = $host_name+"_function.csv"
Get-WindowsFeature | Export-Csv $file_name -Encoding Default

サービスの一覧を表示

$host_name = hostname
$file_name = $host_name+"_services.csv"
$triggers = Get-ChildItem "HKLM:\SYSTEM\CurrentControlSet\Services" |
    Where-Object { $_.GetSubkeyNames().Contains("TriggerInfo") } |
    ForEach-Object { $_.Name.Split("\")[-1] }

$startMode = @{ Manual = "手動"; Disabled = "無効"; Auto = "自動"; Unknown = "不明" }
$startOption = @{ 01 = " (トリガー開始)"; 10 = " (遅延開始)"; 11 = " (遅延開始、トリガー開始)" }

$serviceData = Get-CimInstance -ClassName Win32_Service | Select-Object @(
    @{ n = "表示名";              e = { $_.DisplayName } }
    @{ n = "スタートアップの種類"; e = { $startMode[$_.StartMode] + $startOption[10 * ($_.StartMode -eq "Auto" -and $_.DelayedAutoStart) + $triggers.Contains($_.Name)] } }
    @{ n = "状態";                e = { if($_.State -eq "Running") { "実行" } else { "停止" } } }
)
 
$serviceData | Export-Csv $file_name -Encoding Default

更新プログラム履歴を表示する

$host_name = hostname
$file_name = $host_name+"_secpatch.csv"
Get-WMIObject Win32_QuickFixEngineering | Export-Csv $file_name -Encoding Default

インストール済みアプリケーションの一覧

$host_name = hostname
$file_name = $host_name+"_software.csv"
Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall |
  %{Get-ItemProperty $_.PsPath}  |
  sort displayname  |
  select DisplayName,Publisher | 
  Export-Csv $file_name -Encoding Default
  

など

上記をまとめると

#ホスト名
$host_name = hostname
 
#役割情報、機能情報の一覧
$file_name = $host_name+"_function.csv"
Get-WindowsFeature | Export-Csv $file_name -Encoding Default 
 
# サービスの一覧
$triggers = Get-ChildItem "HKLM:\SYSTEM\CurrentControlSet\Services" |
    Where-Object { $_.GetSubkeyNames().Contains("TriggerInfo") } |
    ForEach-Object { $_.Name.Split("\")[-1] }

$startMode = @{ Manual = "手動"; Disabled = "無効"; Auto = "自動"; Unknown = "不明" }
$startOption = @{ 01 = " (トリガー開始)"; 10 = " (遅延開始)"; 11 = " (遅延開始、トリガー開始)" }
$serviceData = Get-CimInstance -ClassName Win32_Service | Select-Object @(
    @{ n = "表示名";              e = { $_.DisplayName } }
    @{ n = "スタートアップの種類"; e = { $startMode[$_.StartMode] + $startOption[10 * ($_.StartMode -eq "Auto" -and $_.DelayedAutoStart) + $triggers.Contains($_.Name)] } }
    @{ n = "状態";                e = { if($_.State -eq "Running") { "実行" } else { "停止" } } }
)
$file_name = $host_name+"_service.csv"
$serviceData | Export-Csv $file_name -Encoding Default

#更新プログラム履歴の一覧 その1
$file_name = $host_name+"_secpatch.csv"
Get-WMIObject Win32_QuickFixEngineering | Export-Csv $file_name -Encoding Default 

#更新プログラム履歴の一覧 その2
$file_name = $host_name+"_patch.txt"
$mySession = New-Object -ComObject Microsoft.Update.Session
$mySearcher = $mySession.CreateUpdateSearcher()
$mySearcher.Search("IsInstalled=1").Updates | ft -a Date,Title > $file_name 

#更新プログラム履歴の一覧 その3
$file_name = $host_name+"_patch.csv"
$session = New-Object -ComObject Microsoft.Update.Session
$searcher = $session.CreateUpdateSearcher()
$results = $searcher.QueryHistory(0, $searcher.GetTotalHistoryCount())
$results|
    where Title -ne $null|
    select @(
        @{L="HotFixId";E={$_.Title -replace '^.*(KB\d+).*$','$1'}},
        "Date",
        "Title",
        "Description"
    ) | 
    Export-Csv $file_name -Encoding Default

#更新プログラム履歴の一覧 その4
wmic qfe list /format:htable > qfelist.htm
 
#インストール済みアプリケーションの一覧
$file_name = $host_name+"_software.csv"
Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall |
  %{Get-ItemProperty $_.PsPath}  |
  sort displayname  |
  select DisplayName,Publisher | 
  Export-Csv $file_name -Encoding Default