Сценарий Powershell с использованием пространств выполнения

Я новичок в PowerShell, и просто для практики у меня есть инструкции: «Прочитать 100 URL-адресов в массив ... затем, используя пространства выполнения, подключиться к каждому из них и записать страницу, полученную с помощью Invoke-WebRequest, в файл». Потом мне дали ссылку: https://www.zyxware.com/articles/4344/list-of-fortune-500-companies-and-their-websites

Я читал все о пространствах выполнения. Прямо сейчас я работаю над тем, чтобы собрать свои ссылки в массив, из которого я затем могу извлечь первые 100 URL-адресов. Любая помощь / совет будут оценены.

Проблема, которая возникла у меня сейчас, заключается в том, что когда я вызываю переменную ссылки, она не дает мне ссылки. Похоже, я смогу просто вызвать переменную $ link, чтобы получить все ссылки и поместить их в массив. Единственный способ получить все ссылки - использовать "$ page.Links.href". Может кто-нибудь объяснить мне, почему вызов этой переменной не работает?

$page = Invoke-WebRequest https://www.zyxware.com/articles/4344/list-of-fortune-500-companies-and-their-websites

foreach($1 in $page.Links){
    if($1.href -like '*www*com'){
        Write-Host $1.href

        $link = $1.Links.href

    }
}

           $RunspacePool = [RunspaceFactory]::CreateRunspacePool(1, $Throttle)
$RunspacePool.Open()

person Lickwid    schedule 05.02.2018    source источник
comment
зачем начинать с задачи с пространствами выполнения (чрезмерно сложной), если вы даже не знаете, как выполнить HTTP-запрос? вам нужно сделать 3 шага назад и начать с основ, иначе это выглядит так, будто вы случайно получили работу, для которой не подходите (или пытаетесь ее получить)   -  person 4c74356b41    schedule 05.02.2018
comment
Нет, это просто мой друг пытается научить меня PowerShell, и он хочет, чтобы я узнал о пространствах выполнения.   -  person Lickwid    schedule 05.02.2018
comment
Что ж, это глупая отправная точка, вам следует начинать с основ, а не с пространств выполнения. Я не смогу сделать это должным образом из-за того, что в моей памяти более 5 лет опыта работы с PowerShell.   -  person 4c74356b41    schedule 05.02.2018
comment
лол, я скажу ему, что ты сказал это   -  person Lickwid    schedule 05.02.2018


Ответы (1)


Делайте это шаг за шагом.

Прежде чем заниматься чем-то столь же сложным, как пространства выполнения, вам следует пройти несколько быстрых онлайн-курсов и материалов по PowerShell, чтобы иметь базовый уровень. Тем более, что вы говорите, что никогда толком не пользовались PoSH.

https://mva.microsoft.com/en-us/training-courses/getting-started-with-microsoft-powershell-8276

https://youtube.com/results?search_query=beginner+powershell

В Интернете есть несколько бесплатных электронных книг ...

https://powershell.org/ebooks

... а также множество загружаемых скриптов для многих вещей.

https://powershellgallery.com

и длинный список ресурсов ...

Руководство по выживанию Windows PowerShell https://social.technet.microsoft.com/wiki/contents/articles/183.windows-powershell-survival-guide.aspx

Сначала поймите, как использовать PoSH WebCmdlets.

Get-Command -Name Invoke-WebRequest| Format-Table -AutoSize

CommandType Name              Version Source                      
----------- ----              ------- ------                      
Cmdlet      Invoke-WebRequest 3.1.0.0 Microsoft.PowerShell.Utility


# Get paramter, example, full and Online help for a cmdlet or function

(Get-Command -Name Invoke-WebRequest|).Parameters
Get-help -Name Invoke-WebRequest| -Examples
Get-help -Name Invoke-WebRequest| -Full
Get-help -Name Invoke-WebRequest| -Online


Get-Command -Name Invoke-RestMethod | Format-Table -AutoSize

CommandType Name              Version Source                      
----------- ----              ------- ------                      
Cmdlet      Invoke-RestMethod 3.1.0.0 Microsoft.PowerShell.Utility


# Get paramter, example, full and Online help for a cmdlet or function

(Get-Command -Name Invoke-RestMethod ).Parameters
Get-help -Name Invoke-RestMethod  -Examples
Get-help -Name Invoke-RestMethod  -Full
Get-help -Name Invoke-RestMethod  -Online


Then search using the string 'Invoke-WebRequest to parse website for URLs'

Do that website URL parsing first, get that where you need it then move on to runspaces.
If you can't make the first part happen the runspaces is moot.

Итак, попробуйте получить URL-адрес с кодом, который вы собрали, а затем, если у вас возникнут проблемы с этим, опубликуйте то, что вы пробовали, и форум попытается внести свой вклад. То же самое будет применяться к вашему второму шагу части пространства выполнения.

person postanote    schedule 05.02.2018