powershell Get-ChildItem iis:\ sites | Export_CliXml sites.xml与字符串输出结果不同

时间:2012-08-09 08:13:10

标签: iis powershell get-childitem

简短:

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输出与text和xml相同 而Get-ChildItems IIS:\将一个文本和其他内容作为xml进行匹配? 我误解了什么?

我想问题可能是我从Get-ChildItem iis:\ sites获得异常但仍然生成了输出。 xml输出似乎也可以。


更新:
当我做的时候

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

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

当我添加Bindings

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

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

1 个答案:

答案 0 :(得分:0)

有人可以确认或否认

get-childitem iis:\sites

返回一个包含大量对象(不是字符串和整数)的对象 当它被传送到

export-clixml

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

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

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

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