使用PowerShell从参数中获取变量类型

Cos*_*iou 3 powershell

如何使用 PowerShell 从参数中获取变量的类型?

东西的效果如果TypeOf运算(XYZ)是字符串如果TypeOf运算(XYZ)为整数

出于我的目的,我想检查它是字符串还是安全字符串。我想使用带有参数的单个函数。不是两个单独的函数,一个用于安全字符串,一个用于字符串。

bri*_*ist 6

直接回答你的问题是使用-is运营商

if ($xyz -is [String]){}
if ($xyz -is [SecureString]){}

if ($xyz -isnot [int]){}
Run Code Online (Sandbox Code Playgroud)

但是,深入挖掘:

我想使用带有参数的单个函数。不是两个单独的函数,一个用于安全字符串,一个用于字符串。

您可以使用单个函数,通过参数集来区分您使用的是哪个版本:

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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

继续运行该示例定义,然后查看帮助:

Get-Help Do-Thing
Run Code Online (Sandbox Code Playgroud)

您将看到生成的参数集,其中显示了您可以调用它的两种方式。每种方式都有一个单独的、互斥的参数。

NAME
    Do-Thing

SYNTAX
    Do-Thing -SecureString <securestring>  [<CommonParameters>]

    Do-Thing -String <string>  [<CommonParameters>]
Run Code Online (Sandbox Code Playgroud)