Powershell小技巧之获取变量列表

所属分类: 脚本专栏 / PowerShell 阅读数: 1965
收藏 0 赞 0 分享

我们的需求是当想要列出脚本中所有变量。

这里定义了一个函数 Get-Variable:

复制代码 代码如下:

function Get-Variable
{
 
  $token = $null
  $errors = $null
 
  $ast = [System.Management.Automation.Language.Parser]::ParseInput($psise.CurrentFile.Editor.Text, [ref] $token, [ref] $errors)
 
  # not complete, add variables you want to exclude from the list:
  $systemVariables = '_', 'null', 'psitem', 'true', 'false', 'args', 'host'
 
  $null = $ast.FindAll({ $args[0] -is [System.Management.Automation.Language.CommandAst] }, $true)
  $token |
    Where-Object { $_.Kind -eq 'Variable'} |
    Select-Object -ExpandProperty Name |
    Where-Object { $systemVariables -notcontains $_ } |
    Sort-Object -Unique
}

将脚本加载到ISE编辑器,接着已交互方式运行Get-Variable.

你将获取当前打开脚本的变量清单。

如果你用包含了脚本代码的变量去替换掉 “$psise.CurrentFile.Editor.Text”。你可以直接在编辑器外部运行这个,照这样,我们可以使用Get-Content加载任何脚本到变量,同时使用这个加载变量到上面代码中。

支持3.0及以后

在开发过程中,经常需要用到环境变量(比如当前计算机名、登录的用户名、Path环境变量等),那么在PowerShell中如何知道有哪些环境变量呢?又该如何获取指定环境变量的值呢?

PowerShell通过环境变量提供者(Environment Provider)让我们可以访问环境变量。默认情况下,PowerShell创建了一个驱动器(名称为env)来与Environment Provider打交道。所以,我们可以通过env这个驱动器来处理与环境变量相关的操作。

1、列出所有的环境变量

我们可以使用“Get-ChildItem env:”来获取所有的环境变量列表。洪哥本机的运行结果如下:

复制代码 代码如下:

PS C:\Users\zhanghong> dir env:

Name                           Value
----                           -----
ALLUSERSPROFILE                C:\ProgramData
APPDATA                        C:\Users\zhanghong\AppData\Roaming
CommonProgramFiles             C:\Program Files\Common Files
CommonProgramFiles(x86)        C:\Program Files (x86)\Common Files
COMPUTERNAME                   ZHANGHONG-BOOK
ComSpec                        C:\Windows\system32\cmd.exe
HOMEDRIVE                      C:
HOMEPATH                       \Users\zhanghong
JAVA_HOME                      D:\JavaDevEnv\jdk1.6.0_16
……

注意,Get-ChildItem和dir是一个意思,后者是前者的别名。洪哥喜欢偷懒,所以直接用了dir。
上面,列出了所有的环境变量,有兴趣的朋友可以一一熟悉一下,以便后面在需要用到变量的值时去调用。

2、获取环境变量的值

语法:$env:<变量名>

举个例子,如果我想获取当前计算机名称,则用法如下:

复制代码 代码如下:

PS C:\Users\zhanghong> $env:computername
ZHANGHONG-BOOK

注意,环境变量也是一种变量,所以在“env:”之前必须有PowerShell变量的专用前缀“$”。

关于PowerShell获取环境变量的值,本文就介绍这么多,希望对大家有所帮助,谢谢!

更多精彩内容其他人还在看

Windows Powershell 管道和重定向

这篇文章主要介绍了Windows Powershell 管道和重定向,需要的朋友可以参考下
收藏 0 赞 0 分享

Windows Powershell 进行数学运算

在Windows PowerShell中, 使用数学运算符来进行数学运算,数学运算符允许你在命令参数中计算数值. 你可以使用一个或者多个运算符进行加减乘除法, 也可以返回除法的余数(模). 包含这些计算的参数, 将计算结果作为参数值. 命令就像处理其他类型参数一样, 来处理参数值
收藏 0 赞 0 分享

Windows Powershell 执行外部命令

Windows PowerShell 在使用方面与 Cmd.exe 并无多大不同,只是 Windows PowerShell 的功能更为强大。与 Cmd.exe 一样,Windows PowerShell 具有内置的脚本编写语言,不过它比 Cmd.exe 原始的批处理语言更为灵活
收藏 0 赞 0 分享

Windows Powershell 命令集 cmdlets

在Windows PowerShell中,需要使用cmdlet执行指令。一个cmdlet代表着可操作某一对象的功能命令,cmdlet可使用"动词-名词"形式的语法:一个动词和一个名词,中间使用连字符连接,例如get-service和start-service。
收藏 0 赞 0 分享

Windows Powershell 别名

简单的说在Windows PowerShell中, 别名就是cmdlets或其他命令的替代名称.为什么要替代cmdlets呢,因为cmdlets命令说实话有点麻烦。
收藏 0 赞 0 分享

Windows Powershell 通过函数扩展别名

这篇文章主要介绍了Windows Powershell 通过函数扩展别名,需要的朋友可以参考下
收藏 0 赞 0 分享

Windows Powershell 执行文件和脚本

PowerShell脚本提供了一个方便的方法来自动化各种琐事。下面是关于PowerShell的一些基本概念,对于PowerShell初学者,掌握这些概念有助于加深对PowerShell脚本的理解。
收藏 0 赞 0 分享

Powershell小技巧之系统运行时间

本文主要教你如何使用powershell计算系统运行时间,其实很简单,因为Windows每次启动都有一个高进度计数器并且当系统运行这个计数器将返回一个毫秒,我们把这个毫秒计算下就得到系统运行时间了
收藏 0 赞 0 分享

Powershell小技巧之使用WMI测试服务响应

这篇文章主要介绍了Powershell小技巧之使用WMI测试服务响应,需要的朋友可以参考下
收藏 0 赞 0 分享

Powershell小技巧之使用WMI查询插上的U盘

本文主要讲诉了如何使用WMI查询当前插在你电脑上的USB设备,非常简单,学习powershell的同学可以参考下
收藏 0 赞 0 分享
查看更多