PowerShell删除ISE编辑器中的自定义变量


有朋友问他编辑脚本时,喜欢在PowerShell ISE编辑器中操作,写一段,执行一段。可是时间长了当前会话中的变量很多,有的时候可能会影响某段脚本的输入和输出,能不能把自定义变量给删除掉,他尝试用过Get-Variable | Remove-Variable -Force,但是这样太暴力,可能会把PowerShell中的自动化变量给更改掉,他唯一想到的就是关闭ISE,重新打开个新的ISE,但是这样更蛋疼了。

分析:PowerShell专门提供了管理变量的命令Get-Variable和Remove-Variable,这里唯一需要处理的是如何把自定义变量给排除掉。我暂时能想到的就是增加白名单:

  1. 打开一个干净的ISE把自定义变量名导出(用下面第一段脚本)。
  2. 下次删除时利用白名单排除列表中的变量。

获取自动化变量白名单的脚本:

"@({0})" -f
((Get-Variable  | select -ExpandProperty name | foreach {
"'$_'"
}) -join ",`n") 

删除自定义变量的脚本:

Function Clear-ISEVariable
{
    $sysVar=@(
    '$',
    '?',
    '^',
    'args',
    'ConfirmPreference',
    'ConsoleFileName',
    'DebugPreference',
    'Error',
    'ErrorActionPreference',
    'ErrorView',
    'ExecutionContext',
    'false',
    'FormatEnumerationLimit',
    'HOME',
    'Host',
    'InformationPreference',
    'input',
    'LASTEXITCODE',
    'MaximumAliasCount',
    'MaximumDriveCount',
    'MaximumErrorCount',
    'MaximumFunctionCount',
    'MaximumHistoryCount',
    'MaximumVariableCount',
    'MyInvocation',
    'NestedPromptLevel',
    'null',
    'OutputEncoding',
    'PID',
    'profile',
    'ProgressPreference',
    'PSBoundParameters',
    'PSCommandPath',
    'PSCulture',
    'PSDefaultParameterValues',
    'PSEmailServer',
    'PSHOME',
    'psISE',
    'PSScriptRoot',
    'PSSessionApplicationName',
    'PSSessionConfigurationName',
    'PSSessionOption',
    'PSUICulture',
    'psUnsupportedConsoleApplications',
    'PSVersionTable',
    'PWD',
    'ShellId',
    'StackTrace',
    'true',
    'VerbosePreference',
    'WarningPreference',
    'WhatIfPreference')

    Get-Variable -Scope 1 | Where-Object {
        $sysVar -notcontains $_.Name
    }  | Remove-Variable -Scope 1 -Force
    
}

备注

  1. Clear-ISEVariable函数同样适用于控制台,因为ISE中的自动化变量基本上是兼容控制台的。
  2. 每一台机器上的Profile文件可能不尽相同,最安全的方式是先得到自己机器上的自动化变量白名单,更新一下脚本中的集合,然后再运行。
本文链接: https://www.pstips.net/clear-isevariable.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注