簡體   English   中英

如何使用Powershell使用if語句處理某些功能?

[英]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評估。
  • 我將函數移到腳本的頂部,因為PowerShell從上到下執行代碼。 它不是首先編譯的。 因此, 將函數讀入內存並進行定義之前 ,不能進行函數調用。
  • 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM