Показать полную графическую версию : вытянуть информацию из html полученного через curl
Страниц :
1
2
3
4
[
5]
6
7
8
Griboed0ff
22-04-2020, 09:04
Вот, скрипт на его основе: »
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
где-то скобки потерялись. »
Наверное, здесь:
function convert ($from, $to){
begin{
$fenc = [text.encoding]getencoding($from)
$tenc = [text.encoding]getencoding($to)
} »
- двоеточия потерялись...
и здесь:
$ips%{ »
- не всё в порядке...
там куча таких огрехов...
Используйте исходный скрипт, или проверяйте после копирования/редактирования...
Griboed0ff
22-04-2020, 09:34
- но тормоз получился изрядный... »
если в подсети нет айпишек, то начинает записывать данные с прошлой подсети на все что пингуется.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
это все компьютеры, которые просто живут там же 130-190
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
Приведите в порядок код и всё заработает... :)
Griboed0ff
22-04-2020, 10:46
Приведите в порядок код и всё заработает... » этот 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 В подсетях где есть айпишки этот же скрипт корректно выдает информацию.
Отрабатывает нормально, но если нет в сети айпишек то берет какой-то результат и приписывает его ко всему, что пингуется. »
По идее, вот здесь:
$ips = 130..190 |%{$n=$_;$arr|%{"$_"+$n}}|sort|?{test-connection $_ -count 1 -q} »
-есть проверка существования хостов и если они не отвечают, то в массив не должны попадать...
Хотя, конечно, есть вероятность того, что пока пингуется весь список по порядку, какой-либо хост отключается и соответственно, происходит именно то, что Вы описываете.
Бороться с этим можно так:
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, это будет лучший вариант...
DJ Mogarych
22-04-2020, 11:41
иб никогда не пропустит »
Да, вменяемые люди в ИБ - это большая редкость.
Windows они пропустили, циско и т. п., а GLPI - это нельзя. Смешно.
Griboed0ff
22-04-2020, 12:09
PowerHTML Вот, скрипт на его основе: » смог запустить powerhtml, но вывод оказался пустой. 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".
Но рекомендую довести до ума парсер с PowerHTML, это будет лучший вариант... » похоже мои ошибки вызваны неработающим powerhtml?
Бороться с этим можно так: » помогло.
похоже мои ошибки вызваны неработающим powerhtml? »
Да. Без этого:
http://ipic.su/img/img7/tn/Bezimeni20200422154326.1587548677.png (http://ipic.su/img/img7/fs/Bezimeni20200422154326.1587548677.png)
работать не будет...
Необходимо модуль установить...
Griboed0ff
22-04-2020, 12:59
Необходимо модуль установить... »
Установил на пк где есть инет, скопировал папку с модулем и положил по тому же пути на пк где инет ограничен. В списке модулей числится, перед запуском скрипта выполняю импорт модуля, без ошибок. Видимо каких-то связей не хватает.
Griboed0ff
22-04-2020, 13:25
PS C:\WINDOWS\system32> get-module powerhtml
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 0.1.7 powerhtml ConvertFrom-Html
Script 0.1.7 PowerHTML ConvertFrom-Html
PS C:\WINDOWS\system32> get-instaledmodule powerhtml
get-instaledmodule : Имя "get-instaledmodule" не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность написания имени, а также наличие и правильность пути, после
чего повторите попытку.
строка:1 знак:1
+ get-instaledmodule powerhtml
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (get-instaledmodule:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
PS C:\WINDOWS\system32> get-installedmodule powerhtml
ПРЕДУПРЕЖДЕНИЕ: Не удалось скачать список доступных поставщиков. Проверьте подключение к Интернету.
Version Name Type Repository Description
------- ---- ---- ---------- -----------
0.1.7 PowerHTML Module https://www.power... Provides a wrapper for HTML Agility Pack for use where the IE HTML DOM from Invoke-WebRequest is not available such as Powershell Core
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
еще ise всегда спрашивает разрешения на запуск скриптов, я так понимаю это политикой домена или у винды по умолчанию так. Щас попробую на другой доменной тачке.
Установил на пк где есть инет »
Там работает скрипт?
скопировал папку с модулем и положил по тому же пути на пк где инет ограничен. »
Странно, должен работать. Попробуйте в консоли выполнить:
find-module powerhtml -rep "PSGallery"|save-module -path 'D:\localMODULE'
и из этого каталога взять модуль и скопировать на другой компьютер...
Ну, можно ещё попробовать в скрипт добавить строку:
import-module powerhtml
еще ise всегда спрашивает разрешения на запуск скриптов, я так понимаю это политикой домена или у винды по умолчанию так. »
а в консоли выполняются?
По умолчанию, политика запуска скриптов запрещает не подписанные.
Для выполнения неподписанных скриптов, созданных на локальном
компьютере, и подписанных скриптов других пользователей, нужно
использовать следующую команду для изменения политики исполнения на
RemoteSigned:
set-executionpolicy remotesigned
Дополнительные сведения см. в описании командлета Set-ExecutionPolicy.
Griboed0ff
22-04-2020, 14:58
По умолчанию, политика запуска скриптов запрещает не подписанные. »
Это политика доменная оказалась, попробовал на другом пк powerhtml. Работает, задал ему сеть где один айпишки 2-254, нашел все, правда парочку не смог считать, но одна страничка оказалась на английском поэтому и не считалась, а вторая видимо имеет другую структуру. Так же заметил в мониторинге сети, что скрипт ничего не вроде как никуда первые минут 5-7 не посылает, а потом за пару минут скачивают всю инфу.
Бороться с этим можно так: » это постигло и скрипт poewrhtml, если нет айпишек в сети то пишет ерунду с прошлого запуска.
Griboed0ff
22-04-2020, 15:19
Получился довольно универсальный в теме айпишек скрипт, не скрипт, а проект уже целый. Я благодарен участникам данного форума, что помогли решить задачу именно строенными средствами винды. :clapping: :up
скрипт ничего не вроде как никуда первые минут 5-7 не посылает, а потом за пару минут скачивают всю инфу. »
там он сначала пингует хосты, с одновременным формированием доступных IP
это постигло и скрипт poewrhtml, если нет айпишек в сети то пишет ерунду с прошлого запуска. »
Да, там то же самое надо сделать, сейчас добавлю...
Griboed0ff
22-04-2020, 18:08
сейчас добавлю »
а можете указать где меняете? я ваши решения тусую, один скрипт который через powerhtml будет запускаться с моего компа и собирать инфу с многих компов, а скрипт который был до этого, будет запускаться планировщиком и записывать данные в файл.
правда парочку не смог считать, но одна страничка оказалась на английском поэтому и не считалась »
Руки бы поотшибать этим "сиськопрограммерам" html... :)
Мало того, что впихнули внутрь ячеек тег <b>...</b>, так ещё и кодировку умудрились использовать windows-1251...
В общем, так как-то:
param (
#[parameter(Mandatory=$true)]
[string]$outfile = 'table_phtml.csv',
$enc1 = 65001,
$enc2 = 28591,
[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 = 130..190 |%{$n=$_;$arr|%{"$_"+$n}}|sort|?{test-connection $_ -count 1 -q}
$ips|%{
if (test-connection $_ -count 1 -q){
try {
$a = (iwr $_).content
#$a = gc $_ -raw -enc utf8
$content = if ($a -match [char]208){
if ($a -match 'windows-1251'){$enc1,$enc2 = 1251,1252}
$a|convert $enc1 $enc2
} 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 ''}|%{
$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-адрес' = if ([array]::indexof($tbl.h1,'MAC-адрес') -ne -1){
$tbl[([array]::indexof($tbl.h1,'MAC-адрес'))].h2
} else {$tbl[([array]::indexof($tbl.h1,'MAC Address'))].h2}
'Номер телефона' = if ([array]::indexof($tbl.h1,'Номер телефона') -ne -1){
$tbl[([array]::indexof($tbl.h1,'Номер телефона'))].h2
} elseif ([array]::indexof($tbl.h1,'Номер телефона 1') -ne -1){
$tbl[([array]::indexof($tbl.h1,'Номер телефона 1'))].h2
} else {
$tbl[([array]::indexof($tbl.h1,'Phone DN'))].h2
}
'Серийный номер' = if ([array]::indexof($tbl.h1,'Серийный номер') -ne -1){
$tbl[([array]::indexof($tbl.h1,'Серийный номер'))].h2
} else {$tbl[([array]::indexof($tbl.h1,'Serial Number'))].h2}
'Номер модели' = if ([array]::indexof($tbl.h1,'Номер модели') -ne -1){
$tbl[([array]::indexof($tbl.h1,'Номер модели'))].h2
} else {$tbl[([array]::indexof($tbl.h1,'Model Number'))].h2}
}
} catch {
write-host Ошибка: $_ -for red
}
}
} |export-csv D:\PowerShell\all_phone.csv -notype -enc utf8 -d ';' -append
Griboed0ff
23-04-2020, 08:02
В общем, так как-то: »Идеально!!! Сейчас кажется даже если и появится какая-нибудь модель айпишки, то мне кажется в скрипте уже все варианты перечислены. Спасибо огромное!
DJ Mogarych
23-04-2020, 08:57
$ips = 130..190 |%{$n=$_;$arr|%{"$_"+$n}}|sort|?{test-connection $_ -count 1 -q}
$ips|%{
if (test-connection $_ -count 1 -q){ »
проверка соединения 2 раза
проверка соединения 2 раза »
-есть проверка существования хостов и если они не отвечают, то в массив не должны попадать...
Хотя, конечно, есть вероятность того, что пока пингуется весь список по порядку, какой-либо хост отключается и соответственно, происходит именно то, что Вы описываете. »
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.