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

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

Старожил


Сообщения: 211
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата YuS_2:
используйте параметр-переключатель -Append в Export-Csv »
такой параметр нашел только у out-file.
слепил три вместе
Код: Выделить весь код
Get-WmiObject Win32_NetworkAdapter -Filter 'AdapterTypeId = 0 and MACAddress is not null' |
select @{n='Системный блок';e={$_.macaddress}}|
Out-File 'D:\PowerShell\temp\общий.csv'

$ofs = ''
gwmi wmimonitorid -Namespace root\wmi | Select @{n='UserFriendlyName';e={([string][Char[]]$_.UserFriendlyName).SubString(0,$_.UserFriendlyNameLength)}}, @{n='SerialNumberID';e={[string][Char[]]$_.SerialNumberID}} | Out-File 'D:\PowerShell\temp\общий.csv' -Append

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
		}
	}
}  Out-File 'D:\PowerShell\temp\общий.csv' -Append
первые два отрабатывали, а когда добавил третий появилась ошибка
Скрытый текст
Код: Выделить весь код
строка:10 знак:12
+     $encode = 65001,
+               ~~~~~
Недопустимое условие назначения. Входным значением оператора назначения должен быть объект, способный принимать назначения, такой как переменная или свойство.
строка:11 знак:21
+     [string]$outfile = 'table.csv',
+                        ~~~~~~~~~~~
Недопустимое условие назначения. Входным значением оператора назначения должен быть объект, способный принимать назначения, такой как переменная или свойство.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : InvalidLeftHandSide
я так понимаю неправильно приписал к третьему out-file. если взять только третий и out-flie то:
Скрытый текст
Код: Выделить весь код
			write-host Ошибка: $_ -for red
		}
	}
} Out-File 'D:\PowerShell\temp\общий.csv' -Append
ForEach-Object : Не удается привязать параметр "RemainingScripts". Не удается преобразовать значение "Out-File" типа "System.String" в тип "System.Management.Automation.ScriptBlock".
строка:22 знак:6
+ $ips|%{
+      ~~
    + CategoryInfo          : InvalidArgument: (:) [ForEach-Object], ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.ForEachObjectCommand

Отправлено: 16:13, 22-04-2020 | #5