ipconfig /release & ipconfig /renew
在PowerShell中运行此命令时,我得到:
Ampersand not allowed. The `&` operator is reserved for future use
PowerShell是否有一个运算符可以让我在cmd提示符下快速生成与
&
等效的运算符?在一行中运行两个命令的任何方法都可以。我知道我可以编写脚本,但是我正在寻找一些方便的方法。
#1 楼
使用分号在PowerShell中链接命令:ipconfig /release; ipconfig /renew
评论
它们将并行运行还是顺序运行?
–塔库斯
2014年7月16日,1:13
这将按顺序运行它们,cmd.exe中的&运算符也是如此。
–紧缩
2014年7月23日下午5:38
虽然有很大的不同-“;”即使第一个命令失败,也会运行第二个命令。
–伊凡
2014年10月8日16:50
如上所述,这也是cmd.exe中&的行为。
–紧缩
2014年10月8日在16:53
@Rafi是,尝试{Command-One -ea Stop}赶上{Command-Two}
– Dave_J
16年8月5日,11:05
#2 楼
分号将链接命令,如先前的回答所述,尽管与MS-DOS样式命令解释器中的&
运算符的行为存在关键差异。在命令解释器中,变量替换读取行时发生。这提供了一些巧妙的可能性,例如在不使用临时变量的情况下交换变量: >据我所知,无法在PowerShell中复制此行为。有人可能会认为这是一件好事。
实际上在PowerShell中有一种方法可以做到这一点:
set a=1
set b=2
set a=%b% & set b=%a%
echo %a%
echo %b%
单行交换变量值。
评论
虽然在快捷方式中使用-command选项在“目标”字段中似乎无效
–clearlight
18年4月6日在13:34
#3 楼
在PowerShell 7中,我们具有Pipeline chain operators
,它允许您向顺序的单行命令中添加一些条件元素运算符为:
&&
仅在第一个命令成功时才运行第二个命令。||
仅当第一个命令成功时才运行第二个命令。示例:
PS Z:\Powershell-Scripts> Write-Host "This will succeed" && Write-Host "So this will run too"
This will succeed
So this will run too
PS Z:\Powershell-Scripts> Write-Error "This is an error" && Write-Host "So this shouldn't run"
Write-Error "This is an error" && Write-Host "So this shouldn't run": This is an error
PS Z:\Powershell-Scripts> Write-Host "This will succeed" || Write-Host "This won't run"
This will succeed
PS Z:\Powershell-Scripts> Write-Error "This is an error" || Write-Host "That's why this runs"
Write-Error "This is an error" || Write-Host "That's why this runs": This is an error
That's why this runs
当然,您可以像
x && y || z
等一样将它们更多地链接在一起。这也适用于类似cmd的旧命令,例如
ipconfig
PS Z:\Powershell-Scripts> ipconfig && Write-Error "abc" || ipconfig
Windows-IP-Konfiguration
Ethernet-Adapter Ethernet:
Verbindungsspezifisches DNS-Suffix: xxx
Verbindungslokale IPv6-Adresse . : xxx
IPv4-Adresse . . . . . . . . . . : xxx
Subnetzmaske . . . . . . . . . . : 255.255.255.0
Standardgateway . . . . . . . . . : xxx
ipconfig && Write-Error "abc" || ipconfig: abc
Windows-IP-Konfiguration
Ethernet-Adapter Ethernet:
Verbindungsspezifisches DNS-Suffix: xxx
Verbindungslokale IPv6-Adresse . : xxx
IPv4-Adresse . . . . . . . . . . : xxx
Subnetzmaske . . . . . . . . . . : 255.255.255.0
Standardgateway . . . . . . . . . : xxx
这些运算符使用$?和$ LASTEXITCODE变量来确定管道是否失败。这使您可以将它们与本机命令一起使用,而不仅仅是cmdlet或函数。
来源:https://docs.microsoft.com/zh-cn/powershell / scripting / whats-new / what-s-new-in-powershell-70?view = powershell-7
评论
不工作我在powershell中尝试过:无所事事地破坏-f &&无所事事了。不起作用。
–罗勒A
4月9日上午11:05
@BasilA您是否在PowerShell 7最新版本中尝试过此操作?像您这样的非内置命令也可能不起作用。
–SimonS
4月9日下午13:58
@BasilA文档说:“这些运算符使用$?和$ LASTEXITCODE变量来确定管道是否失败。这使您可以将它们与本机命令一起使用,而不仅仅是cmdlet或函数。”因此,您应该检查非本机命令是否正确设置了这些命令
–SimonS
4月9日14:09
好的,请检查一下。谢谢。
–罗勒A
4月9日15:18
评论
有趣的注意:在串行端口和序列化之间,实际上无法搜索此问题。变得书呆子...搜索它非常容易。要获得相关的热门唱片集非常困难。 :)(+ 1表示很好的问题)
与powershell中的条件执行(&&和||)相似。