Toto je otázka, kterou jsem si poměrně často, takže jsem si myslel, že napsat článek o tom. Jak název napovídá, ukážu, jak můžete po vytvoření přidat nebo odebrat prvky do pole PowerShell.
PowerShell Pole
začněme s definicí pole, jak to přijde z PowerShell dokumentace:
pole je datová struktura, která je navržen tak, aby ukládat kolekce položek., Položky mohou být stejného typu nebo různých typů.Počínaje Windows PowerShell 3.0, sbírka nula nebo jeden objekt má některé vlastnosti polí.
Vytvoření pole v PowerShell je opravdu jednoduché a s největší pravděpodobností jste již udělal, když, například, dostat seznam uživatelů ze služby Active Directory
$adUsers = Get-AdUser -Filter '*' -Server $adDomainController
výše uvedené vrátí pole REKLAMNÍ předměty obsahující všechny uživatele, odpovídající použitý filtr.,
samozřejmě, můžete inicializovat prázdné pole s následující syntaxí
$myArray = @()# Specify object type$myArray = @()
výše bude inicializovat prázdné pole, které můžeme, například, naplňte AD dotaz nebo přidání statické prvky, jako je tato,
$myArray = (1,2,3,4,5)
výše bude přidat prvky 1 až 5 myArray objektu, vytvoření nového objektu s délkou 5
PowerShell Přidat Prvky do Pole
Musíme vidět, jak vytvořit a přiřadit hodnoty pole, ale co když budeme chtít přidat šestý prvek myArray?, Pokud se pokusíte tyto
$myArray.Add(6)
To se nezdaří s následující výjimkou,
výše uvedené výjimkou je vyvolána jako PowerShell pole je kolekce pevné velikosti a chyba je říct jen to, že to nemůže být prodloužena.,
Jeden společný řešením je použít += operátor, jako například
$myArray += 6# Print array's length$myArray.length6
Při použití += operátor, co se děje pod kapotou je
- PowerShell vytvoří nové pole s stejné prvky jako ten starý a navíc nová položka
- PowerShell přepíše existující pole s nový obsah
to Vše je pro uživatele transparentní, takže nebudete vidět žádný rozdíl.,
Přidat Prvky do Pole – Zadejte ArrayList
Pokud chcete, aby se zabránilo všechny kopírování/přesun dat můžete vytvořit instanci myArray jako ArrayList, který je dynamický a umožní vám přidat nebo odebrat prvky za běhu
Podobně můžete odstranit prvky ArrayList, jako je tento,
# Will corresponding item by index$myArrayList.RemoveAt(1)
Poznámka: Odstraňte metoda bude přijímat prvek, je hodnota 1 v tomto příkladu odkazuje na hodnotu položky indexu.,
Obsazení potlačit Přidat metoda tisku nové pole je délka
Vytvořit Seznam Pole alternativní způsob, jak
výše uvedený příklad bude volat Nové-Objekt metodu na instanci new ArrayList, ale to je poměrně drahé, pokud jde o výpočetní zdroje, tak výše uvedené lze přepsat jako
$myArray = @()
kromě toho, že kratší to má navíc tu výhodu, jak se vyhnout negativní výkonnost hit Nových Objektů a optimalizaci kódu je vždy dobrý nápad, zejména pokud se jedná o větší skripty.,34f072bc0″>
Závěrečné Poznámky
Při psaní kódu, přestože není vyžadováno PowerShell, snažím se vždy deklarovat typ objektu tak, že je užitečné vědět, v daném okamžiku, Vlastnosti a Metody podporované objekt, tak jsem vždycky psát
$myString = 'Some Text'
Spíše než
$myString = 'Some Text'
Toto není požadováno v PowerShell, ale zjistila jsem, že pomáhá kódu je čitelnost a zjednodušuje práci s objektem, prohlásil 800/900 řádky v kódu, aniž by museli skočit zpět do proměnné deklarace.,
Leave a Reply