![](/img/trans.png)
[英]How to call a function in a Switch Statement using powershell script
[英]How to handle some function with if statement using Powershell?
我想用if語句處理我的函數。 我嘗試了這段代碼,但是即使我的文件包含"@AB@CD"
,它也總是返回$End_F
值為"BB"
"@AB@CD"
。 任何人都可以幫忙。
我尋找“ @ AB @ CD”的文件就是這樣。
Config
; Date="2019/06/12" Time="10:25:02" UTC="0"
;
Number
123456@AB@CD
$Get_SKU = Get-Content '.\Number.txt' | Where-Object {$_.Contains("@AB@CD")}
$Get_SKU
if($Get_SKU)
{$ML = "1"
AUTO_SELECT
}
else
{
END_Proc
}
Function AUTO_SELECT
{
$AT = "AA"
$AT
}
Function END_Proc
{
$End_F = "BB"
$End_F
}
$FE_UB = "4"
if($ML = "1" -and $FE_UB -eq $true)
{
G_BEGIN
}
if($ML = "1" -and $FE_UB -eq $false)
{
G_END
}
else
{
END_Proc
}
Function G_BEGIN
{
$begin = "Ready"
$begin
}
Function G_END
{
$ending = "Stop"
$ending
}
為了使您的代碼按預期工作,需要糾正一些問題。
Function AUTO_SELECT
{
$AT = "AA"
$AT
}
Function END_Proc
{
$End_F = "BB"
$End_F
}
Function G_BEGIN
{
$begin = "Ready"
$begin
}
Function G_END
{
$ending = "Stop"
$ending
}
$Get_SKU = Get-Content '.\Number.txt' | Where-Object {$_.Contains("@AB@CD")}
$Get_SKU
if($Get_SKU)
{
$ML = "1"
AUTO_SELECT
}
else
{
END_Proc
}
$FE_UB = "4"
if($ML -eq "1" -and $FE_UB)
{
G_BEGIN
}
if($ML -eq "1" -and !$FE_UB)
{
G_END
}
else
{
END_Proc
}
變更說明:
$Get_SKU
將存儲$null
或字符串,具體取決於Where-Object
條件是否找到匹配項。 結果,我換出了if ($Get_SKU -eq $true)
,而選擇了if ($Get_SKU)
。 如果$Get_SKU
不是$null
則此更改將導致$true
評估。 if ($ML = "1" -and $FE_UB -eq $true)
已更新為if ($ML -eq "1" -and $FE_UB)
因為變量分配variable = value
不應在if語句條件下發生。 如果要比較值,則此處的正確運算符為-eq
。 關於$FE_UB
,與$Get_SKU
更改中的解釋相同。 $FE_UB -eq $false
已更改為!$FE_UB
。 -eq $false
運算符的刪除基於對$Get_SKU
給出的解釋。 !
字符用於有效-not
不是結果。 這會將值轉換為布爾值,然后輸出相反的布爾響應。 例如, !"string data"
將輸出$False
。 !$null
將輸出$True
。 我希望這部分是清楚的。 進一步的見解:
$True
和$False
評估
您幾乎可以使任何東西返回布爾值。 三種方法包括使用強制轉換, -as
運算符和!
。 還有許多其他方法和技巧可以做到這一點。
鑄件:
$get_sku = "data" [boolean]$get_sku True
-as
運算符:
$get_sku = $null $get_sku -as [boolean] False
玩的開心!
:
$get_sku = 4 !$get_sku False !!$get_sku True
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.