我正在做一個 powershell 腳本,它將觸發特定于產品的命令并操作回傳的結果。回傳結果的示例如下所示
XXXX command completed Thu Jan 13 16:59:59 2022 :XXXX, Account 'XXXX' on 'XXXX' modified successfully
因此,如果結果包含修改成功,它將根據結果執行任務 A,反之亦然。但是當我在我的 powershell 腳本中運行它時,我無法獲得預期的輸出。請參考我下面的腳本
write-host "The type of variable :"$eTSuspend.GetType().Name
write-host "The string : "$eTSuspend.Contains('successfully')
僅供參考,$eTSuspend是存盤命令回傳結果的變數,這是我腳本的輸出
The type of variable : Object[]
The string : False
我試圖檢查變數的資料型別,但它顯示 `Object[]` 并且字串驗證顯示為 false。所以我有點困惑,因為結果與我直接在powershell控制臺中執行的所有powershell命令不同。這是我在我的 powershell 控制臺中執行的步驟
1) 復制回傳的結果并手動分配給 `$eTSuspend`
2) 執行 $eTSuspend.GetType().Name - 是的,它是一個字串資料型別
3) $eTSuspend.Contains( 'successfully') - 是的,結果回傳 true
PS C:\Users\XXX.XXX> $eTSuspend.GetType().Name
String
PS C:\Users\XXX.XXX> $eTSuspend.Contains("successfully")
True
當我使用腳本和 powershell 控制臺執行時,我真的不明白為什么相同的命令 `GetType()` 和 `-Contains` 回傳了不同的結果
uj5u.com熱心網友回復:
您正在測驗兩種不同型別的收容措施。
String.Contains()執行子字串搜索- 如果在字串中的任何偏移處找到子字串引數,則回傳 true:"abc def".Contains("def")回傳$true,因為"def"可以從"abc def"偏移量 4 處提取子字串。
Array.Contains()并且-contains操作員測驗集合包含- 也就是說,“這個陣列/串列/集合是否包含其成員之間引數的精確副本”:@("abc", "def").Contains("def")回傳 true 因為陣列中的至少一項滿足該約束 -"def"并且"def"是等價的@("abc", "def").Contains("de")回傳 false,因為陣列中的所有專案都不完全等同于"de",換句話說:"abc" -eq "de"不是真的"def" -eq "de"也不是真的- 陣列中沒有要測驗的專案,因此回傳
$false
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/412556.html
標籤:
