如果powershell中不存在文件,则查找文件并退出

时间:2017-08-07 13:22:30

标签: powershell file-extension get-childitem getfiles

有一些简单的脚本:

$sql = Get-ChildItem -Path "C:\files\" -Filter *.sql 

在C:/ files /中可以是:

1。没有文件。(我的问题)

  1. 一个文件(test.sql)

  2. 多个文件。 (test1.sql,test2.sql等)

  3. 3我使用if ($sql.Count -gt 1 )并且工作正常。 2 - 不太相关。

    第一个是问题 - 我有任何方法(方法属性)来检查并获得错误或"退出1"如果源文件根本不存在? (没有任何if / else"魔法") 现在,当文件夹中没有任何* .sql文件时,它将路径字符串放入$ sql变量。

1 个答案:

答案 0 :(得分:1)

当没有与过滤器匹配但只返回空数组的文件时,

Get-ChildItem不会出错。因此,您无法使用-ErrorAction Stop

强制终止错误

这意味着您可能需要使用条件。最简单的是:

if (!($sql)) {throw 1}

另一种选择是:

$sql = Get-ChildItem -Path "C:\files\" -Filter *.sql 
Switch ($sql.count) {
    0 { throw 1}
    1 { "One Item" }
    {$_ -gt 1} { "Multiple Items" }
    default { "Invalid input" }
 }