恆逸課程:Microsoft - AZ040 使用Windows PowerShell進行自動化管理
前言:
五天學Powershell基本上是不可能把東西學熟的,充其量就是聽的入門,知道這是什麼、能做什麼、能怎麼做,這樣而已。
想要熟而精,只能靠往後數年不斷的練習和實踐。
上一篇:Day-3 課程 使用 PowerShell 進行自動化管理(一)
下一篇:Day-4 課程 使用 PowerShell 進行自動化管理(一)
第三天下午下半場主要講的內容如下
Hash Table:
雜湊後面會單獨在講到,這邊只是先淺淺的介紹過去。
在 PowerShell 中,雜湊表(Hash Table)是一種數據結構,它允許我們將鍵(Label Key)和值(Label string Value)配對存儲在一個集合中。
雜湊表使用一種稱為雜湊演算法(Hash Function)的算法來將鍵映射到表中的位置,這樣可以快速查找和檢索值。
若要建立雜湊表,請遵循下列指導方針:
● 以符號 (@) 開始雜湊表。
● 以大括弧({ }) 括住雜湊表。
● 輸入一個或多個鍵值對作為雜湊表的內容。
● 使用等號 ( = ) 將每個鍵與其值分開。
● 使用分號 ( ; ) 分隔鍵值。
(來源:about_Hash_Tables)
這邊先比較 Case-insenstive operator 不分大小寫 以及 Case-sensitive operator 區分大小寫 的差異
Case-insenstive operator 不區分大小寫,因此輸出結果是 True
"Hello" -eq "hello"
Case-sensitive operator 會區分大小寫,因此輸出結果是 False
"Hello" -ceq "hello"
老實說我並不是很清楚什麼情境下該使用哪一種方式,但如果是要檢查文件或文件內容的話,肯定是用Case-insenstive operator的,平常我也都是用Case-insenstive operator ... 。
範例:
"Hello" -eq "hello"
"Hello" -ceq "hello"
"Hello" -ne "hello"
"Hello" -cne "hello"
2 -gt 1
數值比較就沒什麼好說的,一翻兩瞪眼,那字串比較就很有趣了
字串的大小比較就是「大寫比小寫大」、「同樣大小寫A最小Z最大」
"H" -gt "h" #False
因為不分大小寫,所以結果是False
"H" -ge "h"
因為不分大小寫,所以結果是True
"H" -cge "h"
因為有區分大小寫,因此H>h
,所以結果是True
上述用法我也不知道什麼情境會用到,字串通常都是用like
,主要用比對字串用
"Hello" -like "H*" # True
因為 "Hello" 以 "H" 開頭
"Hello" -like "*lo" # True
因為 "Hello" 以 "lo" 結尾
"Hello" -like "*l*" # True
因為 "Hello" 中包含字母 "l"
"Hello" -like "W*" # False
因為 "Hello" 不以 "W" 開頭
Tips:
-ceq
中的 c 代表著 case-sensitive。
這邊直接拿課程的情境來作筆記
設想您是 Adatum Corporation 倫敦分公司的系統管理員。您必須在您的環境中重新配置多項設定。您最近了解了 PSProvider 和 PSDrive,並且可以使用它們來存取資料儲存。您已決定使用 PSDrives 重新配置這些設定。
本次演練的主要任務如下:
在遠端電腦上建立一個新資料夾。建立到遠端資料夾的新 PSDrive map。在map驅動器上建立文件。
在 \\Lon-Svr1\C$ 建立新的ScriptShare資料夾
New-Item –Path \\Lon-Svr1\C$\ –Name ScriptShare –ItemType Directory
-Path \\Lon-Svr1\C$
:指定新目錄的上一層目錄位置,即 \\Lon-Svr1\C$。
-Name ScriptShare
:指定新目錄的名稱為 "ScriptShare"。
-ItemType Directory
:指定要創建的物件類型為目錄。
New-PSDrive –Name ScriptShare –Root \\Lon-Svr1\c$\ScriptShare –PSProvider FileSystem
-Name ScriptShare
:新的 PowerShell 驅動器(PSDrive)指定名稱為 "ScriptShare"。
-Root \\Lon-Svr1\c$\ScriptShare
:指定這個驅動器的根目錄,即map到的網路路徑。
-PSProvider FileSystem
:指定這個PSDrive 的 PSProvider 為 FileSystem
SetLocation ScriptShare:
簡單來說就是切換到 ScriptShare 目錄底下操作
建立新文件
New-Item script.txt
列舉當前目錄下的所有子項目
Get-ChildItem
在 PowerShell 中,PSProvider 是一個提供者(Provider)的概念,用來允許 PowerShell 與不同的數據存儲系統進行統一的交互。
提供者是 PowerShell 資訊結構的一部分,它允許你使用統一的 PowerShell 指令與不同類型的數據存儲進行交互,而不需要知道底層數據存儲的細節。
它定義了一組標準的 PowerShell 指令,使得你可以使用相同的語法和操作方式來處理不同的資源。常見的 PSProvider 包括:
cd
、dir
、copy
等命令與檔案和目錄進行交互。cd
、dir
、copy
等命令與註冊表項進行交互。cd
、dir
、copy
等命令與憑證進行交互。
Tips:
列舉包括隱藏文件在內的所有子項目
Get-ChildItem -Path C:\ -Force
這次收穫就真的很多了,
1. 老實說以前都不知道「@{}」然後是Hash Table