PowerShell Hashtable Ultimate Guide z przykładami

20 maja 2021 5546 Wyświetlenia PowerShell Hashtable Twój najlepszy przewodnik z przykładami

Tablica skrótów PowerShell to elementy kolekcji i ich wartości. Przedmioty są określane jako klucze. Co więcej, każdy klucz w tablicy mieszającej ma równoważną wartość.





W skrócie, tablica haszująca PowerShell jest „tablicą” magazynu kluczy/wartości.



W tej strefie S nauczę Cię wszystkiego, co musisz wiedzieć o hashtables PowerShell. Pierwsza sekcja bada różnicę między tablicą mieszającą a tablicą.

Następnie w drugiej części, używając Uzyskaj członka Cmdlet, zabiorę Cię za maskę hashtables.



Na koniec omówię różne sposoby wykorzystania tablic haszujących w skryptach.



Przeglądaj tematy postów

Tablica skrótów PowerShell a tablica PowerShell

Tablica skrótów PowerShell a tablica PowerShell

Zanim zagłębię się w Hashtables, chcę wyjaśnić różnicę między Hashtables a tablicami. To rozróżnienie jest ważne, ponieważ te dwie koncepcje można łatwo pomylić.



We wstępie do tego przewodnika wyjaśniłem, że tablica haszująca to magazyn klucz/wartość. Dodatkowo hashtable jest jak tabela z kluczami i wartościami.



Wręcz przeciwnie, tablica PowerShell to zbiór wartości lub obiektów.

Podstawowa różnica między tablicą haszującą PowerShell a tablicą PowerShell polega na tym, że tablica mieszająca jest zbiorem elementów (kluczy) i ich wartości – podczas gdy tablica jest tylko listą elementów.

Dla szybkiego przykładu, poniższe kody są przykładami hashtables i tablicy – ​​pierwszy kod tworzy hashtables, podczas gdy drugi kod tworzy tablicę:

|_+_| |_+_| Z przykładów kodu widać, że podczas gdy tablica mieszająca jest ujęta w {}, tablica jest ujęta w ().

Poniższy zrzut ekranu przedstawia wyniki dwóch kodów.

Tablica skrótów PowerShell a tablica PowerShell

Część zrzutu ekranu oznaczona (1) jest wynikiem tablicy mieszającej. Czy widziałeś parę klucz/wartość?

W powyższym przykładzie klucz Root ma wartość C:UsersvictoDocuments. Ponadto klucz PSProvider ma wartość o nazwie FileSystem.

Wreszcie, Nazwa ma wartość Dokument.

Chrome request strona mobilna

Ponadto część zrzutu ekranu oznaczona (2) zawiera wynik kodu tablicy. Jak wyjaśniono wcześniej, jest to tylko lista.

Metody i właściwości tablic haszujących PowerShell

Metody i właściwości tablic haszujących PowerShell

We wstępie obiecałem zabrać Cię za maskę PowerShell Hashtables. To jest to!

W tej sekcji nauczę Cię, jak używać polecenia cmdlet Get-Member do przeglądania tablic haszujących.

Gdy przesyłasz wynik tabeli skrótu PowerShell do Uzyskaj członka , będziesz mógł przejrzeć dostępne Metody oraz Nieruchomości tablicy mieszającej.

Wróćmy do naszego pierwszego szybkiego przykładu powyżej:

|_+_|

Skopiuj kod do nowego dokumentu PowerShell ISE. Następnie uruchom kod.

Następnie, aby zobaczyć dostępne Metody oraz Nieruchomości w tej tablicy mieszającej uruchom to polecenie w tym samym PowerShell ISE.

|_+_|

Aby uruchomić powyższe polecenie, wklej je poniżej ostatniego kodu. Następnie zaznacz go i naciśnij F8 lub kliknij podświetloną ikonę.

Metody i właściwości tablic haszujących PowerShell

Polecenie wyświetli wyniki w okienku konsoli PowerShell.

Na razie spójrz na wynik. Ma TypeName: System.Collections.Hashtable.

