使用Test-path检查多个路径

5
在我的函数中,我有三个非必填的、非位置参数Folder1、Folder2和Folder3,在运行我的函数之前,我想检查每个选择的参数是否存在文件夹。它必须是一些动态的东西,因为用户可以随意指定一个、两个或三个文件夹。 提前谢谢。
1个回答

7

你可以将数组传递给Test-Path

Test-Path c:, d:, e:
True
True
True

编辑

从你的评论中,我理解你可能有这样一些情况:

$mypaths = "c:","d:",$null
Test-Path $mypaths

以下错误是什么问题导致的:

Test-Path : Cannot bind argument to parameter 'Path' because it is null.

那么您可以尝试这个:

然后您可以尝试这个:

$mypaths = "c:","d:",$null
$mypaths | Foreach { if ($_){Test-Path $_}}

这导致只有两条有效路径。因此,您可以考虑检查返回的值:
$valid = $mypaths | Foreach { if ($_){Test-Path $_}}

write-host "Variable `$mypaths contains $($mypaths.count) paths, and $($valid.count) were found valid"

这将输出:

Variable $mypaths contains 3 paths, and 2 were found valid

你好 Micky,当我使用你的解决方案时出现了一个错误:Test-Path: 无法将参数“Path”绑定到空字符串 - kekimian
你是按照我的解决方案原样尝试了还是使用了其他变量? - Micky Balladelli
这个解决方案只在三个变量都为true时才有效,但正如我所说,它必须是动态的,函数参数可以输入也可以不输入。 - kekimian
我认为更符合惯用语的写法应该是 $valid = $mypaths | where {$_ -and (Test-Path $_)} - Tomalak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接