PDA

Показать полную графическую версию : [решено] Добавит код для серийного Номера


Страниц : [1] 2

rafka
19-11-2024, 10:24
Добрый день !
код слишком длинный и поэтому не мог полностью кидать сюда.
Вопрос такого характера что кто может добавить код после `r`n$(addSp "Manufacturer" 15) : $model" что бы после модель компьютера показывал и Серийник ? Прошу очень помочь



function CompHw {

if (-not $ip){return}
$hst= ((get-wmiobject -list "StdRegProv" -computername $compAdr -namespace root\default).GetStringValue(2147483650,"SOFTWARE\Microsoft\Virtual Machine\Guest\Parameters","HostName")).sValue
$memSum=0; $model=""; $memModule=""
$cpu=(Get-WmiObject -Class CIM_Processor -ComputerName $compAdr).Name | Select-Object -first 1
$cpu=$cpu -replace ' ',' '; $cpu=$cpu -replace ' ',' '; $cpu=$cpu -replace ' ',' ' ;$cpu=$cpu -replace ' ',' '
$cpu=$cpu -replace ' CPU ',' '
$cpu=$cpu -replace 'Intel\(R\) Core\(TM\)2 Duo','Core2Duo'
$cpu=$cpu -replace 'Intel\(R\) Pentium\(R\)','Pentium'
$cpu=$cpu -replace 'Intel\(R\) Core\(TM\)','Core'
$cpu=$cpu -replace 'Intel\(R\) Celeron\(R\)','Celeron'
$cpu=$cpu -replace 'Intel\(R\) Xeon\(R\)','Xeon'
$cpu=$cpu -replace 'Pentium\(R\) Dual-Core','Pentium'
$cpu=$cpu -replace ' with Radeon\(tm\) HD Graphics',''
$cpu=$cpu -replace ' with Radeon Vega Mobile Gfx',''
$cpu=$cpu -replace ' with Radeon Vega Graphics',''
$cpu=$cpu -replace ' @ ',' '
if ("$cpu" -ne ""){
$memModule=((Get-WmiObject -Class CIM_PhysicalMemory -ComputerName $compAdr).Capacity | ForEach {$mem=[int]($_*10/1073741824)/10; if($mem -ge 0.5){$mem; $memSum=$memSum+$mem}}) -join ' '
$sys=Get-WmiObject -Class CIM_ComputerSystem -ComputerName $compAdr
$model=$sys.model
$model=("$model").Trim()
$model=$model -replace 'System Product Name','Noname'
$model=$model -replace 'To be filled by O.E.M.','Noname'
$model=$model -replace 'VMware Virtual Platform','VMware'
$cores=$sys.NumberOfLogicalProcessors
$compName=$sys.Name+$(if($sys.Domain){"."+$sys.Domain})
$hdd=""; Get-WmiObject -Class CIM_diskdrive -ComputerName $compAdr | ForEach {if($_.Size -gt 0){$hdd+=[string]($_.Model+" "+[int]($_.Size / (1000000000)))+"GB`r`n"}}
Output "`r`n $(addSp $compName 23) $ip`r`n-------------------------------------------------------`r`n$(addSp "CPU" 15) : $cpu($cores core) `r`n$(addSp "Memory" 15) : $memModule (Sum:$memSum`GB) `r`n$(addSp "Manufacturer" 15) : $model"
$(if($hst){Output " ("; Output "$hst" "MediumVioletRed"; Output ")"}); Output "`r`n"
if($hdd){Output "`r`nHard Disk Drive:"; Output "`r`n$hdd" "DarkBlue"}
}
}

Sham
19-11-2024, 11:52
серийник ОСи или материнской платы?

rafka
19-11-2024, 12:02
серийник ОСи или материнской платы? »
серийник компьютера

Sham
19-11-2024, 14:23
Там же всё из классов WMI берётся. Например get-ciminstance win32_baseboard даёт по материнке данные, в т.ч SerialNumber. Сериальник системы есть в классе win32_operatingsystem. У вас можно просто засунуть туда что-то типа $((get-ciminstance win32_baseboard).serialnumber)
п.с. пробуйте ещё классы win32_bios и win32_systemenclosure - там тоже какие-то серийники.

rafka
19-11-2024, 15:28
Там же всё из классов WMI берётся. Например get-ciminstance win32_baseboard даёт по материнке данные, в т.ч SerialNumber. Сериальник системы есть в классе win32_operatingsystem. У вас можно просто засунуть туда что-то типа $((get-ciminstance win32_baseboard).serialnumber)
п.с. пробуйте ещё классы win32_bios и win32_systemenclosure - там тоже какие-то серийники. »
Спасибо Большое!

