如果我首先使用反射加载了一个程序集,我会从脚本中的New-Item
获得一些不寻常的输出。为什么呢?
如果我跑
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Administration")
New-Item -Path "temp" -ItemType directory
我从New-Item获得以下奇数输出:
PSPath : Microsoft.PowerShell.Core\FileSystem::C:\Users\swoogan\Desktop\temp
PSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\Users\swoogan\Desktop
PSChildName : temp
PSDrive : C
PSProvider : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : True
Name : temp
Parent : Desktop
Exists : True
Root : C:\
FullName : C:\Users\swoogan\Desktop\temp
Extension :
CreationTime : 7/28/2014 11:03:10 AM
CreationTimeUtc : 7/28/2014 3:03:10 PM
LastAccessTime : 7/28/2014 11:03:10 AM
LastAccessTimeUtc : 7/28/2014 3:03:10 PM
LastWriteTime : 7/28/2014 11:03:10 AM
LastWriteTimeUtc : 7/28/2014 3:03:10 PM
Attributes : Directory
BaseName : temp
Mode : d----
我期待的输出是:
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 7/28/2014 11:03 AM temp
如果我将LoadWithPartialName
的输出传递给Out-Null
,那么我确实得到了预期的输出。我想了解这里发生的事情,以便将来可以预见到这些差异。
答案 0 :(得分:2)
我想我想出来了。
在LoadWithPartialName
的原始情况下,脚本的输出是PSObject
的数组,因为Powershell将任何未处理的对象发送到管道,并且项目是混合类型(0 = AssemblyInfo)来自Load; 1 =来自new-item的DirectoryInfo)。
如果将LoadWithPartialName
重定向到[void]
甚至将输出保存在变量中,则脚本的输出是单个DirectoryInfo
对象。
PSObject
的格式与DirectoryInfo