(8)Powershell中變量的定義和使用

上一節介紹了Powershell中的算術運算符,詳細內容參考這裏,這些運算符主要用於字符串的鏈接,組成bool表達式等用於對管道中的命令執行結果進行篩選,咱們將會後續的文章中講到。shell


這一節主要介紹Powershell中變量的定義和使用,以及使用變量時應該注意的事項。編程


    和全部編程語言中的變量同樣,Powershell中的變量也是存於存儲值的內存單元,須要注意的是,Powershell中的變量是以美圓符號($)開頭的單字節(通常是英文字符,雖然ISE中支持雙字節的字符,可是像任何編程語言,咱們不鼓勵不同意使用中文等命名的變量)文本字符串表示,如 $a, $b 或者是 $my_str。數組

     在Powershell中有3種不一樣的變量編程語言

  • 用戶本身建立的變量編輯器

    用戶建立的變量由用戶建立和維護。默認狀況下,在 PowerShell 命令行中建立的變量只在當前PowerShell 窗口有效。關閉該窗口後,變量也會自動銷燬(再次打開命令窗口再也不存在,不能再引用以前定義的變量)。若要保存變量並使其在窗口關閉並再次打開時仍然有效,須要將其添加到 PowerShell 配置文件中(但並不建議這麼作)。若是是在編寫腳本,則能夠在腳本中建立具備全局或局部做用域的變量。ide

  • 自動變量學習

    自動變量也稱爲內置變量,用於存儲 PowerShell 的一些狀態信息。這些變量由 PowerShell 建立和維護,PowerShell 根據須要更改變量值以保持其準確性。用戶不能更改這些變量的值。例如,$PSHome 變量存儲 PowerShell 安裝目錄的路徑。this

  • 首選項變量spa

    首選項變量就是Powershell當前命令窗口環境的首選項設置,這些變量由Powershell建立,並以默認值填充,用戶能夠更改這些變量的值,如 $MaximumHistoryCount 是歷史記錄的最大條數。命令行


變量的定義和使用

建立(定義)新變量或更改變量的值,請使用如下格式的賦值語句

$<variable> = <value>

例如如下定義了字符串變量 $myStr 並修改了其值。若是要顯示變量的值,直接輸入變量的名稱,包括美圓符號$。

PS C:\> $myStr="This variables defined by user"
PS C:\> $myStr
This variables defined by user
PS C:\> $myStr="user has changed the value of this variables"
PS C:\> $myStr
user has changed the value of this variables

在定義和使用變量時,可使用單引號和雙引號,但須要注意單引號和雙引號的區別。

PS C:\> $myStr='this is string variables'
PS C:\> $youStr='your want to display the $myStr'
PS C:\> $youStr
your want to display the $myStr

注意上面的變量定義使用的單引號,變量 $youStr 中的變量 $myStr 並無替換爲其所表明的值,而是直接輸出,意味單引號中的內容會直接輸出,不作變量值的替換


PS C:\> $myStr="this is string variables"
PS C:\> $youStr="your want to display the $myStr"
PS C:\> $youStr
your want to display the this is string variables

注意上邊的變量的定義使用的雙引號,變量$youStr 中的變量 $myStr 會替換爲其所表明的值,意味着雙引號中的變量名在會替換爲變量所表明的值


若是須要在雙引號表示的變量中輸出變量名,即 $youStr="your want to display the $myStr" 你不想讓變量 $youStr 中的 $myStr 發生替換,則須要在變量名以前添加英文符號倒引號"`"進行轉義,在英文輸入狀態下,這個鍵位於"Esc"鍵的下面,注意下面命令的輸出內容。

PS C:\> $myStr="this is string variables"
PS C:\> $youStr="your want to display the `$myStr"
PS C:\> $youStr
your want to display the $myStr

變量的保存

用戶建立的變量只在當前會話中可用,關閉會話(當前命令窗口)變量將丟失。若是須要保存變量,就須要將其保存在配置文件中,配置文件中的變量將在命令窗口打開時自動加載,將會添加全部的會話中。

能夠在命令行輸入 $profile 來查看配置文件的路徑

例如,若是須要修改 $VerbosePreference 變量的值爲 "Continue" (默認是"SilentlyContinue"),能夠再命令行輸入 $profile 找到配置文件的路徑,經過Notepad等文本編輯器進行修改,或是利用 Add-Content 進行修改。

如下命令將 $VerbosePreference 變量的新值添加到"CurrentUser,AllHosts"配置文件中

add-content -path $profile.CurrentUserAllHosts -value '$VerbosePreference = "Continue"'

包含特殊字符的變量名稱

若是變量中包含特殊字符,可使用大括號{} 強制Powershell按字面解釋變量名稱,若是要定義或是引用包含特殊字符(如短劃線,句點,冒號,圓括號)的變量,這會很是有用。

PS C:\> ${this is string array}="a","b","c"
PS C:\> ${this is string array}
a
b
c

以上命令定義了的變量名是 ${this is string array}。


如要引用的變量名稱包含圓括號,用大括號將變量名稱括起來

PS C:\> Get-ChildItem ${env:ProgramFiles(x86)}

    目錄: C:\

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----          2012-8-7     11:40            Documents and Settings
d----        2016-10-29     21:35            DTLFolder
...

若是要引用變量名稱包含大括號,用大括號將變量名稱括起來,變量內部的大括號以前添加倒引號"`"字符轉義大括號,倒引號是在引文輸入狀態下,鍵盤上"Esc"下面的按鍵,這個相似於上文講到的若是在雙引號中不想對變量名稱替換爲值時添加的倒引號。

PS C:\> ${this`{value`}is} = 1
PS C:\> ${this`{value`}is}
1

總結

    關於變量,須要注意的是,Powershell中的變量可使用特殊字符,另外Powershell中的變量能夠存儲任何類型的對象,整數,字符串,數組,哈希表,服務,進程,事件日誌等,便可以將任何一條命令的執行結果賦值給一個變量。最後,在定義變量時,不能定義與內置變量名稱同樣的變量,由於內置變量是隻讀,不容許用戶更改,會在Powershell的內置變量中講到Powershell中都包含哪些內置變量。


ps:若是在學習時有什麼疑問,歡迎在評論區留言。

相關文章
相關標籤/搜索