Powershell 如何重新定义传递给脚本的参数?

Powershell 如何重新定义传递给脚本的参数?,powershell,Powershell,我正在调用这样一个脚本 ./pub.ps1 -b ab 在酒吧里我有: param( [string]$b ) 我想要的是有某种类型的case或switch来重新定义param 因此,进入: -b abc as a parameter could be converted to: $bucket = "abcd123" -b ddd as a parameter could be converted to: $bucket = "sdafasdf" 换句话说,我是否可以使用某种形

我正在调用这样一个脚本

./pub.ps1 -b ab
在酒吧里我有:

param(
   [string]$b
)
我想要的是有某种类型的case或switch来重新定义param

因此,进入:

 -b abc as a parameter could be converted to: $bucket = "abcd123"
 -b ddd as a parameter could be converted to: $bucket = "sdafasdf"

换句话说,我是否可以使用某种形式的case或switch语句?

不确定我是否理解您的问题,但可以使用哈希表将一个字符串映射到另一个字符串:

$map = @{
  'abc' = 'abcd123'
  'ddd' = 'sdafasdf'
}

$bucket = $map[$b]
或者用一句话:

$bucket = switch ($b) {
  'abc'   { 'abcd123' }
  'ddd'   { 'sdafasdf' }
  default { 'something else' }
}

开关
方法更通用,因为您不仅可以拥有默认值,还可以进行通配符或正则表达式匹配,而不是普通字符串匹配。

不确定我是否理解您的问题,但可以通过哈希表将一个字符串映射到另一个字符串:

$map = @{
  'abc' = 'abcd123'
  'ddd' = 'sdafasdf'
}

$bucket = $map[$b]
或者用一句话:

$bucket = switch ($b) {
  'abc'   { 'abcd123' }
  'ddd'   { 'sdafasdf' }
  default { 'something else' }
}

switch
方法更通用,因为不仅可以有默认值,还可以进行通配符或正则表达式匹配,而不是纯字符串匹配。

如果我正确理解您的问题,而有可能滥用
validatescript()
对于这一点,它不是合适的解决方案。如果我正确理解了您的问题,那么validatescript可能是一个合适的解决方案,而在这方面,它可能会滥用
validatescript()
,因为它不是一个合适的解决方案。完全