お客様のパソコンをたくさん(といっても自分は一度に設定するのは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アドレス]”
“[既定プリンター]”
“[全プリンター情報]”
“[インストール済みアプリ]”
が保存されています。






コメント