Day-3 課程 使用 PowerShell 進行自動化管理(二)

恆逸課程:Microsoft - AZ040 使用Windows PowerShell進行自動化管理

前言:

五天學Powershell基本上是不可能把東西學熟的,充其量就是聽的入門,知道這是什麼、能做什麼、能怎麼做,這樣而已。
想要熟而精,只能靠往後數年不斷的練習和實踐。

上一篇:Day-3 課程 使用 PowerShell 進行自動化管理(一)

下一篇:Day-4 課程 使用 PowerShell 進行自動化管理(一)


第三天下午下半場主要講的內容如下

  1. Creating calculated properties
  2. 比較運算子(Comparison operators)
  3. 透過 PowerShell 使用 PSProvider 和 PSDrive

1. Creating calculated properties

raw-image

Hash Table:

雜湊後面會單獨在講到,這邊只是先淺淺的介紹過去。

在 PowerShell 中,雜湊表(Hash Table)是一種數據結構,它允許我們將鍵(Label Key)和值(Label string Value)配對存儲在一個集合中。
雜湊表使用一種稱為雜湊演算法(Hash Function)的算法來將鍵映射到表中的位置,這樣可以快速查找和檢索值。

若要建立雜湊表,請遵循下列指導方針:

● 以符號 (@) 開始雜湊表。
● 以大括弧({ }) 括住雜湊表。
● 輸入一個或多個鍵值對作為雜湊表的內容。
● 使用等號 ( = ) 將每個鍵與其值分開。
● 使用分號 ( ; ) 分隔鍵值。

raw-image

(來源:about_Hash_Tables)


2. 比較運算子(Comparison operators)

raw-image

這邊先比較 Case-insenstive operator 不分大小寫 以及 Case-sensitive operator 區分大小寫 的差異

Case-insenstive operator 不區分大小寫,因此輸出結果是 True

"Hello" -eq "hello"

Case-sensitive operator 會區分大小寫,因此輸出結果是 False

"Hello" -ceq "hello"

raw-image

老實說我並不是很清楚什麼情境下該使用哪一種方式,但如果是要檢查文件或文件內容的話,肯定是用Case-insenstive operator的,平常我也都是用Case-insenstive operator ... 。

raw-image

範例:

"Hello" -eq "hello"

"Hello" -ceq "hello"

raw-image

"Hello" -ne "hello"

"Hello" -cne "hello"

raw-image

2 -gt 1

raw-image

數值比較就沒什麼好說的,一翻兩瞪眼,那字串比較就很有趣了

字串的大小比較就是「大寫比小寫大」、「同樣大小寫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" 開頭

raw-image

Tips:

-ceq 中的 c 代表著 case-sensitive。


3. 透過 PowerShell 使用 PSProvider 和 PSDrive

這邊直接拿課程的情境來作筆記

設想您是 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

建立新的 PSDrive map

-Name ScriptShare:新的 PowerShell 驅動器(PSDrive)指定名稱為 "ScriptShare"。

-Root \\Lon-Svr1\c$\ScriptShare:指定這個驅動器的根目錄,即map到的網路路徑。

-PSProvider FileSystem:指定這個PSDrive 的 PSProvider 為 FileSystem

在map磁碟機上建立文件

SetLocation ScriptShare:

簡單來說就是切換到 ScriptShare 目錄底下操作

建立新文件

New-Item script.txt

列舉當前目錄下的所有子項目

Get-ChildItem
raw-image

PSProvider 是什麼?

在 PowerShell 中,PSProvider 是一個提供者(Provider)的概念,用來允許 PowerShell 與不同的數據存儲系統進行統一的交互。

提供者是 PowerShell 資訊結構的一部分,它允許你使用統一的 PowerShell 指令與不同類型的數據存儲進行交互,而不需要知道底層數據存儲的細節。

它定義了一組標準的 PowerShell 指令,使得你可以使用相同的語法和操作方式來處理不同的資源。常見的 PSProvider 包括:

  • FileSystem: 用於檔案系統,允許你使用 cddircopy 等命令與檔案和目錄進行交互。
  • Registry: 用於註冊表,允許你使用 cddircopy 等命令與註冊表項進行交互。
  • Certificate: 用於憑證存儲,允許你使用 cddircopy 等命令與憑證進行交互。

Tips:

列舉包括隱藏文件在內的所有子項目

Get-ChildItem -Path C:\ -Force



本次的收穫:

這次收穫就真的很多了,

1. 老實說以前都不知道「@{}」然後是Hash Table

  1. 比較運算子原來還有字串的大小比較就是「大寫比小寫大」、「同樣大小寫A最小Z最大」這件事情
  2. PSProvider 和 PSDrive 部分,以前都只會複製貼上,修修改改,雖然現在也是,但還吸收了很多細節知識,礙於篇幅加上吸收問題,還無法分享出來。
    未來在進行補充! ​


11會員
30內容數
主要是將「MIS工程師」必須要懂得知識用淺顯易懂的方式分享出來,也一併幫自己完善筆記。
留言0
查看全部
發表第一個留言支持創作者!