Potwierdza to, że obiekty przesłane do polecenia cmdlet Get-Member są tabelą haszującą!

W kolejnych podrozdziałach tej sekcji pokażę, jak korzystać z typowych metod i właściwości tablicy mieszającej PowerShell.

Jak dodać lub usunąć elementy do istniejącej tabeli haszującej?

W tej sekcji dowiesz się, jak dodawać nowe elementy do istniejącej tablicy mieszającej PowerShell. Ponadto dowiesz się również, jak usunąć element z istniejącej tablicy haszującej PowerShell.

Zanim zagłębię się w to, chcę wspomnieć, że możesz również stworzyć pustą tablicę haszującą. Następnie dodaj klucze/wartości do tablicy mieszającej – więcej o tym później.

Powrót do dodawania lub usuwania elementów do istniejących hastables PowerShell – kiedy uruchomiliśmy $tabela haszująca | Uzyskaj członka poleceniem, jedną z metod wyświetlanych w wyniku jest Dodać . Jest też metoda, Usunąć .

Zobacz wyróżnione fragmenty zrzutu ekranu poniżej:

Metody i właściwości tablic haszujących PowerShell

Zanim pokażę ci, jak korzystać z tych dwóch metod, spójrzmy na oryginalny kod tablicy haszującej PowerShell:

|_+_|

Tablica mieszająca ma 3 wpisy. W tym przykładzie dodam inny klucz o nazwie Opis z wartością Mapy do mojego folderu „Moje dokumenty”.

Aby wykonać to zadanie, uruchomię poniższe polecenie (na tej samej konsoli PowerShell ISE, na której uruchomiłem poprzednie polecenia)

|_+_| Zwróć uwagę, jak użyłem Add metoda . Dodaję kropkę (.) obok zmiennej przechowującej tablicę haszującą. Następnie włączyłem metodę, Dodać , śledzony przez (). Na koniec dołączyłem nową parę klucz/wartość, którą chcę dodać do tablicy mieszającej.

Po uruchomieniu polecenia, aby potwierdzić, że dodatkowy klucz został dodany, zaznacz $tabela haszująca i naciśnij F8.

jak dodać gry Windows do Steam
|_+_|

Oto zrzut ekranu z wynikiem – potwierdzający, że dodano nowy klucz/wartość.

Idąc dalej, możesz użyć tego samego podejścia do usunięcia wartości z tablicy mieszającej PowerShell.

Aby usunąć ostatni klucz, który dodaliśmy do tablicy mieszającej, uruchom polecenie podobne do ostatniego polecenia. Tym razem jednak zastąp Dodać Metoda z Usunąć Metoda.

Oto polecenie:

|_+_| ten Usunąć Metoda obejmuje tylko klucz . Nie musisz dołączać klucza wartość w poleceniu.

Najpierw uruchom powyższe polecenie. Następnie, aby potwierdzić, że klucz został usunięty, zaznacz $tabela haszująca i naciśnij F8.

|_+_|

Wynik polecenia potwierdza, że ​​klucz został usunięty!

Metody i właściwości tablic haszujących PowerShell — jak dodawać lub usuwać elementy do istniejącej tablicy haszującej

Jak sprawdzić, czy tablica skrótów PowerShell zawiera klucz?

Kiedy przekazaliśmy pośpiech poniżej do Uzyskaj członka Polecenie cmdlet, jedną z wyświetlanych metod jest ZawieraKlucz Metoda – zobacz zrzut ekranu poniżej.

|_+_|

ten ZawieraKlucz Metodę można wykorzystać na wiele sposobów. Jednak jednym z typowych zastosowań tej metody jest użycie jej do sprawdzenia, czy klucz istnieje w tablicy mieszającej, a jeśli nie, dodaj klucz.

Kolejne zastosowanie ZawieraKlucz Metodą tablicy mieszającej PowerShell jest po prostu użycie jej do sprawdzenia, czy nazwa klucza istnieje w tablicy mieszającej.

