0

短的:

Get-ChildItem IIS:\Sites
Get-ChildItem IIS:\Sites | Get-CliXml sites.xml

以字符串形式返回一件事,以 xml 形式返回另一件事。为什么?


更长:
当我跑步时

Get-ChildItem IIS:\Sites

我得到了一些东西

Name             ID    State    Phys...
Default Web Site 1     Started  C:\i...
MyTestSite       2     Started  C:\i...

但是当我像这样将它通过管道传输到 Export-CliXml 时:

Get-ChildItem IIS:\Sites | Get-CliXml sites.xml

我对其中的“默认网站”或“MyTestSite”一无所知。=> 字符串和 xml 没有任何共同之处。

当我对 Get-Process 做同样的事情时

Get-Process | Export-CliXml processes.xml

我可以在输出文件中找到我的进程。=> 字符串中的内容可以在 xml 中找到。

为什么 Get-Process 输出与文本和 xml 大致相同,
而 Get-ChildItems IIS:\Sites 一个文本和其他内容作为 xml?
我误解了什么?

我想一个问题可能是我从 Get-ChildItem iis:\sites 得到一个异常,但仍然生成输出。xml输出似乎也不错。


更新:
当我这样做时

Get-ChildItem IIS:\Sites | select Name,ID,State,PhysicalPath | Get-CliXml sites.xml

我得到了我正在寻找的价值观。

当我添加绑定时

Get-ChildItem IIS:\Sites | select Name,ID,State,PhysicalPath,Bindings | Get-CliXml sites.xml

只有 2 个站点被迭代,我收到一条错误消息。xml无论如何都很好。(我相信代码中有一些构造良好的try-catch)

4

1 回答 1

0

有人可以确认或否认

get-childitem iis:\sites

返回一个包含很多对象(不是字符串和整数)的对象,
并且当它被传送到

export-clixml

该代码将对每个属性执行 ToString 并为它们返回类型名称。

如果是上述情况(可能是),解决方案是

Get-ChildItem IIS:\Sites | select Name,ID,State,PhysicalPath | Get-CliXml sites.xml

但不适用于像 Binding 这样的复杂属性。

于 2012-08-09T12:52:13.890 回答