Windows 8.1企业版
$PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
4 0 -1 -1
这是我看到的内容。在子目录“level2”中有一个名为“commands2.txt”的文件。为了简便,它是“testing”结构中唯一的文件。 完整路径为c:\ users \ chris \ testing \ level2 \ commands2.txt。
设置 从c:\ users \ chris \ testing作为当前目录。
$stuff = gci c:\users\chris\testing\ -Recurse command*.txt
$stuff2 = gci c:\users\chris\testing\* -Recurse command*.txt
所以现在,
get-item $stuff
返回 "get-item : 无法找到路径 'C:\Users\chris\testing\commands2.txt',因为该路径不存在。" 请注意,“level2”缺失。看起来只是将.Name附加到当前路径。
但是
get-item $stuff2
返回完整路径文件的get-item预期结果。
有点奇怪,所以这就是我感到困惑的地方。
Compare-Object $stuff $stuff2
说明它们是不同的。
InputObject SideIndicator
----------- -------------
C:\users\chris\testing\level2\commands2.txt =>
commands2.txt <=
但是:
$a = $stuff | select *
$b = $stuff2 | select *
compare-object $a $b -includeEqual
显示它们是相同的。 我知道我可以通过将 "*" 放在路径中来解决这个问题。 但为什么变量不同,我该如何判断? 为什么 InputObject 不同? 有没有办法查看两个变量 $stuff 和 $stuff2 之间的差异? 更新:Vesper 基本上已经解决了这个问题。使用 get-childitem 和 tostring 在此处搜索会返回有用的问题。我的问题似乎是其他一些问题的变体。 神秘的不同转换为 string[] 的输入数据 显示了发生了什么。此外,基于先前的链接,这里还有一个来自 2010 年的错误报告:https://connect.microsoft.com/PowerShell/feedback/details/556004/get-childitem-gets-fileinfo-constructed-in-different-ways-depending-on-parameters。美好的时光。
get-item $stuff.FullName
或者get-item $stuff.PSPath
,而不是仅仅使用get-item $stuff
。 - user4003407