|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - соединить три скрипта общим выводом. |
|
PowerShell - соединить три скрипта общим выводом.
|
Старожил Сообщения: 211 |
доброго времени суток. Есть три скрипта, которые написали участники данного форума. Первый снимает
мак-адрес
мониторах
$ofs = '' gwmi wmimonitorid -Namespace root\wmi | Select @{n='UserFriendlyName';e={([string][Char[]]$_.UserFriendlyName).SubString(0,$_.UserFriendlyNameLength)}}, @{n='SerialNumberID';e={[string][Char[]]$_.SerialNumberID}} | export-csv 'D:\PowerShell\monitor2.csv' -Delimiter ';' -Encoding utf8 -NoTypeInformation морд
[code]
param ( #[parameter(Mandatory=$true)] $encode = 65001, [string]$outfile = 'table.csv', [int]$number = 1 ) function convert ($from, $to){ begin{ $fenc = [text.encoding]::getencoding($from) $tenc = [text.encoding]::getencoding($to) } process{ $a = $tenc.getbytes($_) $fenc.getstring($a) } } [net.servicepointmanager]::securityprotocol = 'ssl3,tls,tls11,tls12' [array]$arr = $((Get-Netipaddress |? ipaddress -match "^10\.").ipaddress -replace "\d+$") $ips = 130..190 |%{$n=$_;$arr|%{"$_"+$n}}|sort|?{test-connection $_ -count 1 -q} $ips|%{ $html = iwr $_ $tables = $html.parsedhtml.getelementsbytagname("table") $tbl = ($tables|?{($_.getelementsbytagname('table')|%{$_}).count -eq 0})[$number]|%{ $headers = @(); $tr = $_|%{$_.getelementsbytagname("tr")} if($headers = $tr|?{$_.firstchild().tagname -eq 'th'}| %{$_.getelementsbytagname("th")}|select -exp innertext){ if ($headers -match [char]208){$headers=$headers|convert $encode 28591} $headers = $headers.trim() } else { $headers = 1..([linq.parallelenumerable]::max( [linq.parallelenumerable]::asparallel($tr.lastchild().cellindex) )+1)|%{"H$_"} } $rowind = ,1 * $headers.count $tr.where({$_.firstchild().tagname -eq 'td'})|%{ $row = $_.getelementsbytagname("td") |? innertext -ne $null| select innertext,rowspan,colspan if($row.innertext -match [char]208){ for($i=0;$i -lt $row.count;$i++){ $row[$i].innertext = $row[$i].innertext|convert $encode 28591 } } try { $str = [ordered]@{} $k=0 foreach ($item in $row){ if ($rowind[$k] -gt 1){ while ($rowind[$k] -gt 1){ $str[$headers[$k]] = $null $rowind[$k] -= 1 $k++ } } if (($colspan = $item.colspan) -gt 1) { $str[$headers[$k]] = if($item.innertext){ $item.innertext.trim() } else {$null} if ($item.rowspan -gt 1){$rowind[$k] = $item.rowspan} $k++ while ($colspan -gt 1){ $str[$headers[$k]] = $null $colspan -=1 if ($rowind[$k] -gt 1){$rowind[$k]-=1} $k++ } } else { $str[$headers[$k]] = if($item.innertext){ $item.innertext.trim() } else {$null} if ($item.rowspan -gt 1){$rowind[$k] = $item.rowspan} $k++ } } [pscustomobject]$str } catch { write-host Разметка заголовков не соответствует размерам строк -for red write-host $_ -for cyan } } } [pscustomobject]@{ 'IP' = $_ 'MAC-адрес' = $tbl[([array]::indexof($tbl.h1,'MAC-адрес'))].h2 'Номер телефона' = if ([array]::indexof($tbl.h1,'Номер телефона') -ne -1){ $tbl[([array]::indexof($tbl.h1,'Номер телефона'))].h2 } else { $tbl[([array]::indexof($tbl.h1,'Номер телефона 1'))].h2 } 'Серийный номер' = $tbl[([array]::indexof($tbl.h1,'Серийный номер'))].h2 'Номер модели' = $tbl[([array]::indexof($tbl.h1,'Номер модели'))].h2 } } |export-csv D:\PowerShell\123.csv -notype -enc utf8 -d ';' |
|
Отправлено: 07:39, 20-04-2020 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать новая проблема, накидан
скрипт
Param( #powershell [string]$Region, #[parameter(Mandatory=$true)] [string]$outfile = 'D:\PowerShell\франкин\test\model.csv', [string]$outfile2 = 'D:\PowerShell\франкин\test\mac.csv', [string]$outfile3 = 'D:\PowerShell\франкин\test\mon.csv', [string]$outfile4 = 'D:\PowerShell\франкин\test\no_ping.csv' ) $myscripname=$myInvocation.ScriptName if ($Region -eq "MSK_TT") { $OU = "OU=Workstations,OU=TT,OU=Computers,OU=MSK,DC=tsretail,DC=ru" } elseif ($Region -eq "MSK_S") { $OU = "OU=Servers,OU=TT,OU=Computers,OU=MSK,DC=tsretail,DC=ru" } elseif ($Region -eq "VLK_TT") { $OU = "OU=Workstations,OU=TT,OU=Computers,OU=VLK,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "VLK_S") { $OU = "OU=Servers,OU=TT,OU=Computers,OU=VLK,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "SMR_TT") { $OU = "OU=Workstations,OU=TT,OU=Computers,OU=SMR,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "SMR_S") { $OU = "OU=Servers,OU=TT,OU=Computers,OU=SMR,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "UFA_TT") { $OU = "OU=Workstations,OU=TT,OU=Computers,OU=UFA,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "UFA_S") { $OU = "OU=1C-servers,OU=TT,OU=Computers,OU=UFA,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "SPB_TT") { $OU = "OU=Workstations,OU=TT,OU=Computers,OU=SPB,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "SPB_S") { $OU = "OU=Servers,OU=TT,OU=Computers,OU=SPB,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "EKT_TT") { $OU = "OU=Workstations,OU=TT,OU=Computers,OU=EKT,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "EKT_S") { $OU = "OU=Servers,OU=TT,OU=Computers,OU=EKT,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "VRN_TT") { $OU = "OU=Workstations,OU=TT,OU=Computers,OU=VRN,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "VRN_S") { $OU = "OU=Servers,OU=TT,OU=Computers,OU=VRN,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "RND_TT") { $OU = "OU=Workstations,OU=TT,OU=Computers,OU=RND,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "RND_S") { $OU = "OU=Servers,OU=TT,OU=Computers,OU=RND,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "NSK_TT") { $OU = "OU=Workstations,OU=TT,OU=Computers,OU=NSK,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "NSK_S") { $OU = "OU=Servers,OU=TT,OU=Computers,OU=NSK,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "MSK_B") { $OU = "OU=MainOffice,OU=Computers,OU=MSK,DC=tsretail,DC=ru" } elseif ($Region -eq "VLK_B") { $OU = "OU=Office,OU=Computers,OU=VLK,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "SMR_B") { $OU = "OU=Office,OU=Computers,OU=SMR,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "UFA_B") { $OU = "OU=Office,OU=Computers,OU=UFA,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "SPB_B") { $OU = "OU=Office,OU=Computers,OU=SPB,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "EKT_B") { $OU = "OU=Office,OU=Computers,OU=EKT,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "VRN_B") { $OU = "OU=Office,OU=Computers,OU=VRN,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "RND_B") { $OU = "OU=Office,OU=Computers,OU=RND,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "NSK_B") { $OU = "OU=Office,OU=Computers,OU=NSK,OU=Regions,DC=tsretail,DC=ru" } Else { Write-Host "Usage: powershell $myscripname <filename with SQL query> [VLK_TT|MSK_TT|SMR_TT|UFA_TT|SPB_TT|EKT_TT|VRN_TT|RND_TT|NSK_TT|VLK_B|MSK_B|SMR_B|UFA_B|SPB_B|EKT_B|VRN_B|RND_B|NSK_B]" exit } $logdate = $((get-date).tostring("ddMMyy HH_mm")) $log = $outfile4 $pcs2 = get-adcomputer -Filter {Enabled -eq 'True'} -Properties Name, whenCreated, CanonicalName, OperatingSystem, OperatingSystemServicePack, OperatingSystemVersion, LastLogonDate -SearchBase $OU | Select-Object Name, whenCreated, CanonicalName, LastLogonDate, OperatingSystem, OperatingSystemServicePack, OperatingSystemVersion $counter = $pcs2.count write-host "Прошлись по $OU. Получили $counter записей" -ForegroundColor Yellow "Имя ПК;OperatingSystem;доступность;результат проверки;LastLogonDate;CanonicalName;" #| Out-File $log -Append -Encoding utf8 $pcs2|% { $Res = @() $forLog = @() $name = $_.name $logon = $_.LastLogonDate.tostring("dd.MM.yyyy") write-host $name -ForegroundColor Green if ((Test-Connection -Cn $name -Count 1 -quiet -ErrorAction SilentlyContinue) -eq $False) { Write-host "$name;не пингуется" $forLog = $name+";"+$_.OperatingSystem+";"+"не пингуется;"+";$logon"+";"+$_.CanonicalName $forLog | Out-File $log -Append -Encoding utf8 } else { Write-host "$name пингуется, выполняем проверку" Get-CimInstance -ClassName Win32_ComputerSystem -computername $name | convertto-csv -d ';' -notype| Out-File $outfile -enc utf8 -Append Get-WmiObject Win32_NetworkAdapter -Filter 'AdapterTypeId = 0 and MACAddress is not null' -computername $name | convertto-csv -d ';' -notype| Out-File $outfile2 -enc utf8 -Append $ofs = '' gwmi wmimonitorid -Namespace root\wmi -ComputerName $name | Select @{n='UserFriendlyName';e={([string][Char[]]$_.UserFriendlyName).SubString(0,$_.UserFriendlyNameLength)}}, @{n='SerialNumberID';e={[string][Char[]]$_.SerialNumberID}} |%{ [pscustomobject]@{ 'Name' = $name 'UserFriendlyName' = $_.UserFriendlyName.trim([char]0x0000) 'SerialNumberID' = $_.SerialNumberID.trim([char]0x0000) } | Out-File $outfile3 -enc utf8 -Append } } } |
Последний раз редактировалось Griboed0ff, 28-05-2020 в 11:55. Отправлено: 11:41, 28-05-2020 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Griboed0ff:
|
|
Отправлено: 22:15, 29-05-2020 | #12 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата Iska:
ремикс
Param( [String]$a=((Get-Date).ToShortDateString() | Foreach-Object {$_ -replace "\.", ""}) , [string]$outfile = "D:\PowerShell\франкин\test\1111.csv", $pp = "05server" ) $PSComputerName = Get-WmiObject -computername $pp Win32_NetworkAdapter -Filter "NetConnectionStatus>0" |foreach {$_.PSComputerName} $MACAddress = Get-WmiObject -computername $pp Win32_NetworkAdapter -Filter "NetConnectionStatus>0" |foreach {$_.MACAddress} $namenet = Get-WmiObject -computername $pp Win32_NetworkAdapter -Filter "NetConnectionStatus>0" |foreach {$_.name} $AdapterType = Get-WmiObject -computername $pp Win32_NetworkAdapter -Filter "NetConnectionStatus>0" |foreach {$_.AdapterType} $Speed = Get-WmiObject -computername $pp Win32_NetworkAdapter -Filter "NetConnectionStatus>0" |foreach {$_.Speed} $Manufacturer = Get-CimInstance -computername $pp -ClassName Win32_ComputerSystem |foreach {$_.Manufacturer} $Model = Get-CimInstance -computername $pp -ClassName Win32_ComputerSystem |foreach {$_.Model} $SN = Get-WmiObject -computername $pp Win32_BaseBoard | foreach {$_.SerialNumber} $hash_object = [ordered] @{PSComputerName = $PSComputerName; Manufacturer = $Manufacturer; Model = $Model; Serialnumber = $SN; MACAddress = $MACAddress; name = $namenet; AdapterType = $AdapterType; Speed = $Speed; } $ps_object = [pscustomobject]$hash_object $ps_object | export-csv $outfile -notype -enc utf8 -d ';' -append резуьлтат
$m = gwmi wmimonitorid -Namespace root\wmi [string][char[]] ($m.UserFriendlyName) -join "" [string][char[]] ($m.SerialNumberID) -join "" А точнее, лучше не вычленять из результата, а сразу писать результат как надо. |
|
Отправлено: 15:35, 02-06-2020 | #13 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать В данном случае Вы получаете массив из двух значений.
|
Отправлено: 19:56, 02-06-2020 | #14 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата Iska:
хм, заметил, что всегда возвращает 26 значений независимо от моделей, по идее можно делать по 13 на каждое значение, далее уже в тексте обрезать лишние пробелы. |
|
Последний раз редактировалось Griboed0ff, 02-06-2020 в 21:48. Отправлено: 21:38, 02-06-2020 | #15 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать в общем что-то получилось
Скрытый текст
$PSComputerName = Get-WmiObject -computername $pp Win32_NetworkAdapter -Filter "NetConnectionStatus>0" |foreach {$_.PSComputerName} $MACAddress = Get-WmiObject -computername $pp Win32_NetworkAdapter -Filter "NetConnectionStatus>0" |foreach {$_.MACAddress} $namenet = Get-WmiObject -computername $pp Win32_NetworkAdapter -Filter "NetConnectionStatus>0" |foreach {$_.name} $AdapterType = Get-WmiObject -computername $pp Win32_NetworkAdapter -Filter "NetConnectionStatus>0" |foreach {$_.AdapterType} $Speed = Get-WmiObject -computername $pp Win32_NetworkAdapter -Filter "NetConnectionStatus>0" |foreach {$_.Speed} $Manufacturer = Get-CimInstance -computername $pp -ClassName Win32_ComputerSystem |foreach {$_.Manufacturer} $Model = Get-CimInstance -computername $pp -ClassName Win32_ComputerSystem |foreach {$_.Model} $SN = Get-WmiObject -computername $pp Win32_BaseBoard | foreach {$_.SerialNumber} $mm = [char[]]((gwmi wmimonitorid -Namespace root\wmi -ComputerName $pp).UserFriendlyName)-join "" [string]$mmod1 = $mm[0..12] [string]$mmod2 = $mm[13..26] $msn = [char[]]((gwmi wmimonitorid -Namespace root\wmi -ComputerName $pp).SerialNumberID)-join "" [string]$msn1 = $msn[0..15] [string]$msn2 = $msn[16..32] $hash_object = [ordered] @{PSComputerName = $PSComputerName; Manufacturer = $Manufacturer; Model = $Model; Serialnumber = $SN; MACAddress = $MACAddress; name = $namenet; AdapterType = $AdapterType; Speed = $Speed; "Monitor 1" = $mmod1; "SN 1" = $msn1; "Monitor 2" = $mmod2; "SN 2" = $msn2; } $ps_object = [pscustomobject]$hash_object $ps_object | export-csv $outfile -notype -enc utf8 -d ';' -append Скрытый текст
"PSComputerName";"Manufacturer";"Model";"Serialnumber";"MACAddress";"name";"AdapterType";"Speed";"Monitor 1";"SN 1";"Monitor 2";"SN 2" "E";"Hewlett-Packard";"HP ProDesk 400 G2 MT";"CZC4483YK7";"A0:D3:C1:4D:51:2D";"Realtek PCIe GBE Family Controller";"Ethernet 802.3";"100000000";"HP E231 ";"3CQ3510L75 ";"HP E231 ";"CNC238NS0G " "05-SERVER";"Hewlett-Packard";"HP ProDesk 400 G2 MT";"CZC44843RP";"A0:D3:C1:4D:6B:CE";"Realtek PCIe GBE Family Controller #4";"Ethernet 802.3";"1000000000";"";"3CQ3510L75 ";"";"CNC238NS0G " "05-SERVER";"Hewlett-Packard";"HP ProDesk 400 G2 MT";"CZC44843RP";"A0:D3:C1:4D:6B:CE";"Realtek PCIe GBE Family Controller #4";"Ethernet 802.3";"1000000000";"";"3CQ3510L75 ";"";"CNC238NS0G " "TT-PC-AV";"Dell Inc.";"OptiPlex 5050";"/C7JLBS2/CNFCW0087V029Y/";"54:BF:64:7E:FE:E3";"Intel(R) Ethernet Connection (5) I219-V";"Ethernet 802.3";"100000000";"HP E243 ";"CNK91733GB ";"";"" ну и как то избавиться от красноты, так где нет мониторов вообще такие вот ошибки: Скрытый текст
gwmi : Не поддерживается D:\PowerShell\test\3.ps1:15 знак:17 + ... = [char[]]((gwmi wmimonitorid -Namespace root\wmi -ComputerName $pp). ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Get-WmiObject], ManagementException + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand gwmi : Не поддерживается D:\PowerShell\test\3.ps1:18 знак:18 + ... = [char[]]((gwmi wmimonitorid -Namespace root\wmi -ComputerName $pp). ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Get-WmiObject], ManagementException + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand Не удается индексировать в массив NULL. D:\PowerShell\test\3.ps1:19 знак:1 + [string]$msn1 = $msn[0..15] + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray Не удается индексировать в массив NULL. D:\PowerShell\test\3.ps1:20 знак:1 + [string]$msn2 = $msn[16..32] + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray |
Последний раз редактировалось Griboed0ff, 02-06-2020 в 23:00. Отправлено: 22:54, 02-06-2020 | #16 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать еще многие компы ответили так
Скрытый текст
Get-CimInstance : Службе WS-Management не удается обработать запрос. URI ресурса DMTF был использован для доступа к классу, отличному от DMTF. Повторите попытку с использованием URI ресурса, отличного от DMTF. D:\PowerShell\франкин\test\test.ps1:93 знак:17 + ... ufacturer = Get-CimInstance -computername $name -ClassName Win32_Comp ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (root\cimv2:Win32_ComputerSystem:String) [Get-CimInstance], CimException + FullyQualifiedErrorId : HRESULT 0x80338139,Microsoft.Management.Infrastructure.CimCmdlets.GetCimInstanceCommand + PSComputerName : EKT-PC-KISELEVA Get-CimInstance : Службе WS-Management не удается обработать запрос. URI ресурса DMTF был использован для доступа к классу, отличному от DMTF. Повторите попытку с использованием URI ресурса, отличного от DMTF. D:\PowerShell\франкин\test\test.ps1:94 знак:10 + $Model = Get-CimInstance -computername $name -ClassName Win32_Compute ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (root\cimv2:Win32_ComputerSystem:String) [Get-CimInstance], CimException + FullyQualifiedErrorId : HRESULT 0x80338139,Microsoft.Management.Infrastructure.CimCmdlets.GetCimInstanceCommand + PSComputerName : EKT-PC-KISELEVA |
Отправлено: 23:29, 02-06-2020 | #17 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата Griboed0ff:
Цитата Griboed0ff:
|
||
Отправлено: 23:46, 02-06-2020 | #18 |
Старожил Сообщения: 193
|
Профиль | Отправить PM | Цитировать Param( $a=((Get-Date).ToShortDateString() | Foreach-Object {$_ -replace "\.", ""}) , $outfile = "D:\PowerShell\франкин\test\1111.csv", $pp = "localhost" )cls $PSComputerName = Get-WmiObject -computername $pp Win32_NetworkAdapter -Filter "NetConnectionStatus>0" |foreach {$_.PSComputerName} $MACAddress = Get-WmiObject -computername $pp Win32_NetworkAdapter -Filter "NetConnectionStatus>0" |foreach {$_.MACAddress} $namenet = Get-WmiObject -computername $pp Win32_NetworkAdapter -Filter "NetConnectionStatus>0" |foreach {$_.name} $AdapterType = Get-WmiObject -computername $pp Win32_NetworkAdapter -Filter "NetConnectionStatus>0" |foreach {$_.AdapterType} $Speed = Get-WmiObject -computername $pp Win32_NetworkAdapter -Filter "NetConnectionStatus>0" |foreach {$_.Speed} $Manufacturer = Get-CimInstance -computername $pp -ClassName Win32_ComputerSystem |foreach {$_.Manufacturer} $Model = Get-CimInstance -computername $pp -ClassName Win32_ComputerSystem |foreach {$_.Model} $SN = Get-WmiObject -computername $pp Win32_BaseBoard | foreach {$_.SerialNumber} $hash_object = [ordered] @{PSComputerName = $PSComputerName; Manufacturer = $Manufacturer; Model = $Model; Serialnumber = $SN; MACAddress = $MACAddress; name = $namenet; AdapterType = $AdapterType; Speed = $Speed; } gwmi -ea 0 wmimonitorid -Namespace root\wmi|%{$hash_object.add("Monitor"+ ++$i,(($_.UserFriendlyName|?{($_ -ne 0)}|%{[char]$_}) -join "")+' ['+(($_.SerialNumberID|?{($_ -ne 0)}|%{[char]$_}) -join "")+']')} $hash_object |
Отправлено: 01:45, 03-06-2020 | #19 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать ваш код так же записывает прошлое значение если нет мониторов, например, 05-server не имеет мониторов, но однако записал результаты от прошлого запуска.
Param( $a=((Get-Date).ToShortDateString() | Foreach-Object {$_ -replace "\.", ""}) , $outfile = "D:\PowerShell\франкин\test\1111.csv", $pp = "05-server" )cls $PSComputerName = Get-WmiObject -computername $pp Win32_NetworkAdapter -Filter "NetConnectionStatus>0" |foreach {$_.PSComputerName} $MACAddress = Get-WmiObject -computername $pp Win32_NetworkAdapter -Filter "NetConnectionStatus>0" |foreach {$_.MACAddress} $namenet = Get-WmiObject -computername $pp Win32_NetworkAdapter -Filter "NetConnectionStatus>0" |foreach {$_.name} $AdapterType = Get-WmiObject -computername $pp Win32_NetworkAdapter -Filter "NetConnectionStatus>0" |foreach {$_.AdapterType} $Speed = Get-WmiObject -computername $pp Win32_NetworkAdapter -Filter "NetConnectionStatus>0" |foreach {$_.Speed} $Manufacturer = Get-CimInstance -computername $pp -ClassName Win32_ComputerSystem |foreach {$_.Manufacturer} $Model = Get-CimInstance -computername $pp -ClassName Win32_ComputerSystem |foreach {$_.Model} $SN = Get-WmiObject -computername $pp Win32_BaseBoard | foreach {$_.SerialNumber} $hash_object = [ordered] @{PSComputerName = $PSComputerName; Manufacturer = $Manufacturer; Model = $Model; Serialnumber = $SN; MACAddress = $MACAddress; name = $namenet; AdapterType = $AdapterType; Speed = $Speed; } gwmi -ea 0 wmimonitorid -Namespace root\wmi|%{$hash_object.add("Monitor"+ ++$i,(($_.UserFriendlyName|?{($_ -ne 0)}|%{[char]$_}) -join "")+' ['+(($_.SerialNumberID|?{($_ -ne 0)}|%{[char]$_}) -join "")+']')} $hash_object Name Value ---- ----- PSComputerName 05-SERVER Manufacturer Hewlett-Packard Model HP ProDesk 400 G2 MT Serialnumber CZC44843RP MACAddress A0:D3:C1:4D:6B:CE name Realtek PCIe GBE Family Controller #4 AdapterType Ethernet 802.3 Speed 1000000000 Monitor9 HP E231 [3CQ4070X4Z] Monitor10 HP E231 [6CM4221RHC] "Count";"IsReadOnly";"Keys";"Values";"IsFixedSize";"SyncRoot";"IsSynchronized" "10";"False";"System.Collections.Specialized.OrderedDictionary+OrderedDictionaryKeyValueCollection";"System.Collections.Specialized.OrderedDictionary+OrderedDictionaryKeyValueCollection";"False";"System.Object";"False" "10";"False";"System.Collections.Specialized.OrderedDictionary+OrderedDictionaryKeyValueCollection";"System.Collections.Specialized.OrderedDictionary+OrderedDictionaryKeyValueCollection";"False";"System.Object";"False" |
Последний раз редактировалось Griboed0ff, 03-06-2020 в 09:42. Отправлено: 09:35, 03-06-2020 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Router - Как соединить три компьютера на один модем (ZTE ZXDSL-831CII) | AzaTur | Сетевое оборудование | 4 | 11-03-2015 00:56 | |
Route/Bridge - [решено] Три выхода в интернет, три офиса с общей локальной сетью | Senja | Сетевые технологии | 14 | 15-12-2014 17:21 | |
Загрузка - [решено] Восстановление загрузки - три HDD, три ОС | Vitalijs | Microsoft Windows 7 | 19 | 30-04-2010 01:10 | |
[решено] Авторизация из скрипта для доступа к общим папкам на внешнем сервере | 0bject | Microsoft Windows NT/2000/2003 | 4 | 01-11-2005 09:30 | |
Мона соединить три модема для игры? | Liven | Хочу все знать | 4 | 17-08-2002 01:05 |
|