Aby sprawdzić, czy klucz istnieje w tablicy mieszającej PowerShell, używając ZawieraKlucz Metoda, uruchom poniższe polecenie:

|_+_|

Polecenie to sprawdza, czy klucz o nazwie Opis istnieje w tablicy haszującej zapisanej w zmiennej $hashtable. Wynik polecenia wyświetla False.

Metody i właściwości tablic haszujących PowerShell — jak sprawdzić, czy tablica haszująca PowerShell zawiera klucz

Aby sprawdzić, czy klucz Description istnieje przed dodaniem go do tablicy mieszającej PowerShell, będziemy potrzebować dodatkowej linii kodów do poprzedniego polecenia.

Oto ulepszony kod.

|_+_|

Kod używa instrukcji warunkowej IF, aby sprawdzić, czy klucz o nazwie Description istnieje w tablicy mieszającej.

Następnie, jeśli wynikiem jest False, w części wykonania polecenia instrukcji IF używamy Dodać Metoda tablicy mieszającej programu PowerShell w celu dodania klucza do tablicy mieszającej.

Jeśli jednak klucz istnieje w tablicy mieszającej, w części Else instrukcji IF wyświetlamy komunikat informujący osobę, która uruchomiła polecenie, że klucz już istnieje.

Po uruchomieniu ostatniego polecenia podświetl $tabela haszująca zmienna i uruchom ją samodzielnie. Wynik potwierdza, że ​​klucz Opis został dodany do zmiennej, ponieważ nie istniał.

Zaloguj się Błąd inicjalizacji procesu Windows 10

Aby sprawdzić, czy ten skrypt działa – uruchom go ponownie…

|_+_|

Tym razem skrypt nie dodał klucza. Raczej zwrócił informacje w Innej części oświadczenia IF – Klucz już istnieje w tablicy haszującej .

Metody i właściwości tablic haszujących PowerShell — jak sprawdzić, czy tablica haszująca PowerShell zawiera klucz

Jak przekonwertować tablicę skrótu PowerShell na ciąg znaków

Pierwszym krokiem do przekonwertowania tabeli haszującej programu PowerShell na ciąg znaków jest zwrócenie wartości kluczy w tabeli haszującej. Innymi słowy, konwertujesz tablicę mieszającą PowerShell na tablicę PowerShell.

Aby zwrócić wartości z tablicy mieszającej, wywołaj Wartości właściwość tablicy mieszającej.

Oto polecenie, które zwraca wartości w tablicy mieszającej:

|_+_|

Po zwróceniu wartości w tablicy mieszającej programu PowerShell następnym krokiem jest potok $hashtable.Values ​​do tabeli Out-String Komenda…

|_+_| W dalszej części tego przewodnika docenisz znaczenie konwersji tablicy mieszającej programu PowerShell na ciąg. Aby zobaczyć praktyczne zastosowanie tego w rzeczywistych skryptach SysAdmin, czytaj dalej.

Jak korzystać z tablicy haszującej PowerShell GetEnumerator metoda

Inną ważną metodą tablicy haszującej PowerShell jest GetEnumerator Metoda.

Możesz użyć tej metody do rozdzielenia kluczy w tablicy mieszającej na pojedyncze ciągi. Oto przykładowe polecenie GetEnumerator Metoda hashtable:

|_+_|

Jak widać z wyniku powyższego polecenia, klucze i wartości są zwracane w poszczególnych nagłówkach. Nie mogę teraz wymyślić aplikacji, jednak jeśli kiedykolwiek będziesz musiał rozbić klucze w tablicy mieszającej PowerShell, wiesz, jak to zrobić!

Jak liczyć elementy tablicy haszującej PowerShell

Jest jeszcze jedna użyteczna właściwość hashtable, Liczyć . Jak sama nazwa wskazuje, ta właściwość zwraca liczbę kluczy w tablicy mieszającej.

Jak Wartości Właściwość, aby wywołać właściwość Count, użyj polecenia podobnego do poniższego:

|_+_|

Polecenie potwierdza, że ​​tablica haszująca $hashtable ma 4 klucze.

Jak liczyć elementy tablicy haszującej PowerShell

Jak utworzyć pustą tabelę hashowania PowerShell i dodać klucze?

Jak utworzyć pustą tabelę hashowania PowerShell i dodać klucze?

Jak dotąd wszystkie przykłady w tej strefie S koncentrowały się na manipulowaniu tabelą haszującą PowerShell za pomocą istniejących kluczy. W tej sekcji dowiesz się, jak stworzyć pustą tablicę mieszającą.

Następnie dodaj klucze do tablicy mieszającej.

Aby utworzyć pustą tablicę haszującą PowerShell, po prostu wpisz @ znak, po którym następuje {} wsporniki. Oto przykład pustej tablicy haszującej zapisanej w zmiennej, Pusta tablica haszująca :

|_+_|

Aby potwierdzić, że tablica mieszająca została utworzona bez wartości, uruchom poprzednie polecenie. Następnie uruchom zmienną samodzielnie.

|_+_|

Następnym krokiem jest użycie Dodać omówioną wcześniej w tym przewodniku metodę dodawania kluczy/wartości do tablicy mieszającej. W tym przykładzie dodam klucz o nazwie Nazwa , o wartości Dokument .

Oto polecenie wykonania tego zadania.

|_+_|

Na koniec, aby potwierdzić, że wartości zostały pomyślnie dodane, uruchom zmienną $Emptyhashtable:

|_+_|

Ostatnia komenda potwierdza, że ​​wartości zostały pomyślnie dodane:

Jak stworzyć tabelę hashowania PowerShell z wieloma wartościami i jednym kluczem?

Jak stworzyć tabelę hashowania PowerShell z wieloma wartościami i jednym kluczem?

We wszystkich przykładach, które omówiliśmy do tej pory, tablica haszująca PowerShell ma jedną parę klucz/wartość. Istnieją jednak okoliczności, w których może być konieczne posiadanie jednego klucza w tablicy mieszającej z wieloma wartościami.

W tym przypadku chcesz stworzyć tablicę mieszającą z tablicami jako wartościami.

Na początek myślę, że lepiej pokazać kody, których użyłem do odróżnienia tablicy mieszającej od tablicy.

|_+_| |_+_|

Tak więc, aby utworzyć tablicę haszującą PowerShell z pojedynczymi kluczami i wieloma wartościami, uruchom skrypt podobny do tego:

|_+_|

W powyższym skrypcie Nazwa dziennika jest kluczem tablicy mieszającej, podczas gdy wartości System, Application i Security są przypisane do klucza. W efekcie stworzyliśmy jeden hastable klucz z wieloma wartościami.

Synchronizacja zdjęć icloud nie działa

Aby wymienić poszczególne wartości w Nazwa dziennika klawisz, uruchom poniższe polecenie:

|_+_|

Część zrzutu poniżej oznaczona jako (1) jest wynikiem tablicy haszującej, $hashtableWithArrays . Ponadto część oznaczona (2) pokazuje wynik $hashtableWithArrays.Values Komenda.

Jeśli znasz dzienniki zdarzeń systemu Windows — system, aplikacja i zabezpieczenia — to nazwy dzienników zdarzeń systemu Windows.

W następnej sekcji pokażę, jak używać pętli PowerShell ForEach do iteracji przez powyższą tablicę mieszającą – i uruchomić Get-EventLog polecenie w tych 3 dziennikach zdarzeń – za pomocą jednego skryptu PowerShell.

Jak iterować tabelę hashowania PowerShell za pomocą pętli ForEach

Jak iterować tabelę hashowania PowerShell za pomocą ForEach

W ostatniej sekcji stworzyłem jednokluczową tablicę haszującą PowerShell z wieloma wartościami.

Na przykład w tej sekcji zmieniłem zmienną przechowującą tablicę haszującą na LogNameKeys . Oto zaktualizowany skrypt.

