PowerShell i wszystko, co musisz wiedzieć o tym narzędziu

A co, gdyby Twój komputer mógł wykonywać za Ciebie te codzienne zadania? Dzięki programowi Windows PowerShell jest to możliwe. Oto, jak za pomocą programu PowerShell zautomatyzować powtarzalne, codzienne zadania, których nikt nie chce powtarzać w kółko.

Spis treści

Czym jest PowerShell?

Microsoft PowerShell to narzędzie wiersza poleceń i język skryptowy, który jest potężnym narzędziem dla administratorów, umożliwiającym automatyzację szerokiego zakresu zadań na komputerach i w sieciach. PowerShell zawiera komponenty wiersza poleceń i jest oparty na platformie .NET. Jeśli czytasz o WebTech360, powinieneś wiedzieć, że PowerShell to narzędzie preferowane przez administratorów IT do zarządzania dużymi sieciami.

Nauka korzystania z programu PowerShell uprości wiele żmudnych, codziennych zadań. Można również wprowadzać zmiany w całym systemie, za pośrednictwem sieci, bez konieczności indywidualnej konfiguracji każdego serwera. PowerShell staje się niezbędnym elementem zarządzania hybrydowymi środowiskami chmurowymi .

PowerShell ma wiele różnych zastosowań, które pomagają Ci pracować wydajniej i utrzymać sprawne działanie sieci. Do najbardziej podstawowych należą: planowanie codziennych aktualizacji systemów, generowanie raportów dotyczących bieżących procesów, okresowe serwisowanie i wiele innych. Chociaż wiele z tych zadań można wykonać za pomocą interfejsu graficznego, celem PowerShella jest ich szybsze wykonywanie.

Jeśli masz rutynowe zadanie konserwacyjne, którego konfiguracja zajmuje kilka minut, możesz zapisać tę samą funkcjonalność w jednym poleceniu o nazwie PowerShell. Następnie, gdy następnym razem otworzysz ten skrypt, zostanie on uruchomiony w tle. Opanowanie logiki skryptów PowerShell, zrozumienie działania obiektów i zmiennych (var) oraz inteligentne wdrażanie ich w sieci sprawi, że zaczniesz się zastanawiać, dlaczego nie korzystałeś z PowerShell wcześniej.

Ten samouczek obejmuje podstawy programu PowerShell, co będzie pomocne dla osób rozpoczynających przygodę z IT, zwłaszcza jeśli znasz wiersz poleceń systemu Windows. Dowiesz się, jak korzystać z podstawowych narzędzi i poleceń, pracować z plikami i folderami, rozumieć obiekty, korzystać ze zmiennych oraz zarządzać serwerami zdalnymi.

Krótka historia narzędzi wiersza poleceń systemu Windows

Po wydaniu systemu Windows NT, CMD.EXE stał się narzędziem wiersza poleceń dla systemu Windows. Chociaż CMD.EXE odziedziczył niektóre elementy po swoim poprzedniku z DOS (COMMAN.COM), nadal opierał się na dość „prymitywnym” języku skryptowym: wykorzystującym pliki poleceń systemu Windows (.CMD i .BAT). Dodanie Windows Scripting Host oraz języków VBScript i JScript znacznie zwiększyło możliwości skryptowe tego narzędzia.

Technologie te stanowią dość zrównoważone połączenie zaawansowanych narzędzi wiersza poleceń i środowisk skryptowych. Prawdziwym problemem nie jest to, ile plików CMD.EXE, .CMD i Windows Scripting Host można za ich pomocą manipulować. Głównym problemem i niedogodnością jest wykonywanie pozornie prostych zadań.

Korzystając z „platformy” narzędzi wiersza poleceń i skryptów, każdy umiarkowanie rozbudowany skrypt wymaga połączenia poleceń wsadowych, hosta skryptów systemu Windows oraz samodzielnych plików wykonywalnych. Każdy skrypt stosuje inne konwencje dotyczące wykonywania i żądań, analizy składniowej oraz zwracania danych.

Słaba obsługa zmiennych w CMD.EXE, niespójne interfejsy i ograniczony dostęp do ustawień systemu Windows, w połączeniu z inną słabością, utrudniają implementację i używanie skryptów wiersza poleceń. Czym jest ta „inna słabość”, możesz zapytać? To tekst. W tych technologiach wszystko jest tekstem. Dane wyjściowe polecenia lub skryptu są tekstem i muszą zostać przeanalizowane i sformatowane, aby mogły służyć jako dane wejściowe dla następnego polecenia. To jest podstawowy punkt wyjścia, który PowerShell czerpie ze wszystkich tradycyjnych powłok.

Wprowadzenie do narzędzi, poleceń i modułów programu PowerShell

Trzy koncepcje przedstawione w tej sekcji to tylko podstawy zrozumienia kluczowych pojęć, które stanowią fundament programu PowerShell. W miarę jak będziesz poznawać polecenia programu PowerShell, będziesz musiał poświęcić więcej czasu na naukę i opanowywanie bardziej zaawansowanych koncepcji.

Narzędzia programu PowerShell

Program PowerShell jest instalowany domyślnie w systemach Windows 10, Windows 7, Windows Server 2008 R2 i nowszych wersjach systemu Windows. Nowsze wersje programu PowerShell dodają nowe funkcje i polecenia cmdlet (termin Microsoftu określający polecenia programu PowerShell – wymawiane „command-lets”) i są instalowane wraz z odpowiednią wersją pakietu Windows Management Framework (WMF).

Obecnie najnowszą zalecaną wersją jest WMF 5.1. W niektórych przypadkach nowe funkcje zależą nie tylko od wersji WMF, ale także od systemu operacyjnego. Na przykład systemy Windows 8 i Windows Server 2012 obsługują polecenie cmdlet Test-NetConnection, które umożliwia testowanie łączności z określonym portem TCP/IP . To polecenie cmdlet nie jest jednak dostępne w systemie Windows 7, nawet w najnowszej wersji WMF.

W większości systemów Windows użytkownicy mają do dyspozycji dwa środowiska programu PowerShell: konsolę PowerShell i zintegrowane środowisko skryptowe PowerShell ISE (Integrated Scripting Environment). Konsola programu PowerShell wygląda jak tradycyjny wiersz poleceń, ale oferuje pełną funkcjonalność programu PowerShell. Nazwy zmiennych, pętle, autouzupełnianie poleceń i potoki są dostępne z poziomu konsoli programu PowerShell.

