Старожил
Сообщения: 211
Благодарности: 2
|
Профиль
|
Отправить 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
|