PowerShell-tartalmaz-mint a

amikor az emberek feltárása a szereplők rendelkezésre PowerShell (segítség about_comparison_operators), akkor gyakran fut át két hasonló-látszólagos, de drasztikusan különböző, operátorok – és összezavarodnak őket.

gyakran látom, hogy valaki megpróbálja ezt:

if ($string -contains '*win*') { }

megpróbálják megnézni, hogy a $string tartalmazza-e a” win ” betűket, de sajnos ez nem az, amit tartalmaz. Amit igazán használni akarnak, az A-szerű operátor:

if ($string-szerű ‘ * win*’) { }

tudom, hogy nem olvas olyan szépen, amikor hangosan mondod. Úgy hangzik, Valley lány, azt hiszem. “Ha, mint, ez a változó, mint, tudod, ez a helyettesítő, omigod, mint igazán?”De-szerű a megfelelő operátor erre a feladatra.

A-tartalmazza operátor egy kicsit trükkösebb. Úgy tervezték, hogy megmondja, ha egy objektumgyűjtemény tartalmaz (“tartalmaz”) egy adott objektumot. Most, ha a gyűjtemény objektum egy csomó húrok, ez elég egyszerű.

$coll = "one','two','three','four'if ($coll -contains 'one') { }

nehezebb lesz, ha a gyűjtemény összetett objektumokat tartalmaz. Ez nem fog úgy működni, mint gondolnád:

$ coll = Get-Service
Ha ($coll- “biteket” tartalmaz) { }

A $coll változó nem tartalmazza a “bitek” karakterláncot; amit tartalmaz, egy olyan szolgáltatásobjektum, amelynek neve tulajdonság bit. Nem igazán használhatja-ilyen módon tartalmazza, mert összehasonlítja az egész objektumot. Például:

# Get all processes
$procs = Get-Process

# Get just one process
$proc = Get-Process / Select-first 1

# Check it
$procs-contains $proc

Ez szinte mindig hamis. Ennek oka az, hogy a második parancs futtatásához szükséges idő alatt az első folyamat megváltozott. A memória, a CPU vagy más érték megváltozott. Bár a $procs ugyanazt a tényleges folyamatot tartalmazza, mint a $proc, nem minden egyes tulajdonság pontosan ugyanaz mindkét esetben. Így-tartalmaz nem érzékeli a mérkőzés.

Tudjon meg többet a ” Top Ten PowerShell bosszúság.”

szeretne feltenni egy kérdést erről a cikkről? Válaszolok: http://powershell.com/cs/forums/230.aspx!

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük