我试图找出哪种方法最适合以下情况。
示例函数:
Set-APICredentials {
[CmdletBinding()]
param(
[Parameter(Mandatory)]
[string]$APIUser,
[Parameter(Mandatory)]
[string]$APIKey,
[Parameter(Mandatory)]
[string]$PFXFile,
[Parameter(Mandatory)]
[string]$PFXPassword,
[switch]$AsVariable
)
begin{
$PFXPath = (Get-ChildItem -Name $PFXFile).FullName
}
process{
#create basic auth header from APIUser and APIKey
$basicAuthHeader
#create certificate object, verify private key, convert back into PFX Collection as bytes string variable
$clientAuthCertRaw
#create hashtable with credentials
$credentials = @{
basicAuthHeader = $basicAuthHeader
clienAuthCertRaw = $clientAuthCertRaw
}
}
end{
if ($AsVariable) {
Sglobal:APICreds = $credentials
} else {
Export-Clixml -InputObject $credentials -Path $PSScriptRoot\APICredentials.xml
}
}
}
如果(Test-Path -Path $PSScriptRoot\APICredentials.xml)
为真并且-AsVariable
已指定,则不需要/使用其他参数。
否则,如果(Test-Path -Path $PSScriptRoot\APICredentials.xml)
为 false,则需要之前声明为强制的所有内容。
有什么方法可以创建条件参数集吗?
如果前面陈述的逻辑是错误的,我应该只创建两个参数集并出错吗?或者我应该设置-AsVariable
为参数并使用动态参数处理其余部分?
因为在大多数情况下,一切都是强制性的,并且只有在特殊情况下才能单独-AsVariable
使用。我认为将其他所有内容配置为动态参数是错误的。