Я пишу модуль powershell для взаимодействия с AWS. Большинство функций должны принимать параметры, которые являются учетными данными для использования — awsAccessKeyId
, awsSecretKey
и credentialsFile
.
Становится скучно копировать/вставлять эти параметры в каждую функцию в модуле.
Есть ли способ объявить, что это CommonParameters
для набора функций, экспортируемых модулем?
Кроме того, есть ли способ извлечь общий (т.е. дублированный) оператор switch для обработки набора параметров, чтобы его могли вызывать все функции, которым он нужен?
Вот пример функции:
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
, а затем блок переключения на какую-то общую функцию.