W przypadku bardziej zaawansowanych zastosowań (takich jak tworzenie skryptów), PowerShell ISE oferuje funkcje autouzupełniania poleceń, podświetlania kodu oraz uzupełniania kodu Intellisense firmy Microsoft, ułatwiające tworzenie i testowanie kodu PowerShell. PowerShell ISE umożliwia również jednoczesną pracę z wieloma skryptami PowerShell za pomocą nawigacji w zakładkach.

polecenia cmdlet w programie PowerShell

Podstawą poleceń programu PowerShell jest polecenie cmdlet. Firma Microsoft przyjęła kilka strategii projektowych podczas tworzenia poleceń cmdlet w programie PowerShell.

Po pierwsze, możliwość łatwego wnioskowania nazw poleceń cmdlet, a przynajmniej uczynienia ich łatwiejszymi do odnalezienia. Polecenia programu PowerShell, czyli polecenia cmdlet, są również zaprojektowane tak, aby były łatwiejsze w użyciu, dzięki ujednoliconej składni, co ułatwia tworzenie skryptów z poziomu interfejsu wiersza poleceń.

Polecenia cmdlet używają formatu czasownik-rzeczownik, jak w przypadku poleceń Get-Service, Stop-Service lub Import-Csv. Część czasownikowa w nazwie polecenia cmdlet wskazuje czynność wykonywaną na rzeczowniku. Zazwyczaj polecenia cmdlet służące do pobierania informacji zawierają w nazwie czasownik Get , na przykład Get-Process lub Get-Content . Polecenia służące do modyfikacji czegoś zazwyczaj zaczynają się od czasownika Set , a polecenia służące do dodawania nowej encji zazwyczaj zaczynają się od Add lub New .

Po drugie, parametry powszechnie używane w programie PowerShell również otrzymują standardowe nazwy. Na przykład parametr -ComputerName umożliwia wykonanie polecenia cmdlet na jednym lub kilku komputerach zdalnych. Parametr -Credential służy do podania obiektu uwierzytelniania zawierającego dane uwierzytelniające użytkownika, umożliwiającego uruchomienie polecenia jako określony użytkownik.

Moduły w programie PowerShell

Aliasy można stosować zarówno dla poleceń cmdlet, jak i parametrów, aby oszczędzać naciśnięcia klawiszy i skrócić całkowity czas trwania polecenia (przydatne przy łączeniu wielu poleceń). Chociaż aliasy te nie zawsze stosują standardowe konwencje nazewnictwa, nadal odzwierciedlają tradycyjne narzędzia wiersza poleceń.

W programie PowerShell aliasy takie jak DIR, CD, DEL i CLS odpowiadają odpowiednio poleceniom cmdlet Get-ChildItem, Set-Location, Remove-Item i Clear-Host. Aliasy parametrów mogą działać na dwa sposoby: mogą korzystać z predefiniowanego aliasu dostarczonego przez polecenie cmdlet lub mogą być aliasowane poprzez wprowadzenie wystarczającej liczby znaków, aby utworzyć unikatowe dopasowanie między obsługiwanymi parametrami polecenia cmdlet.

Zarządzanie plikami i folderami

Większość administratorów systemów musi manipulować plikami i folderami w trakcie swojej pracy, niezależnie od tego, czy chodzi o przenoszenie folderu do innej lokalizacji na serwerze, archiwizację plików dziennika, czy wyszukiwanie dużych plików. W przypadkach, gdy te same operacje są powtarzane na wielu plikach, automatyzacja ich za pomocą programu PowerShell będzie skutecznym rozwiązaniem oszczędzającym czas.

Aby znaleźć pliki i foldery, jednym z pierwszych narzędzi wiersza poleceń, z którymi administrator zapoznawał się w dawnych czasach komputerów, było polecenie dir. Dir wyświetli listę plików i folderów znajdujących się w określonym katalogu.

PowerShell ma podobne polecenie w formie polecenia cmdlet Get-ChildItem . Get-ChildItem pozwala szybko utworzyć listę plików w katalogu w taki sposób, aby można było nimi manipulować za pomocą polecenia potokowego lub przypisać dane wyjściowe do zmiennej.

Polecenia Get-ChildItem można użyć po prostu podając ścieżkę, albo poprzez potok, używając parametru -Path , albo bezpośrednio po nazwie polecenia cmdlet. Aby zmodyfikować odpowiedź zwróconą przez polecenie Get-ChildItem, należy uwzględnić niektóre parametry udostępniane przez polecenie cmdlet.

Parametr -Filter to jeden ze sposobów wyszukiwania plików. Domyślnie Get-ChildItem zwraca tylko bezpośrednie elementy podrzędne katalogu docelowego. Tę funkcjonalność można rozszerzyć za pomocą parametru -Recurse , który rekurencyjnie przeszukuje katalogi zawarte w bieżącym katalogu.

W programie PowerShell 4.0 polecenie Get-ChildItem dodało możliwość ograniczenia wyników do plików lub katalogów za pomocą przełącznika –File lub –Directory . Poprzednie wersje programu PowerShell musiały przekazywać wyniki do Where-Object, filtrując je według właściwości PSIsContainer, aby dokonać tego ustalenia. Przykład obu technik użytych do zwrócenia katalogów zawartych w C:Users przedstawiono poniżej:

Get-ChildItem C:Users -Directory Get-ChildItem C:Users | Where-Object {$_.PSIsContainer –eq $true}

Aby wykryć pliki ukryte lub systemowe, należy użyć  parametru -Force . W programie PowerShell 4.0 i nowszych wersjach można również użyć parametru Get-ChildItem, aby zwrócić tylko pliki ukryte, tylko do odczytu lub systemowe, odpowiednio za pomocą parametrów -Hidden, -ReadOnly i -System . Podobną funkcjonalność można było uzyskać w poprzednich wersjach, filtrując właściwość Mode za pomocą parametru Where-Object:

Get-ChildItem C:Users | Where-Object {$_.Mode -like '*R*'}

Sprawdź, czy plik istnieje

Zazwyczaj podczas pracy z plikami wystarczy wiedzieć, czy plik istnieje lub czy ścieżka do katalogu jest prawidłowa. PowerShell udostępnia polecenie cmdlet w postaci Test-Path, które zwraca wartość true lub false.

