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

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

前言:

這是為期五天的課程,後面兩天都講得非常地趕,而且都是在分享語法的應用,沒有太多的介紹,痾...語法的應用我自己來就行了,真的。

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

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


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

  1. 在 PowerShell 中使用變數、陣列和雜湊表
    使用字串變數
    a. 宣告變數logPath路徑為C:\Logs\"
    b. 取得 $logPath 變數的類型
    c. 將值中的C:替換為D

1. 在 PowerShell 中使用變數、陣列和雜湊表

使用字串變數

a. 宣告變數logPath路徑為C:\Logs\"

$logPath = "C:\Logs\"


b. 取得 $logPath 變數的類型(Type)[註1]

$logPath.GetType()

呼叫 GetType() 方法來獲取 $logPath 變數的數據型別。這個方法會返回一個 System.Type 的物件,表示變數的型別。
在這個情境中,由於 $logPath 的值是一個包含路徑字串的變數,.GetType() 方法的結果會是 System.String,這表示這是一個字串型別。

這行指令並非必要,依需求而定的,詳如[註1]。

raw-image

IsPublic:
這個屬性顯示型別是否是公共的。在這個情境下,True 表示這是一個公共型別
IsSerial:
這個屬性顯示型別是否是可序列化的。在這個情境下,True 表示這是一個可序列化的型別。
Name:
這個屬性顯示型別的名稱。在這個情境下,String 表示這是一個字串型別。
BaseType:
這個屬性顯示型別的基本型別。在這個情境下,System.Object 表示這個字串型別是從基本的 System.Object 型別繼承而來。

檢視 $logPath 變數所屬的物件的屬性和方法

$logPath | Get-Member
raw-image

宣告變數logFil為"log.txt"

$logFile = "log.txt"

將$logFile變數新增至$logPath變數中

$logPath += $logFile

執行 $logPath += $logFile 時,實際上是將 $logFile 的值("log.txt")添加到 $logPath 變數的末尾。
這樣,$logPath 變數現在將包含先前的值("C:\Logs")和新添加的值("log.txt")。

這樣的操作通常用於構建檔案路徑,將目錄路徑和檔案名稱組合在一起。



筆者的話:

執行$logPath += $logFile的時候,我更加建議直接宣告好兩個變數,就像下面這樣

$logPath = "C:\Logs\"

$logFile = "log.txt"

這樣就可以在任何時候使用 $logPath$logFile 這兩個變數,而不需要後續的拼接操作。這樣的方式更容易維護和理解

因為這邊是直接輸入指令的方式,而不是撰寫Script,所以才用拼接的方式。



c. 將值中的C:替換為D

$logPath.Replace("C:","D:")

這個語法是將C:替換成D:,但這不會修改原始的$logPath 變數,而是返回一個新的字串,因此如果要永久改變新值,就要用變數的方法,如下方法

$logPath = $logPath.Replace("C:","D:")
raw-image



筆者的話:

這邊和$logPath += $logFile的地方一樣,

因為是直接輸入指令的方式,而不是撰寫Script,所以才用這樣的方式。

Script中是不會這樣進行修改的。



註釋

[註1] GetType() ---

PowerShell 是一種動態類型語言,它會根據變數的內容自動推斷數據型別。
如果確定 $logPath的數據型別,並且在後續的程式碼中不會進行數據型別的變更,那麼直接使用變數即可。

那什麼情況下是一定需要的呢?

PowerShell 中,動態型別系統通常不需要明確指定型別。然而,有一些情境下可能會考慮明確指定型別:

  1. 操作特定型別的行為: 有時,可能想要確保變數是某一特定型別,以便進行相應的行為。例如,如果需要將一個變數轉換為整數,就要確保它是數字型別。
  2. 確保變數符合預期: 在某些情況下,可能希望變數的內容符合特定的預期,這可能包括型別。如果預期 $logPath 是字串型別的檔案路徑,則可以使用 $logPath.GetType() 來確保。
  3. 指定嚴格的型別要求: 在一些情況下,特別是在函數或模組設計中,可能想要確保傳遞給函數的引數滿足特定的型別要求。

這些情境通常是基於程式碼的設計和需求,以確保程式碼的穩健性和正確性。在一般情況下,PowerShell 的動態型別系統足以處理大多數情況,並且不需要額外的型別檢查。


本次的收穫

關於宣告變數的部分,其實沒啥好講的,這邊是很基礎中的基礎,只要清楚語法如何運用就行了,唯一要注意的是,直接輸入指令和撰寫Script語法,在使用方式還是有差異的。


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