如何将参数类型转换为不同的对象类型

Nel*_*ate 2 powershell powershell-2.0

我在PowerShell中编写了一些脚本,我想知道是否有一种方法可以"声明"参数"X",就像声明参数"-Credential"一样,例如在Get-WMIObject cmdlet中.

让我更具体一点.几乎所有cmdlet中的Credential参数都是PSCredential对象.但是,参数可以是PSCredential Object,也可以是带有用户名的String对象.

[CmdletBinding()]
param ([Parameter(Mandatory = $false)]
       [System.Management.Automation.PSCredential]
       $Credential)
Run Code Online (Sandbox Code Playgroud)

传递字符串时会出现问题.当然,不能对参数进行参数变换.无法将类型"System.String"转换为PSCrendential类型.

Sha*_*evy 5

尝试一下:

param(
    [System.Management.Automation.Credential()]
    $Credential=[System.Management.Automation.PSCredential]::Empty
)
Run Code Online (Sandbox Code Playgroud)

至于参数参数转换,请检查这个很棒的脚本:

http://poshcode.org/3024