Narzędzie Test-Path jest używane jako środek ostrożności przed próbą skopiowania lub usunięcia konkretnego pliku.

Kopiuj, przenoś i usuwaj pliki

Kopiuj-element: Kopiuje jeden lub więcej plików lub katalogów z lokalizacji określonej parametrem -Path do lokalizacji określonej opcją -Destination.

Przenieś element: Przenieś plik lub folder.

Podczas kopiowania lub przenoszenia struktury katalogów należy użyć opcji -Recurse , aby polecenie cmdlet wykonało akcję na katalogu i jego zawartości. W niektórych przypadkach wymagane jest również użycie opcji -Force , na przykład gdy plik tylko do odczytu jest nadpisywany przez operację kopiowania.

Remove-Item: Usuń plik, folder.

Przełącznik -Force należy używać w przypadku pliku przeznaczonego tylko do odczytu, natomiast -Recurse należy używać w przypadku usuwania katalogu i jego zawartości.

Korzystanie z poleceń programu PowerShell -WhatIf i -Confirm

Przed wykonaniem poważnego, masowego usunięcia danych, użyj opcji -WhatIf . Opcja -WhatIf pozwala sprawdzić, co stałoby się po uruchomieniu skryptu lub polecenia i czy miałoby to potencjalnie negatywny wpływ na usunięcie ważnych danych biznesowych. Warto również zauważyć, że opcja -WhatIf nie ogranicza się do operacji na plikach – jest szeroko stosowana w programie PowerShell.

W przypadku skryptów, które zamierzasz uruchomić ręcznie lub, co gorsza, mają polecenia zależne uruchamiane ręcznie, rozważ użycie opcji -Confirm . Pozwala to na wymaganie interakcji użytkownika przed faktycznym wykonaniem operacji.

Skrypty PowerShell = pliki wsadowe na sterydach

Sam program PowerShell jest napisany w języku .NET i w dużej mierze bazuje na platformie .NET Framework. W związku z tym PowerShell został zaprojektowany jako obiektowo zorientowana powłoka i język skryptowy. Wszystko w programie PowerShell jest traktowane jako obiekt z pełnymi możliwościami platformy .NET Framework. Polecenie udostępnia kolekcję obiektów, których można używać za pomocą właściwości i metod danego typu obiektu. Gdy chcesz przekazać dane wyjściowe jednego polecenia do drugiego, program PowerShell faktycznie przekazuje obiekt, a nie tylko tekstowe dane wyjściowe pierwszego polecenia. Dzięki temu kolejne polecenie uzyskuje pełny dostęp do wszystkich właściwości i metod obiektu w potoku.

Traktowanie wszystkiego jako obiektu i możliwość akceptowania obiektów między poleceniami to duża zmiana w teorii narzędzi wiersza poleceń. Mimo to, PowerShell nadal działa jak tradycyjna powłoka. Polecenia, skrypty i pliki wykonywalne można wpisywać i uruchamiać z wiersza poleceń, a wyniki są wyświetlane jako tekst. Pliki Windows .CMD i .BAT, skrypty VBScript, skrypty JScript oraz pliki wykonywalne uruchamiane w pliku CMD.EXE nadal działają w PowerShell. Jednak ponieważ nie są one zorientowane obiektowo, nie mają pełnego dostępu do obiektów tworzonych i używanych w PowerShell. Te starsze skrypty i pliki wykonywalne nadal będą traktować wszystko jako tekst, ale można łączyć PowerShell z wieloma innymi technologiami. Jest to szczególnie ważne, jeśli chcesz zacząć używać PowerShell z kolekcją istniejących skryptów, których nie można przekonwertować wszystkich naraz.

Wyjaśnienie parametrów programu PowerShell

Polecenia cmdlet mogą akceptować parametry, aby zmienić ich działanie. Podczas uruchamiania polecenia cmdlet lub funkcji można podać wartości parametrów, aby określić, co, kiedy, gdzie i jak ma zostać uruchomione każde polecenie programu PowerShell.

Na przykład polecenie Get-Process pobierze i wyświetli listę wszystkich procesów uruchomionych w systemie operacyjnym:

PowerShell i wszystko, co musisz wiedzieć o tym narzędziu
Get-Process wyświetla listę wszystkich uruchomionych procesów.

Ale co, jeśli chcesz pobrać tylko konkretny proces? Możesz to zrobić za pomocą parametrów. Na przykład, aby pobrać wszystkie procesy Slacka, możesz użyć parametru Name w poleceniu cmdlet Get-Process:

Get-Process -Name Slack

Następnie zobaczysz tylko procesy o nazwie „slack”:

PowerShell i wszystko, co musisz wiedzieć o tym narzędziu
Korzystanie z Get-Process z parametrami

Wskazówka : Niektóre parametry są „pozycyjne”, co oznacza, że ​​ich nazwy są opcjonalne. W tym przypadku polecenia Get-Process -Name Slack i Get-Process Slack wykonują to samo zadanie.

Każde polecenie cmdlet akceptuje inne typy parametrów. Użyj polecenia Get-Help, aby sprawdzić akceptowane parametry polecenia cmdlet w sekcji SKŁADNIA.

Get-Help Get-Process

Zobaczysz listę wszystkich możliwych sposobów uruchomienia danego polecenia cmdlet:

PowerShell i wszystko, co musisz wiedzieć o tym narzędziu
parametry składni polecenia cmdlet

W tym przypadku polecenie cmdlet Get-Process akceptuje parametry takie jak Nazwa, Identyfikator, NazwaKomputera, Moduł, Informacje oWersjiPliku i inne typowe parametry. Symbole tutaj oznaczają:

Symbol

Nazwa

Oznaczający

 

Bęben

Parametr nie akceptuje danych wejściowych

-

Łącznik

Podaj nazwę parametru

<>

nawiasy klamrowe

Miejsce zastępcze dla tekstu

[]

Zdanie wtrącone

Parametr może przyjąć jedną lub więcej wartości.

{}

nawiasy klamrowe

Parametr akceptuje zestaw wartości.

Parametry akceptują zestaw wartości wskazujących typ wymaganych danych, takich jak ciąg znaków, liczba całkowita, wartość logiczna lub data i godzina. Na przykład, poniższe polecenie:

Get-Process [[-Name] ]

... oznacza, że ​​parametr Nazwa akceptuje jedną lub więcej wartości ciągu, podczas gdy to polecenie:

