PowerShell Remove all user defined variable in PowerShell

When PS scripts executes, it is possibly create much user defined variables.

So, sometimes these varibales may confuse us a lot.

Here‘s a workaound:

Most of the standard variables can be found in System.Management.Automation.SpecialVariables. If you filter out these and a small list of other known variables, you can create a reusable function to get user-defined variables:

function Get-UDVariable {
  get-variable | where-object {(@(
    "FormatEnumerationLimit",
    "MaximumAliasCount",
    "MaximumDriveCount",
    "MaximumErrorCount",
    "MaximumFunctionCount",
    "MaximumVariableCount",
    "PGHome",
    "PGSE",
    "PGUICulture",
    "PGVersionTable",
    "PROFILE",
    "PSSessionOption"
    ) -notcontains $_.name) -and `
    (([psobject].Assembly.GetType(‘System.Management.Automation.SpecialVariables‘).GetFields(‘NonPublic,Static‘) | Where-Object FieldType -eq ([string]) | ForEach-Object GetValue $null)) -notcontains $_.name
    }
}

in your script, just use :

Get-UDVariable | Remove-Variable

One more suggestion:

I don‘t think it will be the best solution to solve problems made by remaining varibales.

When we create varibale in our scripts, we should have a think that what is the proper scope ?

MSDN ref : https://technet.microsoft.com/en-us/library/hh847849.aspx

时间: 2024-10-14 10:55:15

PowerShell Remove all user defined variable in PowerShell的相关文章

Powershell管理系列(三十七)PowerShell操作之统计域内计算机硬件资产

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 需求:有时候我们需要比较powershell程序每天自动获取的CSV文件报表,用来确定每天发生的变化,如下:我们比较前后两天自动生成的CSV文件的列"计算机名". 脚本如下: diff -ReferenceObject (import-csv C:\统计计算机资产\2016-11-26.csv -Encoding def

Powershell管理系列(三十)PowerShell操作之统计邮箱的用户信息

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 用户需要统计邮箱用户的具体信息,如登陆名,邮箱地址,公司名,部门等,这些信息可以通过不通的命令查询到,我们如何通过脚本把这些信息汇总到一起,命令如下: 步骤1.在powershell命令行输入如下命令 Add-PSSnapin microsoft.exchange*$user=Get-User -ResultSize unlimi

Powershell管理系列(二十三)PowerShell操作之使用密文密码创建邮箱及连接powershell

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 我们使用Powershell创建邮箱的时候,填写密码有两种方式, 方法1.手动输入密码 $password = Read-Host "Enter password" -AsSecureStringNew-Mailbox -UserPrincipalName [email protected] -Alias chris -

MSSQL/WMI/PowerShell结合篇(三)执行PowerShell远程脚本

实时监控的基本原理:WMI Monitor->数据库服务器(内网)->PowerShell->监控服务器(内外网)->发送微信 前面已介绍如何创建WMI Monitor,本文介绍如何执行PowerShell远程脚本,实现将WMI获取到的信息从数据库服务器传到监控服务器,即数据库服务器(内网)->PowerShell->监控服务器(内外网) 一.帐号密码信息加密 设置密钥,并将密钥.帐号.密码加密后信息存放于文本中 1.设置加密密钥 function Set-Key {

Powershell管理系列(三十一)PowerShell操作之批量创建邮箱

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 用户需要批量导入邮箱,提供的信息,如姓名.别名.组织单元.显示名.登录名.密码.公司名.部门.邮箱配额,表格如下图 步骤1.在powershell中输入如下命令: Add-PSSnapin microsoft.exchange*Import-Module activedirectoryImport-Csv C:\mbxinfo.c

PowerShell工作流学习-2-工作流运行Powershell命令

关键点: a)inlineScript 活动具有活动通用参数,但不具有PowerShell 通用参数,且inlineScript 脚本块中的命令和表达式不具有工作流的功能b)默认inlineScript 活动在单独的进程中执行而不是和工作流同一进程中执行,但是可使用参数OutOfProcessActivity进行控制,如果需要删除或者还原相关配置使inlineScript 活动在工作流进程内或者进程外运行,请参考例bc)工作流中定义的变量对 InlineScript 脚本块中的命令不可见,除非使

Powershell管理系列(十九)PowerShell操作之修改Exchange数据库报警时间

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 需求:Exchange用户满的提示是默认的发送系统提示邮件时凌晨1点,想改到早上8点. 步骤1.我们首先找到数据库,属性点开,默认的警告邮件间隔是每日1:00运行 步骤2.逐个修改数据库属性,我们修改成早上8点,注意时间间隔要15分钟以上. technet参考截图: 设置如下: 步骤3.查询下是否生效. 步骤4.数据库比较多的时候

Powershell管理系列(二十七)PowerShell操作之修改AD自定义属性

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 看到有网友发我消息,咨询AD用户如何增加自定义属性,下面具体讲下如何操作,下图为网友提问截图, 1.按他提出的要求,我们新建一个csv表格,里面有两列属性,一列是性别,一列是子部门,如下图 2.执行以下命令 #创建空的哈希表值 $custom = @{} #导入数据源userinfo.csv import-csv -Path C:

How to check a not defined variable in javascript

javascript里怎么检查一个未定义的变量? in JavaScript null is an object. There's another value for things that don't exist, undefined. The DOM returns null for almost all cases where it fails to find some structure in the document, but in JavaScript itself undefine