Microsoft PowerShell to wspaniała platforma skryptowa. Microsoft zapewnia obsługę PowerShell dla prawie wszystkich ról i funkcji systemu Windows Server. Możesz używać PowerShell do automatyzacji powtarzających się zadań, jak również do łatwego wykonywania zadań z wiersza poleceń, które zazwyczaj wykonujesz za pomocą narzędzi GUI. Na przykład, w środowisku produkcyjnym, jeśli trzeba sprawdzić stan łatania na serwerach Windows, użycie skryptów PowerShell jest znacznie łatwiejsze niż łączenie się z każdym serwerem z osobna, a następnie sprawdzanie stanu łatania. Jestem regularnym użytkownikiem PowerShell i zaprojektowałem tysiące skryptów PowerShell w ciągu moich 18 lat doświadczenia w IT.
Przed PowerShell, podstawowym językiem skryptowym do wykonywania zadań operacyjnych Windows był Visual Basic Scripting. Chociaż Visual Basic Scripting nadal istnieje i wielu administratorów IT nadal woli używać skryptów VB, warto wspomnieć, że PowerShell zmniejsza złożoność kodu. Na przykład, aby sprawdzić usługi na komputerze z systemem Windows, trzeba napisać kod VBScript w notatniku, zapisać plik jako .VBS, a następnie wykonać go za pomocą pliku wykonawczego hosta CSCript. Ale używając PowerShell możesz użyć prostego cmdleta Get-Service, który pomoże Ci szybko wyświetlić listę usług na komputerze z systemem Windows. Gdybyś potrzebował zapisać dane wyjściowe do pliku za pomocą skryptu VB, będziesz musiał ponownie napisać mnóstwo kodu w skrypcie VB, który polega na otwarciu pliku, a następnie zapisaniu jego zawartości do pliku. PowerShell po prostu nie wymaga otwierania pliku, zanim zawartość pobrana przez cmdlet PowerShell może zostać zapisana do pliku. Wystarczy użyć cmdletów „Export-CSV” lub „Add-Content”.
Cmdlety: The building blocks of PowerShell scripts
PowerShell oferuje cmdlety (wymawiane jako „command-lets”), czasami określane jako narzędzia wiersza poleceń, które można wykorzystać do uzyskania informacji o systemie operacyjnym, aplikacjach zainstalowanych na komputerze z systemem Windows, informacji o sieci, stanie łatania na komputerze z systemem Windows i wielu innych. Ważne jest, aby pamiętać, że cmdlety PowerShell są napisane w .NET i używają klas .NET do wykonywania wymaganych zadań. Jeśli chcesz dowiedzieć się, które cmdlety PowerShell są dostępne na komputerze lokalnym, wykonaj następujące polecenie:
Get-Command
Get-Command jest cmdletem PowerShell, który wyszukuje cmdlety, funkcje, filtry i skrypty PowerShell zainstalowane na komputerze lokalnym. Powyższe polecenie zapyta o wszystkie moduły PowerShell zainstalowane na lokalnym komputerze. Jeśli potrzebujesz zobaczyć wszystkie polecenia zainstalowane na komputerze lokalnym w odpowiedniej kolejności, wykonaj to polecenie:
Get-Command -Type cmdlet | Sort-Object -Property Noun |FT -GroupBy Noun
Trzy typy operacji PowerShell
Używając PowerShell, możesz wykonać trzy typy operacji. Są to Get, Set i Remove. Każdy cmdlet PowerShell, który zaczyna się od „Get” jest zwykle używany do pobierania informacji z komponentów systemu Windows. Na przykład Get-ADUser wykonuje operację odczytu bazy danych Active Directory w celu pobrania informacji o użytkowniku. Poniżej przedstawiono kilka przykładów użycia cmdleta Get-ADUser PowerShell:
Get-ADUser -Filter * -SearchBase „OU=TestUsers,DC=TechGenix,DC=Com”
Powyższe polecenie pobiera wszystkie konta użytkowników znajdujące się w jednostce organizacyjnej, podczas gdy poniższe polecenie pobiera właściwości związane z pojedynczym użytkownikiem Active Directory:
Get-ADUser -Identity JohnThomas -Properties *
Ccmdlety PowerShell rozpoczynające się od „Set” służą do edycji informacji o składniku Windows. Na przykład za pomocą polecenia Set-ADUser można wykonywać różne zadania operacyjne, jak pokazano w poniższych poleceniach:
Set-ADUser -Identity JohnThomas -HomeFolder \u0026apos;
Poniższe polecenia ustawiają właściwość poczty dla użytkownika JohnThomas.
$ThisUser = Get-ADUser -Identity JohnThomas -Properties Mail
$ThisUser.Mail = [email protected]
Set-ADUser -Instance $ThisUser
Każdy cmdlet PowerShell, który zaczyna się od „Remove”, służy do wykonywania operacji usuwania. Na przykład, Remove-ADUser może być użyty do usunięcia użytkownika Active Directory, jak pokazano poniżej:
Remove-ADUser -Identity JohnThomas
Łączenie cmdletów PowerShell
Jedną z najlepszych cech PowerShell jest możliwość łączenia dwóch lub więcej cmdletów PowerShell w jedno polecenie PowerShell. Takie polecenia są czasami nazywane poleceniami typu one-liner PowerShell. Na przykład, jeśli trzeba usunąć wszystkie wyłączone konta użytkowników z Active Directory, można połączyć polecenia Search-ADAccount i Remove-ADUser, jak pokazano w poniższym poleceniu:
Search-ADAccount -AccountDisabled | Where {$_.ObjectClass -eq „User”} | Remove-ADUser
Jak widać w powyższym poleceniu, Search-ADAccount PowerShell cmdlet wykonuje wyszukiwanie w całym katalogu aktywnym w celu znalezienia wyłączonych kont, a następnie używając operatora pipe (|) instruujemy Remove-ADUser, aby wykonał operację usunięcia tylko na użytkownikach, którzy zostali wyszukani przez Search-ADAccount.
Aliasy PowerShell
Mimo że wiele cmdletów PowerShell jest łatwych do odczytania i użycia, PowerShell udostępnia również funkcję zwaną aliasem PowerShell. PowerShell jest wystarczająco inteligentny, aby uzupełnić nazwę cmdleta PowerShell poprzez naciśnięcie klawisza Tab. W przypadku, gdy masz problem z zapamiętaniem nazwy cmdletów PowerShell, możesz utworzyć aliasy PowerShell. Na przykład, można utworzyć alias dla cmdleta PowerShell Get-MailBoxStatistics za pomocą poniższego polecenia:
New-Alias ShowMB Get-MailBoxStatistics
Po wpisaniu „ShowMB” w oknie PowerShell, PowerShell szuka cmdleta powiązanego z aliasem ShowMB, a następnie wykonuje go.
Zapisywanie informacji w pliku CSV
Jeśli chodzi o zapisywanie informacji w pliku CSV, PowerShell oszczędza wiele pracy związanej ze skryptowaniem. PowerShell dostarcza cmdlet „Export-CSV”, którego można używać z innymi cmdletami PowerShell. Domyślnie każde polecenie PowerShell, które wykonujesz, pokazuje wynikowe informacje w oknie poleceń PowerShell, chyba że dodasz Export-CSV na końcu polecenia, jak pokazano w poniższym poleceniu:
Get-ADUser -Filter * -SearchBase „OU=TestUsers,DC=TechGenix,DC=Com” | Export-CSV C:\Temp\AllUsersInAnOU.CSV
Zauważ, że w powyższym poleceniu po prostu dodajesz „Export-CSV” na końcu polecenia, aby dane wyjściowe zostały wyeksportowane w pliku CSV.
Jak widać, skrypty PowerShell skracają czas wykonywania codziennych zadań operacyjnych. PowerShell jest zdolny do wykonywania trzech zadań operacyjnych; Get, Set i Remove, a 97 procent cmdletów PowerShell zaczyna się od tych trzech słów, aby łatwo zidentyfikować funkcję cmdleta PowerShell. Wyjaśniliśmy również jak łatwo jest połączyć dwa cmdlety w jedno polecenie, aby uczynić twoje skrypty PowerShell bardziej wydajnymi.