Get-Process -Id 

... oznacza, że ​​parametr Id akceptuje jedną lub więcej wartości całkowitych.

W poprzednim przykładzie Get-Process użyto parametru Name do zawężenia wyników. Jeśli jednak chcesz zawęzić wyniki do bardziej szczegółowego procesu, możesz użyć parametru ID , który wymaga liczby całkowitej, zgodnie z jego składnią.

Get-Process -Id 3016

Następnie na liście będzie widoczny tylko jeden proces:

PowerShell i wszystko, co musisz wiedzieć o tym narzędziu
Korzystanie z parametru ID w poleceniach cmdlet

Utwórz potok

PowerShell przetwarza wszystkie dane jako obiekty. Aby zbudować skrypt, obiekty te są uruchamiane przez serię poleceń cmdlet lub funkcji połączonych symbolem potoku (|). Wybór odpowiednich poleceń cmdlet i połączenie ich w logiczną sekwencję za pomocą potoku jest kluczowe dla wydajnego skryptu.

Załóżmy, że tworzysz skrypt sortujący i wyświetlający 5 plików zajmujących najwięcej miejsca w katalogu. Istnieją bardziej zaawansowane sposoby pisania skryptu sortującego pliki, ale ten prosty jest łatwy do zrozumienia:

PowerShell i wszystko, co musisz wiedzieć o tym narzędziu
Skrypt Sort-LargeFiles PS1

Aby wykonać to w programie PowerShell, należy użyć potoku wyglądającego następująco:

Get-ChildItem -Path "C:\Directory" -File | Sort-Object Length -Descending `
 | Select-Object -First 5 | Format-Table Name, Length -AutoSize

Zapisz potok jako skrypt PS1

Teraz, gdy mamy już działający potok, możemy go zapisać jako plik skryptu PS1. Dzięki temu nie będziemy musieli go importować przy każdym użyciu.

Najprostszym sposobem utworzenia pliku PS1 jest wklejenie skryptu do Notatnika i zapisanie pliku z rozszerzeniem .ps1.

PowerShell i wszystko, co musisz wiedzieć o tym narzędziu
Utwórz skrypt za pomocą Notatnika

Po utworzeniu pliku PS1 możesz go użyć w programie PowerShell, uruchamiając polecenie ./ScriptName.ps1 :

PowerShell i wszystko, co musisz wiedzieć o tym narzędziu
Korzystanie ze skryptu PS1

Wskazówka : Jeśli pojawi się błąd uprawnień, najszybszym rozwiązaniem będzie uruchomienie programu PowerShell z uprawnieniami administratora podczas uruchamiania skryptu.

Gratulacje! Możesz teraz tworzyć skrypty PowerShell PS1.

Przykład skryptu programu PowerShell

Czytanie o nowych technologiach i zrozumienie ich niesamowitości to jedno, ale faktyczne ich wykorzystanie to zupełnie inna sprawa! W dalszej części artykułu opracujemy skrypt programu PowerShell, który zademonstruje ich możliwości i sposób użycia.

Polecenie DIR to jedno z najczęściej używanych poleceń w programie CMD.EXE . Wyświetla ono wszystkie pliki i podkatalogi znajdujące się w katalogu nadrzędnym (jak pokazano na rysunku 1). Oprócz nazwy każdego obiektu, wyświetlane są informacje o dacie i godzinie ostatniej aktualizacji oraz rozmiarze każdego pliku. Polecenie DIR wyświetla również łączny rozmiar wszystkich plików w katalogu, a także całkowitą liczbę plików i podkatalogów.

PowerShell i wszystko, co musisz wiedzieć o tym narzędziu
Rysunek 1

Uruchomienie polecenia DIR w programie PowerShell również generuje listę katalogów, jak na rysunku 2, ale w nieco inny sposób. W programie PowerShell nie ma polecenia DIR, ale polecenie Get-ChildItem, które wykonuje tę samą funkcję. W programie PowerShell polecenie DIR jest aliasem polecenia Get-ChildItem. Nie zamierzam w tym artykule omawiać aliasów. Polecenie DIR w programie PowerShell można traktować jako skrót od polecenia Get-ChildItem.

Polecenie DIR w programie PowerShell udostępnia wiele z tych samych informacji, co wspomniane powyżej: listę plików i folderów, datę i godzinę ich ostatniej modyfikacji oraz rozmiar każdego pliku. Brakuje jednak informacji podsumowujących, które udostępnia polecenie DIR w programie CMD.EXE: całkowity rozmiar wszystkich plików w folderze, łączną liczbę plików oraz łączną liczbę podfolderów.

PowerShell i wszystko, co musisz wiedzieć o tym narzędziu
Rysunek 2

W przykładowym scenariuszu konieczne będzie utworzenie skryptu programu PowerShell, który symuluje polecenie CMD.EXE DIR. Poniżej wyjaśnię najważniejsze części skryptu.

DIR.PS1: Nagłówek

Skrypt programu PowerShell składa się z poleceń programu PowerShell w pliku tekstowym z rozszerzeniem .PS1. Zamiast DIR należy użyć pliku tekstowego o nazwie DIR.PS1.

Aby uruchomić skrypt, wpisz następujące polecenie w oknie programu PowerShell:

.DIR.PS1 X:Folder

Gdzie X jest literą partycji dysku (np. C, D, E), a Folder jest nazwą folderu.

Aby uzyskać informacje o partycji dysku, należy skorzystać z Instrumentacji zarządzania systemem Windows (WMI). Szczegóły WMI wykraczają poza zakres tego artykułu, więc nie będziemy się nimi tutaj zajmować. Poniższy kod programu PowerShell jest jednak wystarczająco łatwy do zrozumienia bez użycia WMI. Można utworzyć zmienną „$filter” do użycia z poleceniem Get-WmiObject. Ten filtr informuje polecenie Get-WmiObject, że potrzebne są informacje tylko o konkretnym dysku. Wyniki polecenia Get-WmiObject są przechowywane w zmiennej o nazwie $volInfo. Należy pamiętać, że w programie PowerShell wszystko jest obiektem; $volInfo jest teraz obiektem zwracanym przez polecenie Get-WmiObject.

$filter = "DeviceID = '" + $drive + ":'"
$volInfo = Get-WmiObject -Class Win32_LogicalDisk -Filter $filter

Teraz masz dostęp do wszystkich obiektów i metod powiązanych z obiektem. Numer seryjny woluminu jest dostępny poprzez właściwość VolumeSerialNumber. Zwrócony numer to ciąg 8 znaków. Często jednak zachodzi potrzeba sformatowania go jako czterech liczb rozdzielonych łącznikiem. Można to zrobić podobnie, jak w poniższym wierszu. Myślnik na końcu pierwszego wiersza to znak kontynuacji wiersza w programie PowerShell. Informuje on program PowerShell, że wiersz nie jest łamany i zawiera następny wiersz. Podziały wierszy nie są wymagane podczas pisania kodu, ale aby zmniejszyć szerokość i zwiększyć czytelność kodu, należy je stosować.

$serial = $volInfo.VolumeSerialNumber.SubString(0, 4) + "-" + `
$volInfo.VolumeSerialNumber.SubString(4, 4)

