2025年3月 ホームページを更新しました。

PC情報取得のバッチ+PowerShell5スクリプト

PC情報収集

お客様のパソコンをたくさん(といっても自分は一度に設定するのは10台ぐらいですが)設定するときに、パソコンのOS情報とか、メーカーのシリアルとか、Officeのバージョンとかを取得する『バッチ+PowerShell5スクリプト』をGoogle先生と、ChatGPTとの共同作業で、作ってみました

バッチは、PowerShellスクリプトを実行するためだけに使用する感じで、バッチを「管理者で実行」にすると、スクリプトが走る感じしています。

まず、実行のバッチファイル

PC-info-get.bat

@echo off
powershell.exe -ExecutionPolicy Bypass -File "%~dp0Save-PCInfo.ps1"
pause

見てわかる通り、Save-PCInfo.ps1というスクリプトを、デフォルト設定でブロックされるため、バイパスして起動しています。

Save-PCInfo.ps1

# === ログファイル保存先 ===
$DateStr = Get-Date -Format "yyyyMMdd"
$ComputerName = $env:COMPUTERNAME
$DesktopPath = "$env:USERPROFILE\Desktop"
$LogFile = "$DesktopPath\${DateStr}_${ComputerName}_info.txt"

# 出力エンコーディングをUTF-8に統一(重要)
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8

try {
    "--- PC情報収集ログ: $DateStr ---`n" | Out-File -FilePath $LogFile -Encoding utf8 -Force

    "[ホスト名]" | Out-File -Append $LogFile -Encoding utf8
    hostname | Out-File -Append $LogFile -Encoding utf8
    "`n" | Out-File -Append $LogFile -Encoding utf8

    "[メーカー・型番・シリアル番号]" | Out-File -Append $LogFile -Encoding utf8
    Get-CimInstance Win32_ComputerSystem | Select-Object Manufacturer, Model | Format-List | Out-File -Append $LogFile -Encoding utf8
    Get-CimInstance Win32_BIOS | Select-Object SerialNumber | Format-List | Out-File -Append $LogFile -Encoding utf8
    "`n" | Out-File -Append $LogFile -Encoding utf8


    "[システム情報]" | Out-File -Append $LogFile -Encoding utf8
    $sysinfo = systeminfo | Out-String
    $sysinfo | Out-File -Append $LogFile -Encoding utf8
    "`n" | Out-File -Append $LogFile -Encoding utf8

    "[IPアドレス]" | Out-File -Append $LogFile -Encoding utf8
    Get-NetIPAddress | Where-Object { $_.AddressState -eq "Preferred" -and ($_.IPAddress -notlike "fe80*") } |
        Select-Object InterfaceAlias, AddressFamily, IPAddress |
        Format-Table -AutoSize | Out-String | Out-File -Append $LogFile -Encoding utf8
    "`n" | Out-File -Append $LogFile -Encoding utf8


   "[既定プリンター]" | Out-File -Append $LogFile -Encoding utf8
     $defaultPrinter = (Get-CimInstance -Namespace root\cimv2 -ClassName Win32_Printer | Where-Object { $_.Default -eq $true }).Name
     $defaultPrinter | Out-File -Append $LogFile -Encoding utf8
   "`n" | Out-File -Append $LogFile -Encoding utf8
   
   
    "[全プリンター情報]" | Out-File -Append $LogFile -Encoding utf8
    Get-CimInstance -Namespace root\cimv2 -Class Win32_Printer | 
      Select-Object Name, DriverName, PortName, Default |
      Format-Table -AutoSize | Out-String | 
      Out-File -Append $LogFile -Encoding utf8
   "`n" | Out-File -Append $LogFile -Encoding utf8


    "[インストール済みアプリ]" | Out-File -Append $LogFile -Encoding utf8
    Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*, `
                     HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |
        Where-Object { $_.DisplayName } |
        Select-Object DisplayName, DisplayVersion, Publisher |
        Sort-Object DisplayName |
        Format-Table -AutoSize | Out-String | Out-File -Append $LogFile -Encoding utf8



    "`n--- 保存完了: $LogFile ---" | Out-File -Append $LogFile -Encoding utf8



    Write-Host "`n==== ログファイルの内容 ====" -ForegroundColor Cyan
    Get-Content $LogFile
}
catch {
    Write-Host "`n[エラー] ログファイルの保存に失敗しました:" -ForegroundColor Red
    Write-Host $_.Exception.Message -ForegroundColor Yellow
}

Write-Host "`n==== ログファイルは以下に保存されました ====" -ForegroundColor Green
Write-Host "$LogFile" -ForegroundColor Yellow

Write-Host "`n[Enter]キーを押すとウィンドウを閉じます..." -ForegroundColor Gray
Read-Host

これを、エンコードはUTF8、改行コードBOMで、上記バッチファイルと同じフォルダに保存します。

上記の、PC-info-get.batを右クリックして、「管理者で実行」すれば、デスクトップ上に今日の日付コンピュータ名.txtとファイルができあがり、そこに
“[ホスト名]”
“[メーカー・型番・シリアル番号]”
“[システム情報]”
“[IPアドレス]”
“[既定プリンター]”
“[全プリンター情報]”
“[インストール済みアプリ]”

が保存されています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA