简短:
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)
答案 0 :(得分:0)
有人可以确认或否认
get-childitem iis:\sites
返回一个包含大量对象(不是字符串和整数)的对象 当它被传送到
时export-clixml
代码将对每个属性执行ToString并返回它们的类型名称。
如果是上述情况(可能是),则解决方案是
Get-ChildItem IIS:\Sites | select Name,ID,State,PhysicalPath | Get-CliXml sites.xml
但不适用于像Binding这样的复杂属性。