我正在寫一個powershell模塊來與AWS交互。大部分功能需要使用參數 - awsAccessKeyId
,awsSecretKey
和credentialsFile
。如何爲定製模塊中定義的powershell函數定義更多公共參數?
它將模糊的複製/粘貼這些參數到模塊中的每個函數。
有沒有辦法爲模塊導出的函數集聲明這些是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
,然後將開關塊一些常見功能。