为什么这不起作用?
if (([datetime] $a = Date),$a.DayOfWeek -ne 'Wednesday'){
Write-Host 1
Exit
}ElseIf ($a.hour -ne 9){
Write-Host 2
Exit
}
Do stuff...
但这将
if (($connected = Test-Connection 1.1.1.1 -Quiet), $connected -eq $false){
Start-Process msg -ArgumentList "$env:USERNAME Not Connected..."
Exit
}
Do stuff..
在第一个示例中,除非我将[datetime] $a = date
移到if语句之外,否则我的脚本总是会退出。但是,第二个例子没有问题。
此外,如果在第一个if语句中插入$a
,则返回正确的datetime
。
答案 0 :(得分:0)
我最终使用了以下代码:
if ($([datetime] $a = Date; $a.DayOfWeek -ne 'Wednesday') -eq $true){
Write-Host 1
Exit
}ElseIf ($a.hour -ne 9){
Write-Host 2
Exit
}
Do stuff..
和
if ($($connected = Test-Connection 1.1.1.1 -Quiet; $connected) -eq $false){
Write-Host 3
Exit
}
Do stuff..
答案 1 :(得分:0)
不要在if语句中使用,
,因为它会导致创建一个2项数组 - if()
将始终评估为$true
的对象。
原因在于,当您将赋值操作括在plaint括号中时(即:()
,而不是$()
,这是子表达式运算符),赋值的右侧本身就归还了:
PS C:\> $null = 123 # the operation itself doesn't generate output
PS C:\> ($null = 123) # but we can force it to do so
123
所以当你做类似的事情时:
($a = Get-Date),$a -eq (Get-Date)
您真正生成以下表达式:@($a,$a) -eq (Get-Date)
你可以这样做:
if(([datetime]$a = Date).DayOfWeek -ne 'Wednesday'){
# It's not wednesday
}
和
if (($connected = Test-Connection 1.1.1.1 -Quiet) -eq $false){
# No response
}