将-Recurse选项添加到我的powershell脚本
我有一个作用于单个文件系统项的函数,我想添加递归文件系统的功能作为一个选项,类似于Get ChildItems-recurse。 我读到GCI recurse遇到一个它没有读取权限的目录时出现问题,抛出异常并停止。我想知道最好的方法是什么 我应该将-Recurse选项添加到我的powershell脚本,powershell,Powershell,我有一个作用于单个文件系统项的函数,我想添加递归文件系统的功能作为一个选项,类似于Get ChildItems-recurse。 我读到GCI recurse遇到一个它没有读取权限的目录时出现问题,抛出异常并停止。我想知道最好的方法是什么 我应该 将管道添加到我的函数并执行:gci-递归$path |编辑我的详细信息-添加“我的评论” 在我的函数中添加一个递归开关,并在内部使用GCI实现目录递归:edit mydetails-recurse-Path c:\users\me\Documents\
gci-递归$path |编辑我的详细信息-添加“我的评论”
edit mydetails-recurse-Path c:\users\me\Documents\MyProject-Add“my details”
...
if ($Recurse) {
gci -Recurse -Path $Path | % { do-stuff $_.Name }
} else {
do-stuff $Path
}
...
谢谢。您可以尝试一下:
try{
gci -Recurse -Path $Path | % { do-stuff $_.Name }
catch{
### Filter out the bad folder and try again
gci -Recurse -Path $Path -filter "Path -ne '$badPath'" | % { do-stuff $_.Name }
}
你可以试着抓住它:
try{
gci -Recurse -Path $Path | % { do-stuff $_.Name }
catch{
### Filter out the bad folder and try again
gci -Recurse -Path $Path -filter "Path -ne '$badPath'" | % { do-stuff $_.Name }
}
我读到GCI recurse遇到一个它没有读取权限的目录时出现问题,抛出异常并停止
否:默认情况下,在遍历过程中遇到错误时不会停止:它发出非终止错误并继续
您可以使用通用的-ErrorAction
参数来修改该行为,特别是-ErrorAction SilentlyContinue
来抑制错误显示,同时仍在自动$error
变量中收集错误,-ErrorAction Ignore
来完全安静地忽略错误,和-ErrorAction Stop
,在遇到第一个(非终止)错误时确实停止处理
此外,您可以使用-ErrorAction
收集指定变量中的所有错误,除非您还指定了-ErrorAction Ignore
我应该:
将管道添加到我的函数并执行:gci-递归$path |编辑我的详细信息-添加“我的评论”
是的,您应该:没有充分的理由在您的函数中复制Get ChildItem[-Recurse]
的功能。相反,让函数通过管道接受[System.IO.FileInfo]
输入和文件系统路径字符串(可选)
我读到GCI recurse遇到一个它没有读取权限的目录时出现问题,抛出异常并停止
否:默认情况下,在遍历过程中遇到错误时不会停止:它发出非终止错误并继续
您可以使用通用的-ErrorAction
参数来修改该行为,特别是-ErrorAction SilentlyContinue
来抑制错误显示,同时仍在自动$error
变量中收集错误,-ErrorAction Ignore
来完全安静地忽略错误,和-ErrorAction Stop
,在遇到第一个(非终止)错误时确实停止处理
此外,您可以使用-ErrorAction
收集指定变量中的所有错误,除非您还指定了-ErrorAction Ignore
我应该:
将管道添加到我的函数并执行:gci-递归$path |编辑我的详细信息-添加“我的评论”
是的,您应该:没有充分的理由在您的函数中复制
Get ChildItem[-Recurse]
的功能。相反,让您的函数接受[System.IO.FileInfo]
输入,还可以选择通过管道接受文件系统路径字符串。Get ChildItem
仅会发出非终止错误(除非调用语法不正确),因此try
/catch
语句无效(除非您也使用了-ErrorAction Stop
)。Get ChildItem
只会发出非终止错误(除非调用语法不正确),因此try
/catch
语句无效(除非您也使用了-ErrorAction Stop
)。