广州明生医药有限公司


Powershell小技巧之获取变量列表

网络编程 Powershell小技巧之获取变量列表 06-21

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

这里定义了一个函数 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:Userszhanghong> dir env:

Name Value ---- ----- ALLUSERSPROFILE C:ProgramData APPDATA C:UserszhanghongAppDataRoaming CommonProgramFiles C:Program FilesCommon Files CommonProgramFiles(x86) C:Program Files (x86)Common Files COMPUTERNAME ZHANGHONG-BOOK ComSpec C:Windowssystem32cmd.exe HOMEDRIVE C: HOMEPATH Userszhanghong JAVA_HOME D:JavaDevEnvjdk1.6.0_16 ……

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

2、获取环境变量的值

语法:$env:<变量名>

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

PS C:Userszhanghong> $env:computername

ZHANGHONG-BOOK

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

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

Powershell小技巧之捕获脚本内部的异常
先看一个脚本文件:3.three.test.ps1Get-FanBingbing#命令不存在然后这样捕获:trap[exception]{'在trap中捕获到脚本异常'$_.Exception.Messagecontinue}.3.three.test.ps1异常捕

PowerShell小技巧之获取TCP响应(类Telnet)
通常情况下,为了检测指定的TCP端口是否存活,我们都是通过telnet指定的端口看是否有响应来确定,然而默认情况下win8以后的系统默认是不安装telnet的

PowerShell小技巧之获取Windows系统密码Hash
当你拿到了系统控制权之后如何才能更长的时间内控制已经拿到这台机器呢?作为白帽子,已经在对手防线上撕开一个口子,如果你需要进一步扩大战


编辑:广州明生医药有限公司

标签:环境变量,变量,脚本,小技巧,我们可以