Сценарий Powershell для сбора сведений об оборудовании P C с существующих компьютеров - PullRequest
0 голосов
/ 13 февраля 2020

Привет всем ,

Я надеялся, что кто-то делал этот сценарий раньше. Я ищу сценарий PowerShell для сбора сведений об оборудовании P C в локальной сети. это Windows 7,10 и не в D C.

Подробности, которые я хотел бы получить от каждого P C:

  1. RAM (имя и размер)

  2. CPU (имя и размер)

  3. HDD (имя и размер)

  4. Профили локального пользователя

Возможно ли это (логически я не вижу, как это возможно), поскольку P C не в домене.

Любые предложения будут полезны

Любовь и мир Мои собратья

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

Это подойдет для машин НЕ на домене. Тебе понадобится:

  • IP-адрес (а)
  • Учетные данные администратора для входа на удаленный компьютер

Приведенный ниже синтаксис будет запрашивать Windows7 - Windows10 машин для ОЗУ, ЦП, жесткого диска и профилей пользователей:

wmic /NODE:"127.0.0.1" memorychip get capacity & wmic /NODE:"127.0.0.1" cpu list brief & wmic /NODE:"127.0.0.1" diskdrive get Name, Manufacturer, Model & wmic /NODE:"127.0.0.1" useraccount get name

. В приведенном выше примере я просто использую петлевой IP (запрашивает локальный P C вы включены), но вы можете заменить любой IP-адрес. При необходимости вы также можете указать свои учетные данные в инструменте wmi c. Узнайте больше о wmi c здесь: https://docs.microsoft.com/en-us/windows/win32/wmisdk/wmic

0 голосов
/ 13 февраля 2020

Это должно сработать:

Add-Type -AssemblyName System.Collections

[System.Collections.Generic.List[string]]$hdd = @()

$system = Get-CimInstance CIM_ComputerSystem
$cpu    = Get-CimInstance CIM_Processor
$users  = Get-WmiObject -ComputerName "localhost" -Class Win32_UserAccount -Filter "LocalAccount='True'" |Select PSComputername, Name, Status, Disabled, AccountType, Lockout, PasswordRequired, PasswordChangeable, SID

$driveLetter = 'C'
$currentHdd  = Get-CimInstance Win32_LogicalDisk -Filter "DeviceID = '$($driveletter):'"

while( $currentHdd.DeviceID ) {

    switch( $currentHdd.DriveType ) {
        3 {
            $driveType = "HDD"
            break;
        }
        5 {
            $driveType = "Optical"
            break;
        }
        default {
            $driveType = "Other"
        }
    }

    $drive = $driveletter + ':   ' + $driveType + ("   {0:N2}" -f ($currentHdd.Size/1GB) + " GB  ") + ("{0:N2}" -f ($currentHdd.FreeSpace/1GB) + " GB  ")
    $hdd.Add( $drive )

    $driveLetter = ([char](++([byte]([char]$driveLetter)))).ToString()
    $currentHdd = Get-CimInstance Win32_LogicalDisk -Filter "DeviceID = '$($driveletter):'"
}

$ram = "{0:N2}" -f ($system.TotalPhysicalMemory/1GB) + " GB"
$cpuName = $cpu.Name

"CPU:   $cpuName"
"RAM:   $ram"
"Disks:"
$hdd
"Users:"
$users
...