Я пишу модуль powershell для взаимодействия с AWS. Большинство функций должны принимать параметры, которые являются учетными данными для использования - awsAccessKeyId
, awsSecretKey
и credentialsFile
.
Получается скучное копирование / вставка этих параметров в каждую функцию в модуле.
Есть ли способ объявить, что это CommonParameters
для набора функций, экспортируемых модулем?
Кроме того, есть ли способ извлечь общий (т. Е. Дублированный) оператор переключателя обработки набора параметров, чтобы он мог вызываться всеми функциями, которые в нем нуждаются?
Вот пример функции:
function New-S3Client {
[CmdletBinding(DefaultParametersetName="credentialsFile")]
param
(
[parameter(Mandatory=$true, ParameterSetName="specifyKey")] [string]$accessKey,
[parameter(Mandatory=$true, ParameterSetName="specifyKey")] [string]$secretKey,
[parameter(ParameterSetName="credentialsFile")] [string]$credentialsFile = "$env:USERPROFILE\.aws\credentials"
)
switch($PsCmdlet.ParameterSetName)
{
"specifyKey" {
$env:awsAccessKeyId = $accessKey
$env:awsSecretKey = $secretKey
break
}
"credentialsFile" {
$env:awsAccessKeyId = Read-ValueForKeyFromFile -from $credentialsFile -field AWSAccessKeyId
$env:awsSecretKey = Read-ValueForKeyFromFile -from $credentialsFile -field AWSSecretKey
break
}
}
$config = New-Object Amazon.S3.AmazonS3Config
$config.WithServiceURL("https://s3.eu-west-1.amazonaws.com")
$client = New-Object Amazon.S3.AmazonS3Client($env:awsAccessKeyId, $env:awsSecretKey, $config)
return $client
}
Я хотел бы извлечь параметры 2-4 включительно в CommonParameters
, а затем переключить блок на какую-нибудь общую функцию.