Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Старожил


Сообщения: 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

Отправлено: 09:04, 22-04-2020 | #81