Mając obiekt $volInfo, możesz zapisać na ekranie informacje z nagłówka DIR. Jeśli dysk nie ma nazwy, tekst wyświetlany na ekranie będzie nieco inny niż w przypadku nazwy. Prosta instrukcja If-Else sprawdza, czy właściwość VolumeName jest pustym ciągiem znaków. Instrukcja Write-Host zapisuje każdy wiersz tekstu na ekranie.

If ($volInfo.VolumeName -eq "") { Write-Host (" Volume in drive " + $drive + " has no label") } Else { Write-Host (" Volume in drive " + $drive + " is " + $volInfo.VolumeName) } Write-Host (" Volume Serial Number is " + $serial) Write-Host ("`n Directory of " + $args[0] + "`n")

Znak „ `n ” na początku i na końcu polecenia Write-Host służy do wstawiania nowego wiersza przed i po tekście. Polecenie Write-Host dodaje nowy wiersz na końcu każdego wiersza. Zatem efektem użycia „ `n ” jest utworzenie pustego wiersza przed i po tekście.

Czy zauważyłeś „-eq” w poleceniu If? Jest to operator porównania równości. Poniższa tabela przedstawia wszystkie operatory porównania:

-eq, -ieq Porównaj według
-ne, -ine Porównanie nie jest równe
-gt, -igt Porównaj więcej niż
-ge, -ige Porównaj większe lub równe
-lt, -ilt Porównaj mniejsze niż
-le, -ile Porównaj mniejsze lub równe

Znak -i przed operatorami porównania oznacza, że ​​operator nie uwzględnia wielkości liter.

PowerShell i wszystko, co musisz wiedzieć o tym narzędziu
Rysunek 3: Dane wyjściowe skryptu, który aktualnie posiadasz

DIR.PS1: Lista plików/folderów

Teraz możesz wyświetlić zawartość i właściwości tego folderu. Najpierw wywołaj polecenie Get-ChildItem programu PowerShell, aby pobrać kolekcję plików i przekazać ją skryptowi jako parametr. Polecenie Get-ChildItem pobierze kolekcję obiektów plików i folderów, nie tylko ich nazwy, ale również przekaże te obiekty bezpośrednio do polecenia Sort-Object w celu ich posortowania. Domyślnie polecenie Sort-Object sortuje obiekty na podstawie właściwości Name (Nazwa). Nie trzeba więc określać żadnych innych parametrów. Posortowana kolekcja obiektów zostanie zapisana w zmiennej o nazwie $items.

$items = Get-ChildItem $args[0] | Sort-Object

Po utworzeniu kolekcji obiektów plików i folderów należy przejść przez nie i wyświetlić odpowiednie właściwości. Poleceniem do tego jest ForEach. Dla każdego pliku lub folderu wyświetlane będą następujące właściwości: data i godzina ostatniej modyfikacji, nazwa, długość lub rozmiar pliku. Dziwnie wyglądające ciągi znaków w nawiasach to kody formatowania ciągów znaków platformy .NET. Służą one do wyrównywania pól do lewej/prawej oraz formatowania dat, godzin i liczb. Zrozumienie tych kodów formatowania ciągów znaków nie jest szczególnie istotne, ponieważ nie są one niezbędne dla działania tego skryptu.

Instrukcja If służy do określania, czy obiekt jest katalogiem, czy nie. Jeśli pierwszym znakiem atrybutu Mode jest „d”, obiekt jest katalogiem. Należy to dokładnie sprawdzić, ponieważ kod katalogów często różni się od kodu plików.

Zwróć uwagę na wiersz $totalDirs++ w instrukcji If. Jest to licznik odpowiedzialny za śledzenie liczby katalogów. Podobnie istnieje zmienna $totalFiles, która służy do śledzenia całkowitego rozmiaru wszystkich plików. Wartości te są zawsze obliczane podczas wykonywania polecenia. Są one jednak wyświetlane dopiero po zakończeniu procesu wyświetlania listy plików.

ForEach ($i In $items)
{
$date = "{0, -20:MM/dd/yyyy hh:mm tt}" -f $i.LastWriteTime
$file = $i.Name
If ($i.Mode.SubString(0, 1) -eq "d")
{
$totalDirs++
$list = $date + " {0, -15}" -f "
" + " " + $file
}
Else
{
$totalFiles++
$size = "{0, 18:N0}" -f $i.Length
$list = $date + $size + " " + $file
}
$totalSize += $i.Length
Write-Host $list
}

PowerShell i wszystko, co musisz wiedzieć o tym narzędziu
Rysunek 4: Wyświetla dane wyjściowe zaktualizowanego skryptu.

DIR.PS1: Stopka

Pozostaje tylko wypisać na ekranie całkowitą liczbę plików, katalogów, całkowity rozmiar wszystkich plików oraz ilość wolnego miejsca na tej partycji dysku. W tym celu należy użyć zmiennych licznika ($totalFiles, $totalDirs, $totalSize) utworzonych w poprzedniej sekcji. Ilość wolnego miejsca można sprawdzić w zmiennej $volInfo utworzonej na początku skryptu.

Write-Host ("{0, 16:N0}" -f $totalFiles + " File(s)" + `
"{0, 15:N0}" -f $totalSize + " bytes")
Write-Host ("{0, 16:N0}" -f $totalDirs + " Dir(s)" + `
"{0, 16:N0}" -f $volInfo.FreeSpace + " bytes free`n")

