jste zápasí s pochopením PowerShell srovnávací operátory jako eq ne ceq cne. Pokud ano, čtěte dál.
přicházející z pozadí vývoje softwaru první instance, kterou jsem měl “ Huh?“moment byl, když jsem poprvé viděl PowerShell je relační operátory eq ceq cne, atd., Všechny ostatní jazyky mají srovnávací operátory, ale ne úplně jako PowerShell. Byl jsem zvyklý na == a <>.
nejen, že syntaxe vypadá úplně jinak než váš typický programovací jazyk, ale také se chovají odlišně při porovnávání sbírek hodnot.
je To něco, co opravdu visel mě, když se učí o PowerShell, ale teď to vypadá, že ol‘ pivo rčení; na chuť.,
pojďme se krátce podívat, co je srovnávací operátor, pokud nejste obeznámeni a ponoříte se hlouběji do nuancí, které PowerShell zavádí. Zanedlouho budete moci ovládat operátory ve skriptech PowerShell bez problémů.
Jak jsem již zmínil, všechny programovací / skriptovací jazyky mají srovnávací operátory. V jejich nejzákladnějším smyslu je nutné srovnávací operátory vyhodnotit, jak různé věci se porovnávají s jinými věcmi. Používají se, aby se dva objekty a vidět, jaký je rozdíl (pokud existuje), je mezi těmito dvěma objekty.,
v případě PowerShellu lze operátory také použít k nalezení prvků uvnitř sbírek hodnot.
pro tento příspěvek půjdu přes operátory rovnosti a jak je PowerShell používá. Tyto jsou eq ne s jejich případ-citlivé protějšky ceq cne. Pro úplný seznam můžete přeskočit stránky Technet nebo stačí použít Get-Help about_comparison_operatorsv konzole Powershell.,
PowerShell -EQ a -CEQ
Pokud budete někdy potřebovat zjistit, jestli objekt je rovna jiný objekt, budete muset použít eq (case-insensitive) nebo ceq (case sensitive) operátorů. Tito operátoři testují hodnotu každého subjektu, proti kterému byste chtěli porovnat.
Když jsem se poprvé začal učit PowerShell, neustále bych dělal něco takového
$string = 'Adam'if ($string = 'Adam') { 'string is equal to Adam'}
brzy budete dost udeřeni, abyste to neudělali. Značka = je operátor přiřazení, který není srovnávacím operátorem., Pro porovnání jedné hodnoty s druhou nelze použít znak =.
správným způsobem je definovat hodnotu pro kontrolu na levé straně výrazu a použíteq operátor. Zde je příkladeq aceq operátory a jak jsou používány.,

Notice how eq returned a boolean True value when comparing our variable against adam but ceq returned a boolean False value? This displays the case sensitivity difference between the two operators.,
to vše je dobré a dobré pro skalární (jednotlivé) hodnoty, ale můžete také najít všechny instance konkrétních hodnot pomocí těchto operátorů. Například, používat PowerShell -eq operátor filtrovat položky v poli:

Pokud máte proměnnou s kolekcí hodnot, jako jsou pole, můžete použít eq ceq najít všechny výskyty hodnoty uvnitř kolekce.,
Všimněte si, že našel všechny instance celé číslo 9 jsme se snažili porovnat proti. Používám tuto praktickou metodu po celou dobu.
-NE, a -CNE
Na opačné straně, oba jste ne cne. Jsou přesně opakem eq a ceq ale zobrazují přesně stejné chování pouze opačně. Netestují rovnost, testují nerovnost.

doufám, že to dává dobré vysvětlení rovnosti operátory porovnání. Tohle mě fakt dostal zavěsil jako nováček, a to nikdy opravdu klikli na mě, dokud jsem byl jen porazit v podání chybové zprávy. Doufám, že tento příspěvek zabraňuje stejnému úderu, který jsem obdržel.