我正在写一个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
,然后将开关块一些常见功能。