当前位置: 首页 > 知识库问答 >
问题:

Powershell在路径中带有Get-ChildItem和通配符的奇怪行为

茅华灿
2023-03-14

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 
    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

说明他们是一样的。我知道我可以通过在路径中加上“*”来解决这个问题。

但为什么变量不一样,我又该怎么分辨呢?

更新:Vesper基本上把它钉死了。使用get-childitem和tostring在此搜索会返回一些有用的问题。我的似乎是其他一些的变种。看似相同的输入数据到String[]的神秘的不同转换显示了发生了什么。此外,这里还有一个2010年的bug报告:https://connect.microsoft.com/powershell/feedback/details/556004/get-childitem-gets-fileinfo-construction-in-difference-ways-distinction-on-parameters基于前面链接。好时光。

共有1个答案

彭烨熠
2023-03-14

差别非常细微,您可以通过它们的toString()结果来区别它们。

 PS > $stuff.toString()
 commands2.txt    
 PS > $stuff2.toString()
 C:\users\chris\testing\level2\commands2.txt 

这里的there是MSDN上的一些数据,它指示toString()不一致地返回文件的全名。你好像碰到了这个问题。我说这是一个bug,但有一种方法可以通过查询toString()并对照fullname来发现这个bug是否发生了。

 if ($stuff.toString() -ne $stuff.fullName) { Write-Host "Bug!" }
 类似资料:
  • 我试图理解编译器在这里抱怨的原因: 使用编译时生成的消息 如下: cexpr_test.cpp:在函数 'int main()' 中: cexpr_test.cpp:12:76: error: 'const std::initializer_list{((const char* const*)( 令人困惑的是,为什么它会毫无问题地构造第一个初始值设定项列表。我在这里缺少什么?

  • 我使用这个类在ImageView上绘制TriangleShapeView,它在用户单击事件时改变它的颜色和可绘制的图像。 在RecyclerView onBindViewHolder方法中,我检查,然后相应地设置TriangleShapeView颜色和可绘制图像: 在setOnClickListener中: 当项目第一次加载时,这可以正常工作,但当用户单击时: -第一个 我使用下面的xml布局来扩

  • 问题内容: 给定一个数组,返回最后一个对象。例如: 在研究此问题时,除了这篇看似无关的SO帖子,我无法找到其他东西,这使我发现这是numpy中的一个公开错误(截至2015年3月):第一个报告和更相关的问题。发布此信息,以便其他人对此有所了解,可以更有效地找到此信息。 问题答案: 在版本,并表现为经典短路逻辑和/或功能。想到LISP行为。Python和运算符可以做到这一点。 一些例子: 返回逻辑上为

  • 问题内容: 我遇到了图例和错误栏绘图命令的相当奇怪的行为。我将Python xy 2.7.3.1与 以下代码结合使用,以例证所观察到的行为: 这产生了这个情节: 如您所见,错误栏上限正在覆盖散点图。如果我增加zorder足够多,这种情况将不再发生,但是情节线将覆盖图例。我怀疑问题与matplotlib的zorder问题有关。 快速,肮脏,hacky解决方案也受到赞赏。 编辑(感谢@nordev):

  • 问题内容: 我正在运行应该执行方法的Shell脚本: 在这一点上,我得到这个异常: 这是因为弹簧罐位于另一个文件夹中。所以我更改了脚本: 但是,使用此脚本无法找到com.example.ClassTest。关于这个问题有什么想法吗? 提前致谢 问题答案: Java类路径通配符扩展不常见。 从文档: 了解类路径通配符 类路径条目可以包含基本名称通配符,这被认为等效于指定目录中所有扩展名为.jar或.

  • 问题内容: 我在JTextPane / JTextField(或它们下方的字体渲染中的某个地方)中发现了一个奇怪的错误。我想知道是否有人遇到过这种情况,并且可能对此有解决方案。 我试图在JTextPane中显示一些“特殊”或稀有字符,并且一旦更改JTextField的字体(与JTextPane完全无关!),JTextPane就会“分手”,不再显示这些字符字符。 这应该可以更好地解释我的意思: 编辑