param ( [string]$uri = 'https://docs.microsoft.com/en-us/sysinternals/downloads/', [string]$infile= 'html.html', [string]$outfile = 'out.txt', $Encode = 'utf8', $enc1 = 65001, $enc2 = 28591, $tag = 'p', [switch]$Local ) #measure-command{ #---Эту секцию можно удалить после однократного запуска скрипта от имени админа ------------------ # Установка дополнительного модуля 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) } } function get-urlelements ([object[]]$array){ foreach ($item in $array){ rv -n 'element','velem','name','attr','href','linktype', 'link','arr','version','date' -force -ea 0 $element = $item.element('a') $velem = $item.element('em') $name = $element.innertext.trim() $attr = $element.attributes $href = ($attr|? name -eq href).value $linktype = ($attr|? name -eq 'data-linktype').value $link = if ($linktype -eq "external"){$href} else {$uri + $href} if ($velem){ $arr = $velem.innertext -split ' \(' $version = $arr[0] $date = $arr[1].trim(')') } $descr = $item.getdirectinnertext().trim() [PSCustomObject]@{ Page = $link Name = $name Version = $version Date = $date Description = $descr } } } if ($pscore = $psversiontable.psversion.major -gt 5){ #import-module bitstransfer #if ($encode -eq 'utf8'){$encode = 'utf-8'} [net.servicepointmanager]::securityprotocol = 0 } else { [net.servicepointmanager]::securityprotocol = 'ssl3,tls,tls11,tls12' } if ($local) {$a = gc $infile -raw -enc $encode} else {$a = (iwr $uri).content} $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]$links = $html.selectnodes("//$tag[a[@href]]") get-urlelements $links #|ogv |