无法阻止PowerShell更改返回对象的类型

时间:2017-09-17 12:26:39

标签: xml powershell return

当我从函数返回XML对象时,PowerShell将其类型更改为<div class="container"> This div contains two buttons. The event handler is on the div, not the buttons. <div> <button type="button">One</button> <button type="button">Two</button> </div> </div>

enter image description here

我在这里读到:
PowerShell changes return object's type
Preserving PowerShell function return type
https://www.experts-exchange.com/questions/27035513/How-to-stop-PowerShell-function-changing-return-type-of-ArrayList-or-string.html

如何防止它并且所有人都写道,在返回中添加逗号Object[]应该解决它。

我试过了:

,

问题仍然存在 它仍然返回return ,$computer 类型而不是Object[]类型。

示例代码:

XmlElement

1 个答案:

答案 0 :(得分:0)

问题是函数输出consists of everything that isn't captured并且始终是.NET对象。

Function main(){

   [xml]$doc = New-Object System.Xml.XmlDocument

   $computer = getComputerXML $doc
   [void]$computers.AppendChild($computer)
}

你可以像这样检查with / out [void]的区别:

$computers| foreach {$_.GetType().Fullname}
  

return关键字允许您退出任何特定的功能   点,...但我们不需要像我们一样使用return关键字   在C风格的功能。您也可以“选择”指定参数   返回语句将导致参数只输出   回来之前。 “return $ xy”表示函数   只有输出是$ xy变量的内容。 ......

     

当您编写PowerShell函数以确保时,您必须勤奋   你只得到你想要的输出。这通常意味着重定向   不需要的输出到$ null(或者可选地输入表达式   将不需要的输出发送到[void])。