題 如何在PowerShell中的一行上運行多個命令?


在cmd提示符下,您可以在一行上運行兩個命令,如下所示:

ipconfig /release & ipconfig /renew

當我在PowerShell中運行此命令時,我得到:

Ampersand not allowed. The `&` operator is reserved for future use

PowerShell是否有一個允許我快速生成等效的運算符 & 在cmd提示符?

任何在一行中運行兩個命令的方法都可以。我知道我可以製作一個劇本,但我正在尋找一些更多的東西。


206
2018-06-26 17:24


起源


有趣的是:在串行端口和序列化之間,這個問題幾乎不可能被搜索。 - David
書呆子......搜索它很容易。得到一組相關的命中很難。 :)(+1為偉大的問題) - Konrad Viltersten


答案:


使用分號在PowerShell中鏈接命令:

ipconfig /release; ipconfig /renew

295
2018-06-26 17:28



它們會並行還是順序運行? - Tarkus
這將按順序運行它們,cmd.exe中的&運算符也是如此。 - Squeezy
雖然有很大的不同 - “;”即使第一個命令失敗,也會運行第二個命令。 - Ivan
如上所述,這也是cmd.exe中&的行為。 - Squeezy
有沒有辦法讓第二個命令只在第一個命令失敗時運行? - Rafi


分號將鏈接命令,如前面的答案所述,儘管與行為的關鍵區別在於 & MS-DOS樣式命令解釋器中的運算符。

在命令解釋器中,變量替換在讀取行時發生。這允許一些整潔的可能性,例如交換變量而不是臨時的:

set a=1
set b=2
set a=%b% & set b=%a%
echo %a%
echo %b%

會導致:

2
1

據我所知,沒有辦法在PowerShell中復制此行為。有些人可能認為這是件好事。

實際上有一種方法可以在PowerShell中執行此操作:

$b, $a = $a, $b

它將導致變量值的單行交換。


28
2017-09-10 17:16



但是,在快捷方式中使用-command選項的“目標”字段似乎不起作用 - clearlight