PowerShell 一行命令显示本地 git 个存储库的名称

PowerShell one line command to display names of local git repositories

我正在尝试编写一个简单的命令来显示所有 git 存储库在我的本地磁盘上的位置。以下命令

get-childitem -path d:\ .git -recurse -directory -hidden

显示所有需要的信息,但也显示以下错误信息:

get-childitem : Access to the path 'D:\System Volume Information' is denied.
At line:1 char:1
+ get-childitem -path d:\ .git -recurse -directory -hidden
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (D:\System Volume Information:String) [Get
   -ChildItem], UnauthorizedAccessException
    + FullyQualifiedErrorId : DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.Get
   ChildItemCommand

我尝试了各种 -filter 和 -exclude 选项来防止命令尝试访问禁止目录,但 none 达到了预期的效果。

如果不显式调用它,就无法告诉 powershell“不要调用您无法访问的目录”。相反,您必须让 powershell 尝试访问它,然后在错误发生时处理它。

我可能是错的,但听起来您很担心中断数据流的错误。听起来您并不真正关心 powershell 是否正在尝试访问隐藏目录。如果是这种情况,我建议抑制错误并存储在变量中。然后,如果你想看看失败的是什么,你可以调用变量。例如:

get-childitem -path d:\ .git -recurse -directory -hidden -ErrorAction SilentlyContinue -ErrorVariable bad

# Display the errors

$bad