|_+_|

W tej sekcji nauczę Cię, jak korzystać Dla każdego aby przejść przez wartości przechowywane w Nazwa dziennika klucz i uruchom Get-EventLog Komenda.

Poniżej znajduje się ogólna składnia polecenia PowerShell ForEach:

|_+_|

Jeśli zastosujesz powyższą składnię do naszego LogName hashtable, zaktualizowane polecenie będzie wyglądać tak:

Wiersze zaczynające się od # to komentarze PowerShell. |_+_|

Pierwsza część skryptu to ten sam skrypt, który tworzy jednokluczową tablicę haszującą PowerShell z wieloma wartościami. Oto scenariusz:

|_+_|

W drugiej części skryptu przekonwertowałem wartości przechowywane w ($LogNameKeys.Values) na ciągi i zapisałem wynik w innej zmiennej, LogNameKeysAsStrings .

|_+_|

Wreszcie w trzeciej części skryptu – wprowadzamy pętlę ForEach:

|_+_|

W tej części skryptu mówimy PowerShellowi, aby wziął każdą wartość przechowywaną w Nazwa dziennika klucz ( $LogNameKeysAsStrings ) – zapisz tymczasowo tę indywidualną wartość w zmiennej LogNameKey – następnie użyj zmiennej temporalnej do uruchomienia Get-EventLog Komenda.

uwzględniłem Najnowszy parametr Get-EventLog polecenie o wartości 5, aby polecenie zwróciło ostatnie 5 wpisów z każdego dziennika zdarzeń. Kiedy spojrzysz na skrypt PowerShell, może to wyglądać na skomplikowane. Jeśli jednak przyjrzysz się uważnie, zwykle jest to bardzo łatwe.

Teraz skopiuj poniższy skrypt do nowego dokumentu PowerShell ISE i uruchom go.

Otwórz PowerShell ISE jako administrator. Jeśli nie otworzysz programu PowerShell ISE jako administrator, otrzymasz komunikaty o błędach dostępu. |_+_|

Poniższy zrzut ekranu przedstawia wynik działania skryptu. W okienku wyników znajduje się 15 wierszy – reprezentujących 5 dzienników zdarzeń System, Application, Security.

Jak dostosować raport za pomocą PowerShell Hashtable i Select-Object

Jak dostosować raport za pomocą PowerShell Hashtable i Select-Object

W ostatniej sekcji stworzyliśmy skrypt PowerShell, który pobiera raport dziennika zdarzeń systemu Windows. Oto zrzut ekranu raportu

Domyślne wyjście skryptu ma 5 kolumn – Indeks , Czas , Typ wpisu , Źródło , Identyfikator instancji , oraz Wiadomość . Jeśli wysyłasz to jako raport, możesz zmienić te nazwy kolumn na nazwy, które będą łatwe do zrozumienia.

Oto skrypt z ostatniej sekcji.

Skrypt został nieco zmodyfikowany. mam teraz zmienną, DziennikZdarzeńRaport który zapisuje dane wyjściowe pętli ForEach. Wyjaśnię, dlaczego jest to konieczne później. |_+_|

Aby zmodyfikować nazwy nagłówków kolumn z tego skryptu, prześlemy potok Get-EventLog polecenie do Wybierz obiekt Komenda.

Następnie utwórz tablicę haszującą PowerShell w obrębie Wybierz obiekt polecenie, które modyfikuje nazwy kolumn. Oto zmodyfikowany skrypt, który wykonuje magię.

|_+_|

Scenariusz wydaje się znacznie bardziej złożony, niż jest w rzeczywistości. Jeśli jednak skupisz się na części skryptu po Select-Object, łatwo będzie dostrzec różnicę między tym skryptem a wcześniejszą kopią.

W szczególności umieściłem hashtables w Wybierz obiekt blok kodu. Każda tablica mieszająca dostosowuje wyjście Get-EventLog Komenda.

Oto przykładowa tablica haszująca z Wybierz obiekt blok:

|_+_|

