[英]Basic multiple if statement logic flow syntax in PowerShell
我似乎無法理解如何繼續另一個 IF 語句。 我想做的是:
我在操作 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.