Powershell格式字符串,带有函数输出

时间:2016-12-07 19:13:27

标签: function powershell variables

嘿伙计们,我无法弄清楚如何将以下函数(需要输入)转换为变量

 function Convert-ToLetters ([parameter(Mandatory=$true,ValueFromPipeline=$true)][int] $value)  {
   $currVal = $value;
   $returnVal = '';
   while ($currVal -ge 26) {
      $returnVal = [char](($currVal) % 26 + 65) + $returnVal;
      $currVal =  [int][math]::Floor($currVal / 26)
   }
  $returnVal = [char](($currVal) + 64) + $returnVal;

     return $returnVal
  }

此功能的作用是将数字转换为字母。

现在我想要实现的是以某种方式做到这一点:

$convert2letter = Convert-ToLetters()

这样我可以做类似

的事情
$WR= "$convert2letter($CValue1)" + "-" + "$convert2letter($CValue2)" + "-" + "3"

但是Powershell不允许我做$ convert2letter

那我该怎么办?

谢谢

3 个答案:

答案 0 :(得分:5)

如果没有更多信息来证明这一点,我会考虑而不是:

$WR= "$convert2letter($CValue1)" + "-" + "$convert2letter($CValue2)" + "-" + "3"

你应该这样做:

$WR = "$(Convert-ToLetters $CValue1)-$(Convert-ToLetters $CValue2)-3"

使用子表达式。或使用格式运算符

$WR = "{0}-{1}-3" -f (Convert-ToLetters $CValue1), (Convert-ToLetters $CValue2)

答案 1 :(得分:2)

如果我理解你的问题,你就是说你要调用一个名字存储在变量中的函数。一种方法是在字符串中嵌入子表达式 - $() - 并使用调用/调用运算符 - &来执行该函数。例如:

function T {
  param(
    $a
  )
  "Result = $a"
}

$fn = "T"
"We want $(& $fn Test)"

输出:

We want Result = Test

答案 2 :(得分:1)

New-Alias -Name `$convert2letter -Value Convert-ToLetters

不确定你想要达到的目标,这并没有多大意义。