当我在Powershell(安装了v3)中观察到一些奇怪的行为时,我正在整理一个简单的演示脚本。
$file = ls 'C:\temp' | Where-Object {$_.Extension -eq '.txt'}
$file.FullName
#$file.GetType()
dir 'c:\temp'
非常善良吧?它按预期运行(假设您有一个带有txt文件的c:\ temp目录)。但是,当您取消注释$ file.GetType()行时,后面的dir行不再提供简单的目录列表。相反,它将提供目录中所有项目的详细列表。我尝试将GetType管道输出为null,然后dir再次正常工作,但我似乎无法对GetType进行操作并在之后列出目录。
所以我很好奇调用GetType做了什么导致其他cmdlet下游的更改?任何人都可以解释导致它的机制吗?
此外,我尝试了一些其他方法,发现一些导致问题(如GetAccessControl)而其他方法没有(如GetHashCode)。因此,不仅仅是通过调用方法,某些方法会导致行为。
答案 0 :(得分:3)
在我看来,这只是一个问题,即默认的表格混淆并切换到格式列表显示而不是格式表。
如果取消注释GetType(),然后将目录列表显式地传递给FT,它将恢复正常。