验证param输入以确保它是文本文件

时间:2013-07-28 02:59:00

标签: validation powershell input

我的PS脚本的一个必需参数是接受服务器列表的文本文件名。如何验证输入参数以确保它是扩展名为.txt的文本文件类型?如果不是txt文件,那么我将退出脚本并相应地通知用户。

所以它会是这样的,但不确定如何在If语句之间进行验证:

process
{
    if  (....)
    {
        throw "$($Filename) must be a txt file with .txt extension"
    }
}

2 个答案:

答案 0 :(得分:2)

两个选项。第一种方式,如果指定的文件名不存在,它将抛出一个错误,表明该路径不存在,无论扩展名如何:

process 
{
    if ((Get-Item $filename -ErrorAction Stop).Extension -ne '.txt') 
    {
      throw "$($filename) must be a txt file with .txt extension"
    }
}

另一种方法,只需检查 $ filename 是否具有.txt扩展名,无论它是否存在:

process 
{
    if (-not $filename.EndsWith('.txt'))
    {
      throw "$($filename) must be a txt file with .txt extension"
    }
}

这样,你需要处理以后文件是否存在的问题,但如果你想在不存在的文件中抛出有关扩展的错误以及文件的不存在,你可能更喜欢这个。不以.txt结尾。

答案 1 :(得分:2)

从手机发布,可能包含错误..

param(
[parameter(mandatory=$true)]
[validatescript({(Get-Item $_).Extension -eq '.txt'})]
$filename
)

/ M