Powershell Get-Item 在某些目录(如 AppData)上不起作用,而 Get-ChildItem 却在

Powershell Get-Item not working on some directories like AppData while Get-ChildItem does

为什么 Get-Item 对某些目录不起作用?例如 gi $env:USERPROFILE\AppData returns“找不到项目”,但是 ls $env:USERPROFILE\AppData 工作正常并且可以列出文件?

我想使用 gi 将一个字符串传递给它,将它变成一个对象,该对象具有其他成员,例如 LastWriteTime。如果我将 ls 用于 Get-ChildItem,我会得到子项,即目录中的文件,而不是目录中的文件。

我可以通过在父级上使用这样的过滤器来解决这个问题:ls -h $env:USERPROFILE | ? {$_.Name -match "AppData"} | select Name,LastWriteTime - 但必须有更好的方法并且它没有解释为什么 gi 不能直接工作。

AppData目录设置了隐藏属性:

PS C:\> attrib $env:USERPROFILE\AppData
    H                C:\Users\username\AppData

隐藏属性是指Get-Item默认忽略它。解决方法是使用 -Force:

PS C:\> Get-Item $env:USERPROFILE\AppData -Force

    Directory: C:\Users\username

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d--h--       11/25/2019  12:41 PM                AppData