Powershell小技巧之獲取變數列表

NO IMAGE

我們的需求是當想要列出指令碼中所有變數。

這裡定義了一個函式 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獲取環境變數的值,本文就介紹這麼多,希望對大家有所幫助,謝謝!

您可能感興趣的文章:

PowerShell小技巧之實現檔案下載(類wget)PowerShell小技巧之獲取域名whois資訊PowerShell小技巧之獲取Windows系統密碼HashPowerShell小技巧之獲取TCP響應(類Telnet)Powershell小技巧之捕獲指令碼內部的異常Powershell小技巧之獲取物件可變的特徵Powershell小技巧之用變數累積記錄錯誤Powershell小技巧之獲取登錄檔值的型別PowerShell小技巧之定時抓取螢幕影象