|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - вытянуть информацию из html полученного через curl |
|
PowerShell - вытянуть информацию из html полученного через curl
|
Старожил Сообщения: 211 |
Доброго всем времени суток. Есть задача, которую надо решить именно через bat. Через curl скачивается страничка и из нее нужно извлечь нужную информацию, на скрине отмечено, что нужно вытянуть мак-адрес, номер телефона, модель и серийный номер. На данный момент батник уже может: узнает какая подсеть на компе, потом сканит диапазон из этой подсети, потом curl скачивает странички с айпишки с данными. А вот далее нужно, чтобы батник мог как-то вытянуть данные со странички и плюс как-то мог сам подставить все странички, которые есть в папке.
|
|
Отправлено: 08:26, 16-04-2020 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
Скрытый текст
PS D:\Users\S> param ( #[parameter(Mandatory=$true)] [string]$outfile = 'table_phtml.csv', $encode = 65001, [int[]]$SelectTable = 1 ) #---Эту секцию можно удалить после однократного запуска скрипта от имени админа ------------------ # Установка дополнительного модуля PowerHTML, для независимого парсинга HTML # Может потребоваться ручное подтверждение установки. if (!(get-module -list powerhtml)) { write-verbose Installing PowerHTML module for the current user... install-module powerhtml #-scope currentuser } #----------------------------------------------------------------------------------------- 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%{ $a = (iwr $_).content $content = if ($a -match [char]208){ $aconvert $encode 28591 } else {$a} $html = [net.webutility]htmldecode($content)convertfrom-html [array]$tables = $html.selectnodes('table') # Исключение вложенных таблиц $tables = $tables{$_.innerhtml -notmatch 'table'} if ([string]isnullorempty($selecttable)){ $number = 0..($tables.count-1) } else {$number = $selecttable} $tbl = $tables[$number]%{$n=0}{ $tr = if($_.element('tbody')){ $_.element('tbody').elements('tr') } else {$_.elements('tr')} $headers = @() if($headers = $tr{$_.element('th') -ne $null} %{$_.elements('th')}select -exp innertext){ $headers=$headers.trim() } else { $headers = 1..( [linq.parallelenumerable]max( [linq.parallelenumerable]asparallel(($tr %{($_.elements('td') innertext -ne ''%{$_}).count})) ) )%{H$_} } $rowind = ,1 $headers.count $tr{$_.elements('td') -ne $null}%{ $row = $_.elements('td') innertext -ne ''%{ $attr = $_.attributes if ($attr){ $rowspan = ($attr name -eq 'rowspan'select value).value $colspan = ($attr name -eq 'colspan'select value).value } [pscustomobject]@{ 'InnerText' = $_.innertext 'RowSpan' = if($rowspan){[int]$rowspan} else {1} 'ColSpan' = if($colspan){[int]$colspan} else {1} } } $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 } } [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:\Users\S\Downloads\1\1.csv -notype -enc utf8 -d ';' строка:19 знак:26 + $fenc = [text.encoding]getencoding($from) + ~~~~~~~~~~~ Непредвиденная лексема "getencoding" в выражении или операторе. строка:20 знак:26 + $tenc = [text.encoding]getencoding($to) + ~~~~~~~~~~~ Непредвиденная лексема "getencoding" в выражении или операторе. строка:27 знак:26 + [net.servicepointmanager]securityprotocol = 'ssl3,tls,tls11,tls12' + ~~~~~~~~~~~~~~~~ Непредвиденная лексема "securityprotocol" в выражении или операторе. строка:34 знак:13 + $aconvert $encode 28591 + ~~~~~~~ Непредвиденная лексема "$encode" в выражении или операторе. строка:34 знак:21 + $aconvert $encode 28591 + ~~~~~ Непредвиденная лексема "28591" в выражении или операторе. строка:37 знак:26 + $html = [net.webutility]htmldecode($content)convertfrom-html + ~~~~~~~~~~ Непредвиденная лексема "htmldecode" в выражении или операторе. строка:40 знак:19 + $tables = $tables{$_.innerhtml -notmatch 'table'} + ~ Непредвиденная лексема "{" в выражении или операторе. строка:42 знак:14 + if ([string]isnullorempty($selecttable)){ + ~~~~~~~~~~~~~ Непредвиденная лексема "isnullorempty" в выражении или операторе. строка:42 знак:14 + if ([string]isnullorempty($selecttable)){ + ~~~~~~~~~~~~~ Отсутствует закрывающий знак ")" после выражения в операторе "if". строка:31 знак:6 + $ips%{ + ~ Отсутствует закрывающий знак "}" в блоке операторов или определении типа. Выданы сообщения не обо всех ошибках синтаксического анализа. Исправьте перечисленные в сообщениях ошибки и повторите попытку. + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : UnexpectedToken На рабочем пк другой результат выполнения скрипта, на рабочем пк нет внешнего интернета и powerhtml пришлось сложить в папку с модулями руками, перед выполнением скрипта выполняю импорт powerhtml, но я так понимаю не помогает. Скрытый текст
PS C:\WINDOWS\system32> Import-Module PowerHTML PS C:\WINDOWS\system32> D:\PowerShell\phone_powerhtml.ps1 new-object : Не удается найти тип [HtmlAgilityPack.HtmlDocument]: убедитесь в том, что сборка, содержащая этот тип, загру C:\Program Files\WindowsPowerShell\Modules\PowerHTML\0.1.7\Public\ConvertFrom-HTML.ps1:55 знак:24 + $htmlDoc = new-object HtmlAgilityPack.HtmlDocument + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidType: (:) [New-Object], PSArgumentException + FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand Невозможно вызвать метод для выражения со значением NULL. C:\Program Files\WindowsPowerShell\Modules\PowerHTML\0.1.7\Public\ConvertFrom-HTML.ps1:60 знак:21 + $htmlDoc.LoadHtml($inputItem) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull Невозможно вызвать метод для выражения со значением NULL. D:\PowerShell\phone_powerhtml.ps1:38 знак:2 + [array]$tables = $html.selectnodes('//table') + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull Не удается индексировать в массив NULL. D:\PowerShell\phone_powerhtml.ps1:46 знак:2 + $tbl = $tables[$number]|%{$n=0}{ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray Исключение при вызове "IndexOf" с "2" аргументами: "Значение не может быть неопределенным. Имя параметра: array" D:\PowerShell\phone_powerhtml.ps1:109 знак:2 + [pscustomobject]@{ + ~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : ArgumentNullException new-object : Не удается найти тип [HtmlAgilityPack.HtmlDocument]: убедитесь в том, что сборка, содержащая этот тип, загру C:\Program Files\WindowsPowerShell\Modules\PowerHTML\0.1.7\Public\ConvertFrom-HTML.ps1:55 знак:24 + $htmlDoc = new-object HtmlAgilityPack.HtmlDocument + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidType: (:) [New-Object], PSArgumentException + FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand Невозможно вызвать метод для выражения со значением NULL. C:\Program Files\WindowsPowerShell\Modules\PowerHTML\0.1.7\Public\ConvertFrom-HTML.ps1:60 знак:21 + $htmlDoc.LoadHtml($inputItem) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull Невозможно вызвать метод для выражения со значением NULL. D:\PowerShell\phone_powerhtml.ps1:38 знак:2 + [array]$tables = $html.selectnodes('//table') + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull Не удается индексировать в массив NULL. D:\PowerShell\phone_powerhtml.ps1:46 знак:2 + $tbl = $tables[$number]|%{$n=0}{ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray Исключение при вызове "IndexOf" с "2" аргументами: "Значение не может быть неопределенным. Имя параметра: array" D:\PowerShell\phone_powerhtml.ps1:109 знак:2 + [pscustomobject]@{ + ~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : ArgumentNullException new-object : Не удается найти тип [HtmlAgilityPack.HtmlDocument]: убедитесь в том, что сборка, содержащая этот тип, загру C:\Program Files\WindowsPowerShell\Modules\PowerHTML\0.1.7\Public\ConvertFrom-HTML.ps1:55 знак:24 + $htmlDoc = new-object HtmlAgilityPack.HtmlDocument + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidType: (:) [New-Object], PSArgumentException + FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand Невозможно вызвать метод для выражения со значением NULL. C:\Program Files\WindowsPowerShell\Modules\PowerHTML\0.1.7\Public\ConvertFrom-HTML.ps1:60 знак:21 + $htmlDoc.LoadHtml($inputItem) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull Невозможно вызвать метод для выражения со значением NULL. D:\PowerShell\phone_powerhtml.ps1:38 знак:2 + [array]$tables = $html.selectnodes('//table') + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull Не удается индексировать в массив NULL. D:\PowerShell\phone_powerhtml.ps1:46 знак:2 + $tbl = $tables[$number]|%{$n=0}{ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray Исключение при вызове "IndexOf" с "2" аргументами: "Значение не может быть неопределенным. Имя параметра: array" D:\PowerShell\phone_powerhtml.ps1:109 знак:2 + [pscustomobject]@{ + ~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : ArgumentNullException new-object : Не удается найти тип [HtmlAgilityPack.HtmlDocument]: убедитесь в том, что сборка, содержащая этот тип, загру C:\Program Files\WindowsPowerShell\Modules\PowerHTML\0.1.7\Public\ConvertFrom-HTML.ps1:55 знак:24 + $htmlDoc = new-object HtmlAgilityPack.HtmlDocument + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidType: (:) [New-Object], PSArgumentException + FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand Невозможно вызвать метод для выражения со значением NULL. C:\Program Files\WindowsPowerShell\Modules\PowerHTML\0.1.7\Public\ConvertFrom-HTML.ps1:60 знак:21 + $htmlDoc.LoadHtml($inputItem) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull Невозможно вызвать метод для выражения со значением NULL. D:\PowerShell\phone_powerhtml.ps1:38 знак:2 + [array]$tables = $html.selectnodes('//table') + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull Не удается индексировать в массив NULL. D:\PowerShell\phone_powerhtml.ps1:46 знак:2 + $tbl = $tables[$number]|%{$n=0}{ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray Исключение при вызове "IndexOf" с "2" аргументами: "Значение не может быть неопределенным. Имя параметра: array" D:\PowerShell\phone_powerhtml.ps1:109 знак:2 + [pscustomobject]@{ + ~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : ArgumentNullException new-object : Не удается найти тип [HtmlAgilityPack.HtmlDocument]: убедитесь в том, что сборка, содержащая этот тип, загру C:\Program Files\WindowsPowerShell\Modules\PowerHTML\0.1.7\Public\ConvertFrom-HTML.ps1:55 знак:24 + $htmlDoc = new-object HtmlAgilityPack.HtmlDocument + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidType: (:) [New-Object], PSArgumentException + FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand Невозможно вызвать метод для выражения со значением NULL. C:\Program Files\WindowsPowerShell\Modules\PowerHTML\0.1.7\Public\ConvertFrom-HTML.ps1:60 знак:21 + $htmlDoc.LoadHtml($inputItem) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull Невозможно вызвать метод для выражения со значением NULL. D:\PowerShell\phone_powerhtml.ps1:38 знак:2 + [array]$tables = $html.selectnodes('//table') + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull Не удается индексировать в массив NULL. D:\PowerShell\phone_powerhtml.ps1:46 знак:2 + $tbl = $tables[$number]|%{$n=0}{ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray |
|
Отправлено: 09:04, 22-04-2020 | #81 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Цитата Griboed0ff:
Цитата Griboed0ff:
и здесь: Цитата Griboed0ff:
там куча таких огрехов... Используйте исходный скрипт, или проверяйте после копирования/редактирования... |
|||
------- Отправлено: 09:18, 22-04-2020 | #82 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
Скрытый текст
IP MAC-адрес Номер телефона Серийный номер Номер модели
10.81.1.134 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.137 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.139 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.140 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.141 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.143 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.144 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.145 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.146 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.147 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.148 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.149 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.150 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.151 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.152 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.155 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.157 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.160 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.163 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.165 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.166 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.167 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.169 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.170 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.172 00778DF9B400 60158 WZP230901Q0 CP-7821 Скрытый текст
PS C:\WINDOWS\system32> D:\PowerShell\phone4.ps1
iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand |
|
Отправлено: 09:34, 22-04-2020 | #83 |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Приведите в порядок код и всё заработает...
![]() |
------- Отправлено: 09:42, 22-04-2020 | #84 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
код
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 = gc 'D:\PowerShell\list_Net.txt' $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\all_phone.csv -notype -enc utf8 -d ';' Результат выполнения кода
10.81.1.134 00778DF88C94 60025 WZP23060APA CP-7821 10.81.1.137 00778DF88C94 60025 WZP23060APA CP-7821 10.81.1.139 00778DF88C94 60025 WZP23060APA CP-7821 10.81.1.140 00778DF88C94 60025 WZP23060APA CP-7821 10.81.1.141 00778DF88C94 60025 WZP23060APA CP-7821 10.81.1.143 00778DF88C94 60025 WZP23060APA CP-7821 10.81.1.144 00778DF88C94 60025 WZP23060APA CP-7821 10.81.1.145 00778DF88C94 60025 WZP23060APA CP-7821 10.81.1.146 00778DF88C94 60025 WZP23060APA CP-7821 10.81.1.147 00778DF88C94 60025 WZP23060APA CP-7821 10.81.1.148 00778DF88C94 60025 WZP23060APA CP-7821 10.81.1.149 00778DF88C94 60025 WZP23060APA CP-7821 10.81.1.150 00778DF88C94 60025 WZP23060APA CP-7821 10.81.1.151 00778DF88C94 60025 WZP23060APA CP-7821 10.81.1.152 00778DF88C94 60025 WZP23060APA CP-7821 10.81.1.155 00778DF88C94 60025 WZP23060APA CP-7821 10.81.1.157 00778DF88C94 60025 WZP23060APA CP-7821 10.81.1.160 00778DF88C94 60025 WZP23060APA CP-7821 10.81.1.163 00778DF88C94 60025 WZP23060APA CP-7821 10.81.1.165 00778DF88C94 60025 WZP23060APA CP-7821 10.81.1.166 00778DF88C94 60025 WZP23060APA CP-7821 10.81.1.167 00778DF88C94 60025 WZP23060APA CP-7821 10.81.1.169 00778DF88C94 60025 WZP23060APA CP-7821 10.81.1.170 00778DF88C94 60025 WZP23060APA CP-7821 10.81.1.172 00778DF88C94 60025 WZP23060APA CP-7821 ошибки, которые выдал, когда нет айпишек.
iwr : Невозможно соединиться с удаленным сервером строка:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером строка:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером строка:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером строка:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером строка:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером строка:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером строка:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером строка:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером строка:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером строка:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером строка:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером строка:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером строка:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером строка:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером строка:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером строка:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером строка:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером строка:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером строка:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером строка:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером строка:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером строка:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером строка:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером строка:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером строка:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand |
|
Отправлено: 10:46, 22-04-2020 | #85 |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Цитата Griboed0ff:
Цитата Griboed0ff:
Хотя, конечно, есть вероятность того, что пока пингуется весь список по порядку, какой-либо хост отключается и соответственно, происходит именно то, что Вы описываете. Бороться с этим можно так: script.ps1
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 = gc 'D:\PowerShell\list_Net.txt' $ips = 130..190 |%{$n=$_;$arr|%{"$_"+$n}}|sort|?{test-connection $_ -count 1 -q} $ips|%{ if (test-connection $_ -count 1 -q){ try{ $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 } } $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 } } [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 } } catch { write-host Ошибка: $_ -for red } } } |export-csv D:\PowerShell\all_phone.csv -notype -enc utf8 -d ';' Но рекомендую довести до ума парсер с PowerHTML, это будет лучший вариант... |
||
------- Отправлено: 11:30, 22-04-2020 | #86 |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать Цитата Griboed0ff:
Windows они пропустили, циско и т. п., а GLPI - это нельзя. Смешно. |
|
------- Отправлено: 11:41, 22-04-2020 | #87 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
Скрипт
param ( #[parameter(Mandatory=$true)] [string]$outfile = 'table_phtml.csv', $encode = 65001, [int[]]$SelectTable = 1 ) #---Эту секцию можно удалить после однократного запуска скрипта от имени админа ------------------ # Установка дополнительного модуля PowerHTML, для независимого парсинга HTML # Может потребоваться ручное подтверждение установки. if (!(get-module -list powerhtml)) { write-verbose "Installing PowerHTML module for the current user..." install-module powerhtml #-scope currentuser } #----------------------------------------------------------------------------------------- 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 = gc 'D:\PowerShell\list_Net.txt' $ips = 2..254 |%{$n=$_;$arr|%{"$_"+$n}}|sort|?{test-connection $_ -count 1 -q} $ips|%{ $a = (iwr $_).content $content = if ($a -match [char]208){ $a|convert $encode 28591 } else {$a} $html = [net.webutility]::htmldecode($content)|convertfrom-html [array]$tables = $html.selectnodes('//table') # Исключение вложенных таблиц: $tables = $tables|?{$_.innerhtml -notmatch 'table'} if ([string]::isnullorempty($selecttable)){ $number = 0..($tables.count-1) } else {$number = $selecttable} $tbl = $tables[$number]|%{$n=0}{ $tr = if($_.element('tbody')){ $_.element('tbody').elements('tr') } else {$_.elements('tr')} $headers = @() if($headers = $tr|?{$_.element('th') -ne $null}| %{$_.elements('th')}|select -exp innertext){ $headers=$headers.trim() } else { $headers = 1..( [linq.parallelenumerable]::max( [linq.parallelenumerable]::asparallel(($tr| %{($_.elements('td')|? innertext -ne ''|%{$_}).count})) ) )|%{"H$_"} } $rowind = ,1 * $headers.count $tr|?{$_.elements('td') -ne $null}|%{ $row = $_.elements('td')|? innertext -ne ''|%{ $attr = $_.attributes if ($attr){ $rowspan = ($attr|? name -eq 'rowspan'|select value).value $colspan = ($attr|? name -eq 'colspan'|select value).value } [pscustomobject]@{ 'InnerText' = $_.innertext 'RowSpan' = if($rowspan){[int]$rowspan} else {1} 'ColSpan' = if($colspan){[int]$colspan} else {1} } } $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 } } [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\all_phone_html.csv -notype -enc utf8 -d ';' ошибки
new-object : Не удается найти тип [HtmlAgilityPack.HtmlDocument]: убедитесь в том, что сборка, содержащая этот тип, загружена. C:\Program Files\WindowsPowerShell\Modules\PowerHTML\0.1.7\Public\ConvertFrom-HTML.ps1:55 знак:24 + $htmlDoc = new-object HtmlAgilityPack.HtmlDocument + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidType: (:) [New-Object], PSArgumentException + FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand Невозможно вызвать метод для выражения со значением NULL. C:\Program Files\WindowsPowerShell\Modules\PowerHTML\0.1.7\Public\ConvertFrom-HTML.ps1:60 знак:21 + $htmlDoc.LoadHtml($inputItem) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull Невозможно вызвать метод для выражения со значением NULL. D:\PowerShell\phone_powerhtml.ps1:38 знак:2 + [array]$tables = $html.selectnodes('//table') + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:47 знак:12 + $tr = if($_.element('tbody')){ + ~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:51 знак:23 + if($headers = $tr|?{$_.element('th') -ne $null}| + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:51 знак:23 + if($headers = $tr|?{$_.element('th') -ne $null}| + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:51 знак:23 + if($headers = $tr|?{$_.element('th') -ne $null}| + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:51 знак:23 + if($headers = $tr|?{$_.element('th') -ne $null}| + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:51 знак:23 + if($headers = $tr|?{$_.element('th') -ne $null}| + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:51 знак:23 + if($headers = $tr|?{$_.element('th') -ne $null}| + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:51 знак:23 + if($headers = $tr|?{$_.element('th') -ne $null}| + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:51 знак:23 + if($headers = $tr|?{$_.element('th') -ne $null}| + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:51 знак:23 + if($headers = $tr|?{$_.element('th') -ne $null}| + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:51 знак:23 + if($headers = $tr|?{$_.element('th') -ne $null}| + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:51 знак:23 + if($headers = $tr|?{$_.element('th') -ne $null}| + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:51 знак:23 + if($headers = $tr|?{$_.element('th') -ne $null}| + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:51 знак:23 + if($headers = $tr|?{$_.element('th') -ne $null}| + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:51 знак:23 + if($headers = $tr|?{$_.element('th') -ne $null}| + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:51 знак:23 + if($headers = $tr|?{$_.element('th') -ne $null}| + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:51 знак:23 + if($headers = $tr|?{$_.element('th') -ne $null}| + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:51 знак:23 + if($headers = $tr|?{$_.element('th') -ne $null}| + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:51 знак:23 + if($headers = $tr|?{$_.element('th') -ne $null}| + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:51 знак:23 + if($headers = $tr|?{$_.element('th') -ne $null}| + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:51 знак:23 + if($headers = $tr|?{$_.element('th') -ne $null}| + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:51 знак:23 + if($headers = $tr|?{$_.element('th') -ne $null}| + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:51 знак:23 + if($headers = $tr|?{$_.element('th') -ne $null}| + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:51 знак:23 + if($headers = $tr|?{$_.element('th') -ne $null}| + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:51 знак:23 + if($headers = $tr|?{$_.element('th') -ne $null}| + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "element". D:\PowerShell\phone_powerhtml.ps1:51 знак:23 + if($headers = $tr|?{$_.element('th') -ne $null}| + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (element:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "elements". D:\PowerShell\phone_powerhtml.ps1:58 знак:8 + ... %{($_.elements('td')|? innertext -ne ''|%{$_}).count})) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (elements:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "elements". D:\PowerShell\phone_powerhtml.ps1:58 знак:8 + ... %{($_.elements('td')|? innertext -ne ''|%{$_}).count})) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (elements:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "elements". D:\PowerShell\phone_powerhtml.ps1:58 знак:8 + ... %{($_.elements('td')|? innertext -ne ''|%{$_}).count})) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (elements:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "elements". D:\PowerShell\phone_powerhtml.ps1:58 знак:8 + ... %{($_.elements('td')|? innertext -ne ''|%{$_}).count})) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (elements:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "elements". Цитата YuS_2::
Цитата YuS_2:
|
|||
Отправлено: 12:09, 22-04-2020 | #88 |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Цитата Griboed0ff:
![]() работать не будет... Необходимо модуль установить... |
|
------- Отправлено: 12:46, 22-04-2020 | #89 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
|
|
Отправлено: 12:59, 22-04-2020 | #90 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Как получить информацию, не отображаемую в HTML-коде? | Apock | Вебмастеру | 0 | 26-12-2015 22:11 | |
Имитация браузера через cURL | dmit.medv | Вебмастеру | 0 | 28-12-2012 18:02 | |
[решено] Вывести информацию из файла через JS | MultiMax | Вебмастеру | 1 | 31-05-2011 22:58 | |
[решено] Вытянуть содержание HTML тега с помощью регулярных выражений | aesir | AutoIt | 4 | 28-08-2009 21:22 | |
Как передать в javascript данные массива, полученного из кода на php | vagner_HATE | Вебмастеру | 1 | 18-06-2009 13:51 |
|