PowerShell i wszystko, co musisz wiedzieć o tym narzędziu
Rysunek 5: Wyświetla kompletne dane wyjściowe skryptu.

Prognozy i ulepszenia mogą być

Mimo że skrypt, który utworzysz, generuje niemal identyczne dane wyjściowe, jak polecenie CMD.EXE DIR, istnieje kilka zastrzeżeń, o których powinieneś wiedzieć, i kilka ulepszeń, które można wprowadzić.

  • Ten skrypt nie wykonuje żadnego sprawdzania błędów.
  • Jeśli do skryptu nie zostanie przekazana prawidłowa ścieżka, skrypt zakończy działanie niepowodzeniem i wyświetli komunikat o błędzie programu PowerShell.
  • Łączna liczba katalogów podana w skrypcie jest o 2 mniejsza od liczby uzyskanej poleceniem CMD.EXE DIR, ponieważ polecenie Get-ChildItem nie zlicza dwóch katalogów „.” i „..” jak w przypadku CMD.EXE.
  • Twój skrypt sortuje tylko według nazwy pliku i nazwy folderu i nie oferuje żadnych innych możliwości sortowania według atrybutów.
  • Twój skrypt nie jest w stanie wyświetlić zawartości folderu i wszystkich podfolderów.

Jak PowerShell pomaga zautomatyzować dowolne czynności na komputerze

Napisz proste skrypty programu PowerShell

Za pomocą programu PowerShell można zautomatyzować niemal wszystko, na przykład zbiorczą zmianę nazw plików w celu zachowania spójności lub automatyczne uruchamianie aplikacji. Napiszmy kilka prostych skryptów programu Windows PowerShell, aby zobaczyć, jak to działa.

Uwaga : Jeżeli podczas wykonywania skryptu wystąpi błąd dotyczący zasad wykonywania, konieczne może być tymczasowe zezwolenie na wykonanie skryptu poprzez uruchomienie polecenia „Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass”.

Masowa zmiana nazw plików w folderze

Za pomocą programu PowerShell możesz kopiować, przenosić i usuwać pliki na swoim komputerze. Możesz również zbiorczo zmieniać nazwy plików określonego typu. Na przykład, oto jak możesz zmienić nazwy wielu plików tekstowych, zastępując prefiks „oldco” prefiksem „newco” w ich nazwach:

Get-ChildItem -Path "C:\CompanyFiles" -Filter "*.txt" | Rename-Item -NewName {$_.Name -replace "oldco","newco"}

W powyższym skrypcie „.txt” to filtr rozszerzenia pliku. Możesz go zmodyfikować i ustawić na .jpg, .docx itd., aby wyszukiwać różne typy plików.

Automatyczne uruchamianie aplikacji

Jeśli codziennie otwierasz ten sam zestaw aplikacji, możesz napisać skrypt programu PowerShell, który uruchomi je jednym kliknięciem:

#Open multiple apps with a single click
Start-Process "notepad.exe"
Start-Process "calc.exe"
Start-Process "Chrome.exe"
Start-Process "slack.exe"

Wklej skrypt do pliku Notatnika i zapisz go jako LaunchFavoriteApps.ps1. Następnie wystarczy dwukrotnie kliknąć plik, aby uruchomić wszystkie aplikacje wymienione w skrypcie.

Skopiuj ważne pliki do lokalizacji zapasowej

Możesz okresowo tworzyć kopie zapasowe ważnych plików w lokalizacji kopii zapasowej za pomocą poniższego skryptu. Pamiętaj o zmianie ścieżek źródłowej i docelowej w razie potrzeby:

#Copy MyFiles folder contents to MyFilesBackup in D:\
Copy-Item -Path "C:\Documents\MyFiles" -Destination "D:\MyFilesBackup" -Recurse

Napisz skrypt programu PowerShell, aby automatycznie organizować pliki każdego dnia

Ponieważ każdego dnia pobieranych jest wiele typów plików, folder Pobrane może szybko zapełnić się wszelkiego rodzaju plikami rozrzuconymi po całym folderze. Aby to naprawić, możemy napisać skrypt programu PowerShell, który pod koniec każdego dnia sortuje pobrane pliki do folderów według typu.

Otwórz nowy plik Notatnika i wklej poniższy skrypt. Pamiętaj, aby zmienić ścieżkę folderu źródłowego w skrypcie na ścieżkę folderu Pobrane:

# Change the source folder path below
$sourcePath = "E:\Downloads"
# Add file mapping folder names; the Others folder includes all the files that do not match file types in the other categories
$fileTypes = @{
"Documents" = @("*.docx", "*.pdf", "*.txt")
"Images" = @("*.jpg", "*.png", "*.gif")
"Media" = @("*.mp4", "*.mp3", "*.mov")
"Zip" = @("*.zip", "*.rar")
"ISO" = @("*.iso")
"Others" = @("*")
}
# Iterate through each folder type and prepare a destination folder for organizing files
foreach ($folder in $fileTypes.Keys) {
# Create the destination folder path
$destPath = Join-Path -Path $sourcePath -ChildPath $folder
# Check if the destination folder exists, and create it if it doesn't
if (!(Test-Path -Path $destPath)) {
New-Item -ItemType Directory -Path $destPath | Out-Null
}
# Move matching files from the source folder to the destination folder based on file type patterns
foreach ($pattern in $fileTypes[$folder]) {
Get-ChildItem -Path $sourcePath -Filter $pattern -File -ErrorAction SilentlyContinue | ForEach-Object {
try {
Move-Item -Path $_.FullName -Destination $destPath -Force -ErrorAction Stop
Write-Output "Moved: $($_.FullName) to $destPath"
} catch {
Write-Warning "Failed to move file: $($_.FullName). Error: $_"
}
}
}
}
Write-Output "Files organized successfully!"

Aby zapisać plik, kliknij Plik > Zapisz jako i wpisz OrganizeDownloadsFolder.ps1 jako nazwę pliku. Następnie kliknij Zapisz jako typ i wybierz Wszystkie pliki . Kliknij dwukrotnie plik OrganizeDownloadsFolder.ps1 , aby uruchomić skrypt.

Planowanie i wykonywanie zadań

Oczywiście, napisanie skryptu to tylko jeden z elementów procesu automatyzacji. Drugim elementem jest upewnienie się, że skrypt może zostać automatycznie uruchomiony w celu wykonania zadania. W tym celu możemy utworzyć zaplanowane zadania, które będą uruchamiać skrypt codziennie lub w razie potrzeby.

