0

私の PS スクリプトの必須パラメーターの 1 つは、サーバーのリストのテキスト ファイル名を受け入れることです。入力パラメーターを検証して、拡張子が .txt のテキスト ファイル タイプであることを確認するにはどうすればよいですか? txt ファイルでない場合は、スクリプトを終了し、それに応じてユーザーに通知します。

したがって、次のようになりますが、If ステートメント間で検証する方法がわかりません。

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

2 に答える 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
)

/M

于 2013-07-28T17:52:35.513 に答える