PowerShell 技能连载 - 重命名变量

适用于 PowerShell ISE 3 或更高版本

以下是一个简单的变量重命名函数,您可以在 PowerShell 3.0 及以上版本的 ISE 编辑器中使用它

它将识别某个变量的所有实例,然后将它重命名为一个新的名字。

function Rename-Variable
{
  param
  (
    [Parameter(Mandatory=$true)]
    $OldName,

    [Parameter(Mandatory=$true)]
    $NewName
  )

  $InputText = $psise.CurrentFile.Editor.Text
  $token = $null
  $errors = $null

  $ast = [System.Management.Automation.Language.Parser]::ParseInput($InputText, [ref] $token, [ref] $errors)

  $token |
  Where-Object { $_.Kind -eq 'Variable'} |
  Where-Object { $_.Name -eq $OldName } |
  Sort-Object { $_.Extent.StartOffset } -Descending |
  ForEach-Object {
    $start = $_.Extent.StartOffset + 1
    $end = $_.Extent.EndOffset
    $InputText = $InputText.Remove($start, $end-$start).Insert($start, $NewName)
  }

  $psise.CurrentFile.Editor.Text = $InputText
}

运行这个函数之后,您将得到一个名为 Rename-Variable 的新命令。

下一步,在 ISE 编辑器中打开一个脚本,然后在控制台面板中,键入以下内容(当然,需要将旧的变量名“_oldVariableName_”改为您当前所打开的 ISE 脚本中实际存在的变量名)。

PS> Rename-Variable -OldName oldVariableName -NewName theNEWname

立刻,旧变量的所有出现的地方都被替换成新的变量名。

注意:这是一个非常简易的变量重命名函数。一定要记得备份您的脚本。它还不能算是一个能用在生产环境的重构方案。

当您重命名变量时,您脚本的许多别处地方也可能需要更新。例如,当一个变量是函数参数时,所有调用该函数的地方都得修改它们的参数名。

PowerShell 技能连载 - 重命名变量

http://blog.vichamp.com/2014/10/06/renaming-variables/

作者

吴波

发布于

2014-10-06

更新于

2022-07-06

许可协议

评论