2017-06-22 2 views
2

PowerShell Eqvの場合は、現在VBScript-to-Windows PowerShell Conversion Guideがリストの一番上に表示されます。しかし、その答えは、技術的なサポートの多くは次のとおりです。VBScriptのEqv演算子を変換する

EQV演算子は

定義:は、2つの式の論理等価性を行います。
間違いなく、Eqvはその用途を持っています。実際に使用されているかどうかはわかりません。 Windows PowerShellと同等のものがあるかもしれませんが、私たちは正直に言えば、本当に難しいとは思えませんでした。

は実際に、私は(とも書かれて:A↔BEqv演算子を使用するVBScriptでの回数を、それが存在する場合はおそらくPowerShellでそれを使用しているだろう。

私はグループ("HR", "SAP", "!IT", "...")のリストを持っています。ユーザーがリストされたすべてのグループのメンバーであり、明示的にエスカレーションマークが付いているグループのメンバーでない場合(具体的には、$Negate = $True$Group = "IT"に解決された"!IT"など)、特定のタスクを実行する必要があります。スクリプトはグループを反復処理し、グループ条件が満たされない場合(時間を節約するために)、反復を直ちに中断する必要があります。

If ($Negate -eqv (IsMember($Group))) {Break} 

どのように私は、コードの最小の論理等価演算子を構築することができます。このため
コマンドのようなものだったでしょうか?

答えて

1

あなたは文字通り、静かな定義を取る場合、あなたはおそらくすでに論理等価性演算を達成するための可能な方法が表示されます。

If ([Bool]$Expression1 -eq [Bool]$Expression2) {...} 

しかし、あなたは真理値表に近い見てみる場合は、その結果に気づくかもしれませんEqvの場合は、オペレーションとまったく同じです。

If (!(Expression1 -xor $Expression2)) {...} 

そして、それはあなたが(全体の動作や表現の1のいずれか)Xorのために反転かは重要ではありません、あなたもできるように:あなたはまた、反転Xorで論理等価性演算を達成することができることを意味


If (!Expression1 -xor $Expression2) {...} 

チェック

01:それを簡素化
0..3 | ForEach { 
    $Expression1, $Expression2 = [Int]($_/2), [Int]($_ % 2) 
    New-Object PSObject -Property @{ 
     Expression1 = [Bool]$Expression1 
     Expression2 = [Bool]$Expression2 
     Equivalence = !$Expression1 -xor $Expression2 
    } 
} | Format-Table -AutoSize 

真理値表

Expression1 Expression2 Equivalence 
----------- ----------- ----------- 
     False  False  True 
     False  True  False 
     True  False  False 
     True  True  True 

注:このソリューションで$Null式が$Falseと考えられています。これはVBScript Eqvの実装と異なりますが、$Null式を含む他のPowerShell演算子と一貫しています。例えばVBScriptステートメント:If 1 And vbNull Then msgbox "True" Else msgbox "False"は、Trueを返します。ここで、PowerShellステートメントIf (1 -and $Null) {"True"} Else {"False"}は、Falseを返します。あなたは(おそらくと呼ばれるべき - bEqv、それが存在する場合)ビット単位Eqvオペレータを探している場合

ビット単位

、それは次のようになります。ページで

$Equivalence = -bNot Expression1 -bXOr Expression2 # e.g.: -bNot 3 -bXOr 5 = -7 (-bAnd 0xF = 9) 
+0

を、あなたの中にリンクされています質問には「このページは役に立ちますか?」という質問があります。セクション。 「いいえ」をクリックすると、ドキュメントが不十分であることをMSに知らせる機会が与えられ、どのように改善できるかが示されます。 –