簡體   English   中英

PowerShell中的基本多if語句邏輯流語法

[英]Basic multiple if statement logic flow syntax in PowerShell

我似乎無法理解如何繼續另一個 IF 語句。 我想做的是:

  • 如果操作 1 成功,則對操作 2 執行 X AND go,否則記錄並返回到下一個循環
  • 如果操作 2 成功,則對操作 3 執行 X AND go,否則記錄它並返回到下一個循環

我在操作 1 后遇到“AND go 到操作 2”的問題。我嘗試了各種方法,但顯然下面的腳本不起作用。 它可以執行 Action 1 測試連接,如果成功將導出日志,否則將記錄失敗並返回到下一個循環。 但是,如果成功,我無法讓它執行下一步操作。

$hostname = Import-Csv C:\Users\jackie.cheng\Desktop\TestComputers.csv

$hostname | % {

if (Test-Connection $_.hostname -count 1)

{Write-Host "$($_.hostname) Test-Connection Succeeded"
            $array += [pscustomobject]@{
                Name = $currentobject.hostname
                Status = "Test-Connection Success"}
}

else  {Write-Host "$($_.hostname) Test-Connection Failed"
            $array2 += [pscustomobject]@{
                Name = $currentobject.hostname
                Status = "Failed Test-Connection"}
       } return

if (Test-Connection $_.hostname -count 1)

{Write-Host "Second action ran"}

else {Write-Host "Second action failed"} return


}

Foreach-Object的腳本塊中,這是帶有別名%的命令的全名,實際上您可以使用 return 跳過 return 之后的任何語句,並繼續下一個循環。

在你的情況下,你只需要像這樣將你的return移動到你的else塊中:

If (Success Condition){
   Actions to do on success
}
else{
   Actions to do on fail
   return
}

If (Success Condition 2){
   ...
}
else{
   ...
   return 
}

正如對您的問題的評論中提到的,請務必閱讀 PowerShell 中return的工作原理,因為它有些不尋常並且在不同的上下文中表現不同。

我會這樣做,只是 output 兩種情況下的對象。 注意縮進有助於查看代碼的結構。 通常不需要退貨。 -ea 0 表示“-erroraction 靜靜地繼續”。

Import-Csv TestComputers.csv |
% {
  if (Test-Connection $_.hostname -count 1 -ea 0) {
    [pscustomobject]@{
      Name = $_.hostname
      Status = $true}
  }
  else {
    [pscustomobject]@{
      Name = $_.hostname
      Status = $false}
  }
}


Name          Status
----          ------
yahoo.com       True
microsoft.com  False

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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