Найти в Дзене
1 подписчик

#PowerShell #Script #Administration #Скрипты #Администрирование #Пош

Инвентаризация компьютера

[string]$computername = $env:COMPUTERNAME

[string[]]$fragment = "";

$fragment += @"
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>
body { background-color:#dddddd;
font-family:Tahoma;
font-size:12pt; }
td, th { border:1px solid black;
border-collapse:collapse; }
table, tr, td, th { padding: 2px; margin: 0px }
table { margin-left:50px; }
</style>
</head>
<body>
<h1>Инвентаризация компьютера - $computername</h1>
"@

$fragment += gwmi -q ("select * from Win32_ComputerSystem") | `
Select Domain, Manufacturer, Model, Name, PrimaryOwnerName, @{n='Memory(GB)';e={$_.TotalPhysicalMemory / 1GB -as [int]}} | `
ConvertTo-Html -Fragment -PreContent ('<h2>Система</h2>') | Out-String;

$fragment += gwmi -q ("select * from Win32_OperatingSystem") | `
Select SystemDirectory, Organization, BuildNumber, RegisteredUser, SerialNumber, Version, `
@{n='InstallDate';e={([Management.ManagementDateTimeconverter]::ToDateTime($_.installdate))}} | `
ConvertTo-Html -Fragment -PreContent ('<h2>Операционная система</h2>') | Out-String;

$fragment += gwmi -q ("select * from Win32_BaseBoard") | `
Select Manufacturer, Model, Name, SerialNumber, Product | `
ConvertTo-Html -Fragment -PreContent ('<h2>Материнская плата</h2>') | Out-String;

$fragment += gwmi -q ("select * from Win32_Processor") | `
Select Caption, DeviceID, Manufacturer, MaxClockSpeed, Name, SocketDesignation | `
ConvertTo-Html -Fragment -PreContent ('<h2>Процессор</h2>') | Out-String;

$fragment += gwmi -q ("select * from Win32_BIOS") | `
Select SMBIOSBIOSVersion, Manufacturer, Name, SerialNumber, Version | `
ConvertTo-Html -Fragment -PreContent ('<h2>БИОС</h2>') | Out-String;

$fragment += gwmi -q ("select * from Win32_PhysicalMemory") | `
Select Manufacturer, Speed, @{n='Capacity';e={$_.Capacity / 1GB -as [int]}} | `
ConvertTo-Html -Fragment -PreContent ('<h2>Оперативная память</h2>') | Out-String;

$fragment += gwmi -q ("select * from Win32_DiskDrive") | `
Select Partitions, DeviceID, Model, @{n='Size'; e={$_.Size / 1gb -as [int]}} | `
ConvertTo-Html -Fragment -PreContent ('<h2>Физические диски</h2>') | Out-String;

$fragment += gwmi -q ("select * from Win32_LogicalDisk") | `
Select DeviceID, DriveType, `
@{n='Size(GB)';e={$_.Size / 1GB -as [int]}}, `
@{n='FreeSpace(GB)';e={$_.FreeSpace / 1GB -as [int]}} | `
ConvertTo-Html -Fragment -PreContent ('<h2>Логические диски</h2>') | Out-String;

$hives = 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\', `
'HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall';
#, ` 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall';
[array]$appList = $null;

foreach ($hive in $hives) {
if (!(Test-Path $hive)){
continue;
}

$branch = Get-ChildItem $hive

foreach ($b in $branch){
if ($b.GetValue('DisplayName') -eq $null) {
continue;
}

$appList += New-Object PSObject -Property @{
Name = $b.GetValue('DisplayName')
Version = $b.GetValue('DisplayVersion')
Publisher = $b.GetValue('Publisher')
}
}
}

$fragment += $appList | sort Name | `
Select Name, Version, Publisher | `
ConvertTo-Html -Fragment -PreContent ('<h2>Установленные программы</h2>')

$fragment += @'
</body>
</html>
'@

$FilePath = $env:USERPROFILE + '\Desktop\' + $computername + '.htm'
Out-File -FilePath $FilePath -InputObject $fragment
2 минуты