powershellを使用してパラメータから変数の型を取得するにはどうすればよいですか? TypeOf(xyz)が整数の場合、TypeOf(xyz)が文字列またはの場合、の効果があります。powershellを使用してパラメータから変数の型を取得する
私の目的として、文字列かどうかを確認したいのですか?私は、パラメータを持つ単一の関数を使用したいと思います。 securestringとstringの2つの別々の関数ではありません。
powershellを使用してパラメータから変数の型を取得するにはどうすればよいですか? TypeOf(xyz)が整数の場合、TypeOf(xyz)が文字列またはの場合、の効果があります。powershellを使用してパラメータから変数の型を取得する
私の目的として、文字列かどうかを確認したいのですか?私は、パラメータを持つ単一の関数を使用したいと思います。 securestringとstringの2つの別々の関数ではありません。
あなたの質問に直接答えがthe -is
operatorを使用することです:
if ($xyz -is [String]){}
if ($xyz -is [SecureString]){}
if ($xyz -isnot [int]){}
しかし掘り深い:
私はパラメータで、単一の機能を使用したいと思います。 securestringとstringの2つの別々の関数ではありません。
あなたが使用しているどのバージョンを区別するためにparameter setsと、単一の機能を使用することができます。
function Do-Thing {
[CmdletBinding()]
param(
[Parameter(
ParameterSetName = 'Secure',
Mandatory = $true
)]
[SecureString]
$SecureString ,
[Parameter(
ParameterSetName = 'Plain',
Mandatory = $true
)]
[String]
$String
)
switch ($PSCmdlet.ParameterSetName)
{
'Plain' {
# do plain string stuff
}
'Secure' {
# do secure stuff
}
}
}
は先に行くと、そのサンプルの定義を実行し、ヘルプを見て:
Get-Help Do-Thing
生成されたパラメータセットが表示されます。生成されたパラメータセットは、呼び出すことができる2つの方法を示しています。それぞれの方法は、相互に排他的な単一のパラメータです。
NAME Do-Thing SYNTAX Do-Thing -SecureString <securestring> [<CommonParameters>] Do-Thing -String <string> [<CommonParameters>]
briantistありがとうございます。 :-) –
こんにちは@briantist。 Iを使用する場合: 'IF($ XYZ -is [文字列]){}' ' 場合($ XYZ -is [ブール]){}' ' 場合($ XYZ -is [INT]){ } ' これは機能します。私が使用している場合: 'if($ xyz -is [SecureString]){}' これは動作しません。 PSOBjectまたはPSCustomObjectとして取得されます。 どうすれば回避できますか? –
@CostaZachariouよく '$ xyz'を割り当てるコードの部分を見ることができないので、わかりません。 '$ xyz.GetType()。FullName'の出力は何ですか? – briantist