1
如何從使用powershell的參數獲取變量的類型? 如果TypeOf(xyz)是字符串或(如果TypeOf(xyz)是整數),則影響。使用powershell從參數獲取變量的類型
爲了我的目的,我想檢查它是一個字符串還是固定字符串?我想用一個參數使用單個函數。不是兩個單獨的函數,一個用於固定字符串,另一個用於字符串。
如何從使用powershell的參數獲取變量的類型? 如果TypeOf(xyz)是字符串或(如果TypeOf(xyz)是整數),則影響。使用powershell從參數獲取變量的類型
爲了我的目的,我想檢查它是一個字符串還是固定字符串?我想用一個參數使用單個函數。不是兩個單獨的函數,一個用於固定字符串,另一個用於字符串。
直接回答你的問題是使用the -is
operator:
if ($xyz -is [String]){}
if ($xyz -is [SecureString]){}
if ($xyz -isnot [int]){}
但更深的挖掘:
我想用一個單一的功能與參數。不是兩個單獨的函數,一個用於固定字符串,另一個用於字符串。
您可以使用一個單一的功能,具有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
您會看到生成的參數集,它顯示了可以調用它的兩種方式,每種方式都有一個單獨的互斥參數。
NAME Do-Thing SYNTAX Do-Thing -SecureString <securestring> [<CommonParameters>] Do-Thing -String <string> [<CommonParameters>]
謝謝briantist。 :-) –
嗨@briantist。 如果我使用: '如果($ XYZ -is [字符串]){}'' 如果($ XYZ -is [布爾]){}'' 如果($ XYZ -is [INT]){ }' 它的工作原理。如果我使用: 'if($ xyz -is [SecureString]){}' 它不起作用。它被拾取爲PSOBject或PSCustomObject。 我該如何解決這個問題? –
@CostaZachariou以及我不知道,因爲我看不到你的代碼賦予'$ xyz'的部分。 '$ xyz.GetType()。FullName'的輸出是什麼? – briantist