ログファイルのパスとして引数を受け取る関数を作成しようとしています。
このパラメータを文字列パスを受信できるようにするか、引数なしで[switch]
として使用します。空の値または空でない値を受け取る入力パラメーターを作成する方法
私がカバーする必要がある、私は3つのシナリオを持っていると私は一つのパラメータのみでそれをやってみたかったので、私はそれをしたい理由は次のとおりです。パラメータが渡されていない
1パラメータがで渡され
2空の引数
3.パラメータがここで引数
で渡されたが、私が欲しいものを証明するスクリプトです:
function myFunc(){
param(
$LogFile = $null
)
# 1. PS > myFunc
if($LogFile -eq $null){
}
# 2. PS > myFunc -LogFile
if($LogFile -eq ""){
}
# 3. PS > myFunc -LogFile "C:\tmp\log.txt"
else{
}
}
は、それは、EMを受信することができ、このような入力パラメータを作成することが可能ですptyと空でない値
私はmyFunc -LogFile
を実行すると、私はエラーが表示されます。
myFunc : Missing an argument for parameter 'LogFile'. Specify a parameter of type 'System.Object' and try again.
At line:1 char:8
+ myFunc -LogFile
+ ~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [myFunc], ParameterBindingException
+ FullyQualifiedErrorId : MissingArgument,myFunc
それは[switch]
に設定されていないので、私はmyFunc -LogFile c:\tmp\file.txt
を実行することはできませんよりも、私は[switch]
を追加する場合、これは次のとおりです。
myFunc : A positional parameter cannot be found that accepts argument 'C:\tmp\file.txt'.
At line:1 char:1
+ myFunc -LogFile C:\tmp\file.txt
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [myFunc], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,myFunc
また、[AllowNull()]
と[AllowEmptyString()]
を使用しようとしましたが、それでもいくつかのcharが必要です。
詳細については、hereを参照してください。
たぶん私の質問はありませんでした私は受け取ったエラーに関する情報を追加しました。 – E235
あなたがしようとしていることは、ただ1つのパラメータでは可能ではないと思います。私が見る唯一のオプションは、関数内の '$ args'を手作業で処理することです。 – Raziel