Powershell不会遍历所有comobjects

时间:2015-10-01 19:15:14

标签: powershell foreach comobject

我正在遍历一个网页,我需要来自特定' td'标记:

$ie.Document.getElementsByTagName("td")

我明白了:

className                    :
id                           :
tagName                      : TD
parentElement                : System.__ComObject
style                        : System.__ComObject
onhelp                       :
onclick                      :
ondblclick                   :
onkeydown                    :
onkeyup                      :
onkeypress                   :
onmouseout                   :
onmouseover                  :
onmousemove                  :
onmousedown                  :
onmouseup                    :
document                     : mshtml.HTMLDocumentClass
title                        :
language                     :
onselectstart                :
sourceIndex                  : 121
recordNumber                 :
lang                         :
offsetLeft                   : 0
offsetTop                    : 32
offsetWidth                  : 42
offsetHeight                 : 32
offsetParent                 : System.__ComObject
innerHTML                    : <span title="" id="jobsForm:jobsTable:0:jobId">886</span>
innerText                    : 886
outerHTML                    : <td><span title="" id="jobsForm:jobsTable:0:jobId">886</span></td>
outerText                    : 886
parentTextEdit               : System.__ComObject
isTextEdit                   : False
filters                      :
ondragstart                  :
onbeforeupdate               :
onafterupdate                :
onerrorupdate                :
onrowexit                    :
onrowenter                   :
ondatasetchanged             :
ondataavailable              :
ondatasetcomplete            :
onfilterchange               :
children                     : System.__ComObject
all                          : System.__ComObject
scopeName                    : HTML
onlosecapture                :
onscroll                     :
ondrag                       :
ondragend                    :
ondragenter                  :
ondragover                   :
ondragleave                  :
ondrop                       :
onbeforecut                  :
oncut                        :
onbeforecopy                 :
oncopy                       :
onbeforepaste                :
onpaste                      :
currentStyle                 : System.__ComObject
onpropertychange             :
tabIndex                     : 0
accessKey                    :
onblur                       :
onfocus                      :
onresize                     :
clientHeight                 : 31
clientWidth                  : 42
clientTop                    : 1
clientLeft                   : 0
readyState                   : complete
onreadystatechange           :
onrowsdelete                 :
onrowsinserted               :
oncellchange                 :
dir                          :
scrollHeight                 : 31
scrollWidth                  : 42
scrollTop                    : 0
scrollLeft                   : 0
oncontextmenu                :
canHaveChildren              : True
runtimeStyle                 : System.__ComObject
behaviorUrns                 : System.__ComObject
tagUrn                       :
onbeforeeditfocus            :
isMultiLine                  : True
canHaveHTML                  : True
onlayoutcomplete             :
onpage                       :
onbeforedeactivate           :
contentEditable              : inherit
isContentEditable            : False
hideFocus                    : False
disabled                     : False
isDisabled                   : False
onmove                       :
oncontrolselect              :
onresizestart                :
onresizeend                  :
onmovestart                  :
onmoveend                    :
onmouseenter                 :
onmouseleave                 :
onactivate                   :
ondeactivate                 :
onmousewheel                 :
onbeforeactivate             :
onfocusin                    :
onfocusout                   :
uniqueNumber                 : 13
uniqueID                     : ms__id13
nodeType                     : 1
parentNode                   : System.__ComObject
childNodes                   : System.__ComObject
attributes                   : System.__ComObject
nodeName                     : TD
nodeValue                    :
firstChild                   : System.__ComObject
lastChild                    : System.__ComObject
previousSibling              :
nextSibling                  : System.__ComObject
ownerDocument                : mshtml.HTMLDocumentClass
role                         :
ariaBusy                     :
ariaChecked                  :
ariaDisabled                 :
ariaExpanded                 :
ariaHaspopup                 :
ariaHidden                   :
ariaInvalid                  :
ariaMultiselectable          :
ariaPressed                  :
ariaReadonly                 :
ariaRequired                 :
ariaSecret                   :
ariaSelected                 :
ie8_attributes               :
ariaValuenow                 :
ariaPosinset                 :
ariaSetsize                  :
ariaLevel                    :
ariaValuemin                 :
ariaValuemax                 :
ariaControls                 :
ariaDescribedby              :
ariaFlowto                   :
ariaLabelledby               :
ariaActivedescendant         :
ariaOwns                     :
ariaLive                     :
ariaRelevant                 :
ie9_tagName                  :
ie9_nodeName                 :
onabort                      :
oncanplay                    :
oncanplaythrough             :
onchange                     :
ondurationchange             :
onemptied                    :
onended                      :
onerror                      :
oninput                      :
onload                       :
onloadeddata                 :
onloadedmetadata             :
onloadstart                  :
onpause                      :
onplay                       :
onplaying                    :
onprogress                   :
onratechange                 :
onreset                      :
onseeked                     :
onseeking                    :
onselect                     :
onstalled                    :
onsubmit                     :
onsuspend                    :
ontimeupdate                 :
onvolumechange               :
onwaiting                    :
constructor                  : System.__ComObject
onmspointerdown              :
onmspointermove              :
onmspointerup                :
onmspointerover              :
onmspointerout               :
onmspointercancel            :
onmspointerhover             :
onmslostpointercapture       :
onmsgotpointercapture        :
onmsgesturestart             :
onmsgesturechange            :
onmsgestureend               :
onmsgesturehold              :
onmsgesturetap               :
onmsgesturedoubletap         :
onmsinertiastart             :
onmstransitionstart          :
onmstransitionend            :
onmsanimationstart           :
onmsanimationend             :
onmsanimationiteration       :
oninvalid                    :
xmsAcceleratorKey            :
spellcheck                   : True
onmsmanipulationstatechanged :
oncuechange                  :
rowSpan                      : 1
colSpan                      : 1
align                        :
vAlign                       :
bgColor                      :
noWrap                       : False
background                   :
borderColor                  :
borderColorLight             :
borderColorDark              :
width                        :
height                       :
cellIndex                    : 0
abbr                         :
axis                         :
ch                           :
chOff                        :
headers                      :
scope                        :
ie9_ch                       :
ie9_chOff                    :

System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject
System.__ComObject

该请求返回了86个条目。每当我尝试迭代列表时,我得到的响应要少得多:

$ie.Document.getElementsByTagName("td") | foreach-object {write-output $_.tagName}
TD
TD
TD
TD
TD
TD
TD
TD
TD
TD
TD
TD
TD
TD

所有86个回复的tagName为&#34; TD&#34; (他们必须,这是他们之前从函数调用返回的要求)。由于某些原因,它没有循环遍历getElementsByTagName()调用返回的所有对象,我不明白为什么。我在这里错过了什么吗?如果我将查询存储在变量中的响应对象本身就是一个comobject,所以我不知道是否有特殊的规则:

$whatpage = $ie.Document.getElementsByTagName("td")
$whatpage
System.__ComObject

编辑:这是页面中的html

http://pastebin.com/embed_js.php?i=qA9wJuBY

1 个答案:

答案 0 :(得分:1)

你得到的结果是显而易见的行为。如果您观察到TagName属性的值,它肯定会是TD,因为您从getElementsByTagName(&#34; td&#34;)方法获得结果,因此它将返回标记名称为TD的所有元素。

现在,如果您要查找标记内的值(TD或表数据)以从表格单元格中返回值,那么您应该使用$whatpage | %{$_.InnerText}$ie.Document.getElementsByTagName("td") | foreach-object {write-output $_.InnerText}

希望有所帮助!