Jak zwykle hashtable PowerShell składa się z dwóch elementów. Kluczem jest Nazwa , wartością jest Wyrażenie .

Inną ważną rzeczą, na którą należy zwrócić uwagę, jest to, że na końcu każdej tablicy haszującej w Wybierz obiekt blok, jest przecinek (,).

Oto wynik końcowego skryptu w PowerShell:

Wcześniej obiecałem wyjaśnić, dlaczego wprowadziłem $EventLogRaport zmienna, aby zapisać dane wyjściowe pętli ForEach. Bez tej zmiennej wynik końcowy wyświetli 3 indywidualne wyniki dla każdego z 3 dzienników zdarzeń. Jednak przechowując cały wynik w zmiennej, mogłem przesłać tę zmienną do formatu Format-Table – wyświetla to cały wynik jako pojedynczą tabelę. Oto polecenie, które wykonało magię. |_+_|

Jak wyeksportować tabelę haszującą PowerShell do CSV

Jak wyeksportować tabelę haszującą PowerShell do CSV

W tej ostatniej sekcji dowiesz się, jak wyeksportować tablicę mieszającą PowerShell do CSV.

W moim pierwszym przykładzie dla tej sekcji pokażę, jak wyeksportować ten hashtab do CSV.

|_+_|

Aby pomyślnie wyeksportować tę tabelę hashowania PowerShell do pliku CSV, musisz użyć GetEnumerator Metoda (omawiana wcześniej) wykazu wartości. W przeciwnym razie rzeczywiste pary klucz/wartość nie zostaną wyeksportowane.

Oto zmodyfikowany skrypt, który eksportuje tablicę hash zapisaną w tablica haszująca zmienna do pliku CSV.

|_+_|

W przedstawionym poniżej skrypcie:

|_+_|

Skrypt zawiera GetEnumerator metoda w tablicy mieszającej. Następnie przesyła wyjście do Wybierz obiekt Komenda.

Na koniec przesyłam potok wyjście Wybierz obiekt polecenie do Eksport-CSV Komenda. Aby przeczytać więcej o tym, jak używać Eksport-CSV Polecenie cmdlet, przeczytaj nasz przewodnik — Powershell NoTypeInformation: Aplikacje i przykłady .

Po uruchomieniu tego skryptu tworzy on plik CSV o nazwie hashtable.csv , w określonej ścieżce. Zobacz zrzut ekranu poniżej, aby zobaczyć dane wyjściowe pliku CSV.

monitor baterii bluetooth windows 10
|_+_|

W moim drugim przykładzie wyeksportuję dane wyjściowe skryptu, który stworzyliśmy w ostatniej sekcji – skrypt dziennika zdarzeń – do pliku CSV.

Oto scenariusz. Aby wyeksportować raport do CSV, dodałem poniższy kod na końcu tego skryptu.

|_+_| |_+_|

Kod przesyła dane wyjściowe funkcji Dla każdego pętla – zapisana w DziennikZdarzeńRaport zmienna – do Polecenie Export-Csv . Wygenerowany plik CSV pokazano na poniższym zrzucie ekranu.

To wszystko – kompleksowy przewodnik po hashtable PowerShell! Mam nadzieję, że okazało się to pomocne?

Jeśli uznałeś to za pomocne, uprzejmie zagłosuj tak do Czy ten post był pomocny w poniższym pytaniu.

Alternatywnie możesz zadać pytanie, zostawić komentarz lub przekazać więcej opinii za pomocą formularza Zostaw odpowiedź, który znajduje się na końcu tej strony.

Aby uzyskać więcej informacji o strefach PowerShell tech S, odwiedź naszą stronę z instrukcjami dotyczącymi programu Windows PowerShell. Bardzo pomocna może być również nasza strona Praca z Home.

Referencje i dalsza lektura

  1. Wszystko, co chciałeś wiedzieć o hashtables
  2. Połącz tablice i tablice mieszające w PowerShell dla zabawy i zysku
  3. O tablicach haszujących