Я пытаюсь поймать 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> HW Status</A> : EOL HW<SPAN style="FONT-WEIGHT: lighter; DISPLAY: inline-block"> (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> 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> HW Status</A> : Approved Model<SPAN style="FONT-WEIGHT: lighter; DISPLAY: inline-block"> (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> HW Status</A> : EOL HW<SPAN style="FONT-WEIGHT: lighter; DISPLAY: inline-block"> (47) </SPAN
Надеюсь, этого достаточно
Возможно, я здесь не понимаю, как ведут себя веб-страницы, но я пытаюсь добиться успеха для поиска «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 " 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&ListId={5696DF31-E236-4F3F-8EE2-90707DADC0EA}&ID=4&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> </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> </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>
По сути, вы не можете напрямую, не для Javascript.
Javascript выполняется программой браузера на стороне клиента : Internet Explorer, Firefox, Chrome и т. Д. al. Следовательно, чтобы выполнить его, вам нужно щелкнуть мышью в браузере.
Powershell может настраивать переменные формы и передавать их серверной обработке, вызывая HTTP-запросы, но по порядку чтобы проанализировать страницу и выполнить клиентский JavaScript, вам понадобится HTML-синтаксический анализатор с поддержкой Javascript. А именно - браузер.
То, что обычно делается в таких ситуациях, похоже на парсинг веб-страниц , когда специализированная программа браузера - обычно безголовая версия chrome / firefox или более специализированный браузер запускается для нужной страницы, и вы запрограммируйте его информацией, которая будет симулировать щелчки мыши / события клавиатуры.
Существуют отдельные библиотеки, которые позволяют интегрировать парсинг веб-страниц в общие языки программирования. Возможно, вы можете использовать его и управлять им из Powershell, но в любом случае это еще один слой между PS и веб-страницей, без которого вы не можете этого сделать, afaik.
Альтернативой было бы перепрограммировать соответствующие функции Javscript веб-страницы (такие как ExpCollGroup в вашем примере) в Powershell, но, вероятно, потребуется дополнительная информация с веб-страницы, которую может быть трудно извлечь.