0

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

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

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

2 回答 2

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 结尾。

于 2013-07-28T03:29:06.753 回答
2

来自手机的帖子,可能包含错误..

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

/米

于 2013-07-28T17:52:35.513 回答