Otwórz program PowerShell, a następnie skopiuj i wklej poniższy skrypt i naciśnij Enter . Pamiętaj, aby zastąpić „J:\OrganizeDownloadsFolder.ps1” pełną ścieżką do skryptu OrganizeDownloadsFolder.ps1 .

$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File 'J:\OrganizeDownloadsFolder.ps1'"
$trigger = New-ScheduledTaskTrigger -Daily -At "5:00 PM"
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "OrganizeDownloadsFolderDaily"

Po zakończeniu naciśnij Enter . Skrypt utworzy zaplanowane zadanie w Harmonogramie zadań, aby uruchamiać skrypt organizacji plików każdego dnia o godzinie 17:00. Jeśli wolisz inną godzinę, możesz ją zmodyfikować w powyższym skrypcie.

Ponadto za pomocą programu PowerShell można zautomatyzować inne codzienne zadania, np. skrypt monitorujący miejsce, który powiadamia o braku wolnego miejsca na dysku głównym, zabezpieczanie hasłem partii dokumentów PDF, a nawet stosowanie dynamicznych tapet z folderu ze zdjęciami.

Chociaż PowerShell to potężne narzędzie i język skryptowy, jego opanowanie i używanie zajmuje trochę czasu, zwłaszcza jeśli nie znasz środowiska .NET Framework. Mam nadzieję, że ten artykuł i przykładowy skrypt będą przydatne dla każdego, kto chce zrozumieć PowerShella. Przykładowy skrypt zawarty w artykule jest jednak dość prosty. Wierzę, że można go rozbudować i rozwinąć w sposób bardziej kompleksowy, aby obsługiwał bardziej złożone aplikacje.

Tags: #System
Sign up and earn $1000 a day ⋙

Leave a Comment

Naprawa klawiszy funkcyjnych, które nie działają w systemie Windows 10

Naprawa klawiszy funkcyjnych, które nie działają w systemie Windows 10

Klawisze funkcyjne Fn umożliwiają szybsze i łatwiejsze sterowanie niektórymi funkcjami sprzętowymi.

Jak usunąć ostrzeżenie w postaci żółtego trójkąta na dysku C systemu Windows

Jak usunąć ostrzeżenie w postaci żółtego trójkąta na dysku C systemu Windows

Ten wskaźnik zazwyczaj oznacza, że ​​szyfrowanie BitLocker zostało wyłączone, konieczne jest ponowne uruchomienie w celu przeprowadzenia aktualizacji lub że oczekuje się na uaktualnienie oprogramowania sprzętowego.

6 sposobów na otwarcie właściwości komputera/systemu w systemie Windows 10

6 sposobów na otwarcie właściwości komputera/systemu w systemie Windows 10

Aby otworzyć Właściwości komputera (lub Właściwości systemu) w systemie Windows 10, możesz użyć jednej z 6 poniższych metod.

Jak zablokować sieć Wi-Fi dla gości, aby nikt nie mógł jej szpiegować

Jak zablokować sieć Wi-Fi dla gości, aby nikt nie mógł jej szpiegować

Jeśli prawidłowo zablokujesz sieć Wi-Fi dla gości, będziesz mógł udostępniać połączenie internetowe dowolnym gościom, nie udostępniając im żadnych innych informacji.

3 sposoby na wyłączenie zapory systemu Windows 11

3 sposoby na wyłączenie zapory systemu Windows 11

W tym artykule WebTech360 pokaże Ci, jak wyłączyć zaporę sieciową w systemie Windows 11.

Niewielkie zmiany pomagają znacznie przyspieszyć spowolnione komputery z systemem Windows

Niewielkie zmiany pomagają znacznie przyspieszyć spowolnione komputery z systemem Windows

Kiedy kupiłeś swój komputer, uruchamiał się w kilka sekund i działał jak marzenie. Ale z biegiem czasu wiele się zmieniło.

Jak naprawić pliki tymczasowe zajmujące dużo miejsca na komputerze

Jak naprawić pliki tymczasowe zajmujące dużo miejsca na komputerze

W tym dokumencie opisano usuwanie plików .tmp, a nie sposób czyszczenia historii przeglądania Internetu lub pamięci podręcznej przeglądarki.

Jak wyłączyć aplikacje działające w tle w systemie Windows 11 i zmniejszyć zużycie pamięci RAM w systemie Windows 11

Jak wyłączyć aplikacje działające w tle w systemie Windows 11 i zmniejszyć zużycie pamięci RAM w systemie Windows 11

Możesz wyłączyć aplikacje działające w tle systemu Windows 11, aby zoptymalizować wydajność, oszczędzać baterię i zmniejszyć zużycie pamięci RAM.

Jak zainstalować i używać VPN w systemie Windows 11

Jak zainstalować i używać VPN w systemie Windows 11

Zainstalowanie sieci VPN pomoże zwiększyć bezpieczeństwo komputera z systemem Windows 11.

8 skrótów funkcji ułatwień dostępu w systemie Windows, które odblokowują nowe opcje dla każdego

8 skrótów funkcji ułatwień dostępu w systemie Windows, które odblokowują nowe opcje dla każdego

System Windows oferuje szereg przydatnych opcji ułatwień dostępu, idealnych do personalizacji interfejsu komputera, zwiększenia komfortu pracy, a nawet obsługi urządzeń całkowicie bez użycia rąk.

12 sposobów na szybki dostęp do Ustawień w systemie Windows 10

12 sposobów na szybki dostęp do Ustawień w systemie Windows 10

W systemie Windows 10 firma Microsoft zintegrowała nową aplikację o nazwie Ustawienia. Ta aplikacja Ustawienia to aplikacja Metro stworzona przez firmę Microsoft w celu zastąpienia klasycznej aplikacji Panel sterowania.

Usuwanie dużych folderów w systemie Windows za pomocą polecenia CMD

Usuwanie dużych folderów w systemie Windows za pomocą polecenia CMD

Duże foldery w systemie to jeden z powodów, dla których pochłaniają dużo miejsca. Wiele utworzonych folderów po usunięciu po pewnym czasie powraca. Być może są to niepotrzebne foldery, które próbujesz usunąć.

Jak zmienić serwer DNS w systemie Windows 11

Jak zmienić serwer DNS w systemie Windows 11