rafka
19-11-2024, 16:27
Там же всё из классов WMI берётся. Например get-ciminstance win32_baseboard даёт по материнке данные, в т.ч SerialNumber. Сериальник системы есть в классе win32_operatingsystem. У вас можно просто засунуть туда что-то типа $((get-ciminstance win32_baseboard).serialnumber)
п.с. пробуйте ещё классы win32_bios и win32_systemenclosure - там тоже какие-то серийники. »
еще один вопрос. А если хочу получить серийный номер удалённого компьютера ? тогда как ?

rafka
19-11-2024, 23:00
еще один вопрос. А если хочу получить серийный номер удалённого компьютера ? тогда как ? »
сделал вот так $Serial=$(get-ciminstance win32_bios -ComputerName $compAdr).serialnumber и все заработал корректно.

Sham
20-11-2024, 06:39
Get-WmiObject в последних версиях удалён, поэтому везде лучше заменить на Get-CimInstance

rafka
20-11-2024, 08:54
сделал вот так $Serial=$(get-ciminstance win32_bios -ComputerName $compAdr).serialnumber и все заработал корректно. »
когда вот так локальный не показывает. а мне надо что бы локальный показывал по умолчанию а когда выбираю удалённую компьютер то показывал удалённую.
как граммотно это прописать?

Sham
20-11-2024, 09:52
А в $compAdr наверное точка "." в случае локального компьютера? get-ciminstance видимо не понимает эту точку как локальный комп. Для него нужен $null (пустая переменная). Тогда варианта два: 1. заменить get-ciminstance на старый get-wmiobject, либо 2. во всём скрипте заменить get-wmiobject на get-ciminstance и заменить везде точку "." на $null в объявлениях переменной $compAdr во всём скрипте, где подразумевается локальный комп.

rafka
20-11-2024, 10:50
А в $compAdr наверное точка "." в случае локального компьютера? get-ciminstance видимо не понимает эту точку как локальный комп. Для него нужен $null (пустая переменная). Тогда варианта два: 1. заменить get-ciminstance на старый get-wmiobject, либо 2. во всём скрипте заменить get-wmiobject на get-ciminstance и заменить везде точку "." на $null в объявлениях переменной $compAdr во всём скрипте, где подразумевается локальный комп. »
get-wmiobject -ом работает корректно.

Imation
20-11-2024, 11:21
получается что с таким путем можно заполучит и мак адресс. только мне кажется он будет видеть все мак адреса. А как филтировать что бы показывал только eth и wifi?

Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $compAdr).MACAddress

Sham
20-11-2024, 11:27
А в $compAdr наверное точка "." в случае локального компьютера? »
нет, там не точка, а %computername% (имя компьютера), и быстро заменить на get-ciminstance не получится, поскольку $compAdr ещё используется в других командах, типа ping. Если там будет пустота, то будут ошибки.

Sham
20-11-2024, 11:47
что бы показывал только eth и wifi? »
Там нет такого. Только косвенно по названию, описанию, по наличию IP, DHCP и т.д. Либо через базы мак-адресов, где определяются производители железа.

rafka
20-11-2024, 11:47
Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $compAdr).MACAddress »

попробуйте так.

(Get-WmiObject -ComputerName $compAdr Win32_NetworkAdapterConfiguration | where {$_.Description -like '*Ethernet*'}).MACAddress
(Get-WmiObject -ComputerName $compAdr Win32_NetworkAdapterConfiguration | where {$_.Description -like '*Wireless*'}).MACAddress

Sham
20-11-2024, 11:49
$_.Description -like '*Ethernet*'} »
не везде в описании это явно указывается.

Imation
20-11-2024, 11:49
попробуйте так. »
Wifi показывает а вот *Ethernet* нет

Там нет такого. Только косвенно по названию, описанию, по наличию IP, DHCP и т.д. Либо через базы мак-адресов, где определяются производители железа. »
а если 3-4 виртуальных сети (адаптеры) как указать что бы он показывал именно физических ?

rafka
20-11-2024, 11:57
не везде в описании это явно указывается. »
если ему нужен локальный то можно и так


(Get-NetAdapter -Name "Local Area Connection").MacAddress

Imation
20-11-2024, 12:03
если ему нужен локальный то можно и так »
Локально не плохо , а было бы здорово если через сеть :-)

rafka
20-11-2024, 12:11
Локально не плохо , а было бы здорово если через сеть :-) »
тогда как выход можете так . Но настолько корректно это не знаю.
Get-WmiObject -ComputerName $compAdr Win32_NetworkAdapterConfiguration | where {$_.Description -like '*Realtek*'}).MACAddress

Get-WmiObject -ComputerName $compAdr Win32_NetworkAdapterConfiguration | where {$_.Description -like '*Realtek*'}).MACAddress »
только это будет работать с сетевыми картами *Realtek*




© OSzone.net 2001-2012