Как я могу щелкнуть ссылку с помощью PowerShell?

Я пытаюсь поймать onclick в нашей интрасети. Я не продвинулся далеко в своем коде, и я не знаю, как это сделать, а затем перейти к получению информации с веб-страницы. Я получил это из нашей внутренней сети:

innerHTML                    : <TD class=ms-gb noWrap colSpan=100><A onclick="javascript:ExpCollGroup('7111-2_', 'img_7111-2_',event, false);return false;" href="javascript:"><IMG id=img_7111
                           -2_ alt=expand src="/_layouts/images/plus.gif" border=0>&nbsp;HW Status</A> : EOL HW<SPAN style="FONT-WEIGHT: lighter; DISPLAY: inline-block">&nbsp;‎(47) </SPAN
                           ></TD>
innerText                    :  HW Status : EOL HW ‎(47) 
outerHTML                    : 
                           <TR id=group0><TD class=ms-gb noWrap colSpan=100><A onclick="javascript:ExpCollGroup('7111-2_', 'img_7111-2_',event, false);return false;" href="javascript:"><I
                           MG id=img_7111-2_ alt=expand src="/_layouts/images/plus.gif" border=0>&nbsp;HW Status</A> : EOL HW<SPAN style="FONT-WEIGHT: lighter; DISPLAY: inline-block">&nbs
                           p;‎(47) </SPAN></TD></TR>
outerText                    :  HW Status : EOL HW ‎(47) 

Это мой код:

Clear-Host
$HTML = Invoke-WebRequest -uri "http://share.mycompany.org/tools/desktopmanagement/Lists/Standard%20PC%   20Hardware/HW%20Status.aspx" -UseDefaultCredentials
$Rows = ($HTML.ParsedHtml.getElementsByTagName("td") | Where{ $_.className -eq 'ms-gb' } ).innerHTML
foreach($Row in $Rows) {
    $Row
}

Это мой вывод $ Row

<A onclick="javascript:ExpCollGroup('860-1_', 'img_860-1_',event, false);return false;" href="javascript:"><IMG id=img_860-1_ alt=expand src="/_layouts/images/plus.gif" border=0>&nbsp;HW Status</A> : Approved Model<SPAN style="FONT-WEIGHT: lighter; DISPLAY: inline-block">&nbsp;‎(36) </SPAN>
<A onclick="javascript:ExpCollGroup('860-2_', 'img_860-2_',event, false);return false;" href="javascript:"><IMG id=img_860-2_ alt=expand src="/_layouts/images/plus.gif" border=0>&nbsp;HW Status</A> : EOL HW<SPAN style="FONT-WEIGHT: lighter; DISPLAY: inline-block">&nbsp;‎(47) </SPAN

Надеюсь, этого достаточно

0
задан 7 May 2018 в 23:51
2 ответа

Возможно, я здесь не понимаю, как ведут себя веб-страницы, но я пытаюсь добиться успеха для поиска «Dell Optiplex 7010» и выберите этот текст «30/07/2017». Причина названия темы в том, что я не вижу приведенный ниже источник на веб-странице, когда загружаю страницу в первый раз. Поэтому я был немного не уверен, существует ли приведенный ниже источник только в том случае, если я нажал ссылку. Я нашел приведенный ниже источник, нажав F12 в IE.

<TR class=ms-itmhover iid="7043,4,0" setEdgeBorder="true">
<TD class="ms-vb-itmcbx ms-vb-firstCell"><INPUT title="Dell Optiplex 7010&#13;&#10;  " class=s4-itm-cbx type=checkbox value="" _setup="true"></TD>
<TD class=ms-vb2>Desktop</TD>
<TD height="100%" class=ms-vb-title onmouseover=OnChildItem(this)>
<DIV class="ms-vb itx" id=4 onmouseover=OnItem(this) EventType="" Perm="0xb008431061" Field="LinkTitle" CTXName="ctx7043"><A onclick="EditLink2(this,7043);return false;" onfocus=OnLink(this) href="http://share.intranet.org/tools/desktopmanagement/_layouts/listform.aspx?PageType=4&amp;ListId={5696DF31-E236-4F3F-8EE2-90707DADC0EA}&amp;ID=4&amp;ContentTypeID=0x0100FA254EECE740F54DA0D1B9E62EEDBB94" target=_self>Dell Optiplex 7010</A></DIV>
<DIV class=s4-ctx style="HEIGHT: 25px; LEFT: 830px; MARGIN: 0px; LINE-HEIGHT: 25px; TOP: 112px" onmouseover="OnChildItem(this.parentNode); return false;" shown="false"><SPAN>&nbsp;</SPAN><A title="Open Menu" onclick="PopMenuFromChevron(event); return false;" onfocus="OnChildItem(this.parentNode.parentNode); return false;" href="javascript:;"><IMG width=7 height=4 style="VISIBILITY: hidden" alt="Open Menu" src="/_layouts/images/ecbarw.png"></A><SPAN>&nbsp;</SPAN></DIV></TD>
<TD class=ms-vb2>EOL HW</TD>
<TD class=ms-vb2><NOBR>01/07/2012</NOBR></TD>
<TD class="ms-vb2 ms-vb-lastCell"><NOBR>30/07/2017</NOBR></TD></TR>
0
ответ дан 4 December 2019 в 13:26

По сути, вы не можете напрямую, не для Javascript.

Javascript выполняется программой браузера на стороне клиента : Internet Explorer, Firefox, Chrome и т. Д. al. Следовательно, чтобы выполнить его, вам нужно щелкнуть мышью в браузере.

Powershell может настраивать переменные формы и передавать их серверной обработке, вызывая HTTP-запросы, но по порядку чтобы проанализировать страницу и выполнить клиентский JavaScript, вам понадобится HTML-синтаксический анализатор с поддержкой Javascript. А именно - браузер.

То, что обычно делается в таких ситуациях, похоже на парсинг веб-страниц , когда специализированная программа браузера - обычно безголовая версия chrome / firefox или более специализированный браузер запускается для нужной страницы, и вы запрограммируйте его информацией, которая будет симулировать щелчки мыши / события клавиатуры.

Существуют отдельные библиотеки, которые позволяют интегрировать парсинг веб-страниц в общие языки программирования. Возможно, вы можете использовать его и управлять им из Powershell, но в любом случае это еще один слой между PS и веб-страницей, без которого вы не можете этого сделать, afaik.

Альтернативой было бы перепрограммировать соответствующие функции Javscript веб-страницы (такие как ExpCollGroup в вашем примере) в Powershell, но, вероятно, потребуется дополнительная информация с веб-страницы, которую может быть трудно извлечь.

2
ответ дан 4 December 2019 в 13:26

Теги

Похожие вопросы