Jeśli domyślny serwer DNS dostarczony przez Twojego dostawcę usług internetowych wydaje się wolny, niebezpieczny lub zawodny, nie musisz go używać. Oto jak możesz zmienić ustawienia serwera DNS na komputerze z systemem Windows 11.

Włącz tryb GodMode w systemach Windows 10, 8 i 7

Włącz tryb GodMode w systemach Windows 10, 8 i 7

GodeMode to skrót od głównego panelu sterowania systemu Windows. GodMode (lub God Mode) to panel sterowania, który umożliwia konfigurację i dostęp do wszystkich funkcji systemu operacyjnego Windows.

Popularne adresy logowania do modemów TP Link

Popularne adresy logowania do modemów TP Link

Aby zmienić hasło lub nazwę Wi-Fi modemu TP Link, użytkownicy muszą zalogować się pod adresem tej linii modemowej. Jaki jest adres logowania do modemu TP Link?

Naprawa klawiszy funkcyjnych, które nie działają w systemie Windows 10

Naprawa klawiszy funkcyjnych, które nie działają w systemie Windows 10

Klawisze funkcyjne Fn umożliwiają szybsze i łatwiejsze sterowanie niektórymi funkcjami sprzętowymi.

Jak usunąć ostrzeżenie w postaci żółtego trójkąta na dysku C systemu Windows

Jak usunąć ostrzeżenie w postaci żółtego trójkąta na dysku C systemu Windows

Ten wskaźnik zazwyczaj oznacza, że ​​szyfrowanie BitLocker zostało wyłączone, konieczne jest ponowne uruchomienie w celu przeprowadzenia aktualizacji lub że oczekuje się na uaktualnienie oprogramowania sprzętowego.

6 sposobów na otwarcie właściwości komputera/systemu w systemie Windows 10

6 sposobów na otwarcie właściwości komputera/systemu w systemie Windows 10

Aby otworzyć Właściwości komputera (lub Właściwości systemu) w systemie Windows 10, możesz użyć jednej z 6 poniższych metod.

Jak zablokować sieć Wi-Fi dla gości, aby nikt nie mógł jej szpiegować

Jak zablokować sieć Wi-Fi dla gości, aby nikt nie mógł jej szpiegować

Jeśli prawidłowo zablokujesz sieć Wi-Fi dla gości, będziesz mógł udostępniać połączenie internetowe dowolnym gościom, nie udostępniając im żadnych innych informacji.

3 sposoby na wyłączenie zapory systemu Windows 11

3 sposoby na wyłączenie zapory systemu Windows 11

W tym artykule WebTech360 pokaże Ci, jak wyłączyć zaporę sieciową w systemie Windows 11.

Niewielkie zmiany pomagają znacznie przyspieszyć spowolnione komputery z systemem Windows

Niewielkie zmiany pomagają znacznie przyspieszyć spowolnione komputery z systemem Windows

Kiedy kupiłeś swój komputer, uruchamiał się w kilka sekund i działał jak marzenie. Ale z biegiem czasu wiele się zmieniło.

Jak naprawić pliki tymczasowe zajmujące dużo miejsca na komputerze

Jak naprawić pliki tymczasowe zajmujące dużo miejsca na komputerze

W tym dokumencie opisano usuwanie plików .tmp, a nie sposób czyszczenia historii przeglądania Internetu lub pamięci podręcznej przeglądarki.

Jak wyłączyć aplikacje działające w tle w systemie Windows 11 i zmniejszyć zużycie pamięci RAM w systemie Windows 11

Jak wyłączyć aplikacje działające w tle w systemie Windows 11 i zmniejszyć zużycie pamięci RAM w systemie Windows 11

Możesz wyłączyć aplikacje działające w tle systemu Windows 11, aby zoptymalizować wydajność, oszczędzać baterię i zmniejszyć zużycie pamięci RAM.

Jak zainstalować i używać VPN w systemie Windows 11

Jak zainstalować i używać VPN w systemie Windows 11

Zainstalowanie sieci VPN pomoże zwiększyć bezpieczeństwo komputera z systemem Windows 11.

8 skrótów funkcji ułatwień dostępu w systemie Windows, które odblokowują nowe opcje dla każdego

8 skrótów funkcji ułatwień dostępu w systemie Windows, które odblokowują nowe opcje dla każdego

System Windows oferuje szereg przydatnych opcji ułatwień dostępu, idealnych do personalizacji interfejsu komputera, zwiększenia komfortu pracy, a nawet obsługi urządzeń całkowicie bez użycia rąk.

12 sposobów na szybki dostęp do Ustawień w systemie Windows 10

12 sposobów na szybki dostęp do Ustawień w systemie Windows 10

W systemie Windows 10 firma Microsoft zintegrowała nową aplikację o nazwie Ustawienia. Ta aplikacja Ustawienia to aplikacja Metro stworzona przez firmę Microsoft w celu zastąpienia klasycznej aplikacji Panel sterowania.

Usuwanie dużych folderów w systemie Windows za pomocą polecenia CMD

Usuwanie dużych folderów w systemie Windows za pomocą polecenia CMD

Duże foldery w systemie to jeden z powodów, dla których pochłaniają dużo miejsca. Wiele utworzonych folderów po usunięciu po pewnym czasie powraca. Być może są to niepotrzebne foldery, które próbujesz usunąć.

Jak zmienić serwer DNS w systemie Windows 11

Jak zmienić serwer DNS w systemie Windows 11

Jeśli domyślny serwer DNS dostarczony przez Twojego dostawcę usług internetowych wydaje się wolny, niebezpieczny lub zawodny, nie musisz go używać. Oto jak możesz zmienić ustawienia serwera DNS na komputerze z systemem Windows 11.

Włącz tryb GodMode w systemach Windows 10, 8 i 7

Włącz tryb GodMode w systemach Windows 10, 8 i 7

GodeMode to skrót od głównego panelu sterowania systemu Windows. GodMode (lub God Mode) to panel sterowania, który umożliwia konfigurację i dostęp do wszystkich funkcji systemu operacyjnego Windows.

Popularne adresy logowania do modemów TP Link

Popularne adresy logowania do modemów TP Link

Aby zmienić hasło lub nazwę Wi-Fi modemu TP Link, użytkownicy muszą zalogować się pod adresem tej linii modemowej. Jaki jest adres logowania do modemu TP Link?