Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
PowerShell jest powłoką wiersza polecenia i językiem skryptowym używanym do automatyzacji. Podobnie jak w przypadku innych shelli, takich jak bash w systemie Linux czy Windows Command Shell (cmd.exe), PowerShell pozwala uruchamiać dowolne polecenia dostępne w systemie, a nie tylko polecenia PowerShell.
Typy poleceń
W przypadku dowolnej powłoki w dowolnym systemie operacyjnym istnieją trzy typy poleceń:
słowa kluczowe języka powłoki są częścią języka skryptowego powłoki.
- Przykłady słów kluczowych
bashto:if,then,else,elififi. - Przykłady słów kluczowych
cmd.exeto:dir,copy,move,ifiecho. - Przykłady słów kluczowych programu PowerShell to:
for,foreach,try,catchitrap.
Słowa kluczowe języka powłoki mogą być używane tylko w środowisku uruchomieniowym powłoki. Brak pliku wykonywalnego poza powłoką, który zapewnia funkcjonalność słowa kluczowego.
- Przykłady słów kluczowych
natywne polecenia systemu operacyjnego to pliki wykonywalne zainstalowane w systemie operacyjnym. Pliki wykonywalne można uruchamiać z dowolnej powłoki wiersza polecenia, takiej jak PowerShell. Obejmuje to pliki skryptów, które wymagają prawidłowego działania innych powłok. Na przykład, jeśli uruchomisz skrypt wsadowy systemu Windows (plik
.cmd) w programie PowerShell, program PowerShell uruchomicmd.exei przekaże plik wsadowy do wykonania.Polecenia specyficzne dla środowiska powłoki to polecenia zdefiniowane w plikach zewnętrznych, które mogą być używane tylko w kontekście działania powłoki. Obejmuje to skrypty, funkcje i moduły, które dodają polecenia do środowiska uruchomieniowego powłoki. W programie PowerShell te polecenia dodane przez moduł są nazywane poleceniami cmdlet (wymawiane jako "command-let").
Uruchamianie poleceń natywnych
Dowolne natywne polecenie można uruchomić z poziomu wiersza polecenia programu PowerShell. Zazwyczaj polecenie jest uruchamiane dokładnie tak, jak w bash lub cmd.exe. W poniższym przykładzie pokazano uruchomienie polecenia grep w bash w systemie Ubuntu Linux.
sdwheeler@circumflex:~$ grep sdwheeler /etc/passwd
sdwheeler:x:1000:1000:,,,:/home/sdwheeler:/bin/bash
sdwheeler@circumflex:~$ pwsh
PowerShell 7.2.6
Copyright (c) Microsoft Corporation.
https://aka.ms/powershell
Type 'help' to get help.
Po uruchomieniu programu PowerShell w systemie Ubuntu możesz uruchomić to samo polecenie w wierszu polecenia programu PowerShell:
PS /home/sdwheeler> grep sdwheeler /etc/passwd
sdwheeler:x:1000:1000:,,,:/home/sdwheeler:/bin/bash
Przekazywanie argumentów do poleceń natywnych
Większość powłok zawiera funkcje używania zmiennych, oceniania wyrażeń i obsługi łańcuchów znaków. Ale każda powłoka robi te rzeczy inaczej. W programie PowerShell wszystkie parametry zaczynają się od znaku łącznika (-). W systemie cmd.exe większość parametrów polecenia używa ukośnika (/). Inne narzędzia wiersza polecenia mogą używać spacji, łączników, podwójnej kreski (--).
Każda powłoka ma własny sposób obsługi i oceniania ciągów w wierszu polecenia. Podczas uruchamiania natywnych poleceń w programie PowerShell, które oczekują cytowania ciągów w określony sposób, może być konieczne dostosowanie sposobu przekazywania tych ciągów.
Aby uzyskać więcej informacji, zobacz następujące artykuły:
Program PowerShell 7.2 wprowadził nową funkcję eksperymentalną PSNativeCommandArgumentPassing, która poprawiła natywną obsługę poleceń. Aby uzyskać więcej informacji, zobacz $PSNativeCommandArgumentPassing.
Obsługa danych wyjściowych i błędów
Program PowerShell ma również więcej strumieni wyjściowych niż inne powłoki. Powłoki bash i cmd.exe mają stdout i stderr. Program PowerShell ma sześć strumieni wyjściowych. Aby uzyskać więcej informacji, zobacz about_Redirection i about_Output_Streams.
Ogólnie rzecz biorąc, dane wyjściowe wysyłane do
Gdy natywne polecenie ma kod zakończenia innego niż zero, $? jest ustawiona na $false. Jeśli kod zakończenia ma wartość zero, $? jest ustawiona na wartość $true.
Jednak program PowerShell 7.2 zmienił to zachowanie. Rekordy błędów przekierowane z natywnych poleceń, takich jak w przypadku używania operatorów przekierowania (2>&1), nie są zapisywane w zmiennej $Error programu PowerShell, a zmienna preferencji $ErrorActionPreference nie ma wpływu na przekierowane dane wyjściowe.
Wiele natywnych poleceń zapisuje w stderr jako alternatywny strumień dodatkowych informacji. To zachowanie może spowodować zamieszanie w programie PowerShell podczas przeglądania błędów, a dodatkowe informacje wyjściowe mogą zostać utracone, jeśli $ErrorActionPreference jest ustawiony na stan wyciszenia danych wyjściowych.
Program PowerShell 7.3 dodał eksperymentalną funkcję PSNativeCommandErrorActionPreference, która umożliwia kontrolowanie sposobu obsługi kodów zakończenia innych niż zero z natywnych poleceń. Aby uzyskać więcej informacji, zobacz $PSNativeCommandUseErrorActionPreference.
Uruchamianie poleceń programu PowerShell
Jak wspomniano wcześniej, polecenia programu PowerShell są nazywane poleceniami cmdlet. Polecenia cmdlet są gromadzone w modułach programu PowerShell i mogą być ładowane na żądanie. Polecenia cmdlet można pisać w dowolnym skompilowanym języku .NET lub użyć samego języka skryptów programu PowerShell.
Polecenia programu PowerShell uruchamiające inne polecenia
Program PowerShell operator wywołania (&) umożliwia uruchamianie poleceń przechowywanych w zmiennych i reprezentowanych przez ciągi lub bloki skryptu. Możesz użyć operatora , aby uruchomić dowolne natywne polecenie lub polecenie programu PowerShell. Jest to przydatne w skryscie, gdy trzeba dynamicznie konstruować parametry wiersza polecenia dla natywnego polecenia. Aby uzyskać więcej informacji, zobacz operatora wywołania
Polecenie cmdlet Start-Process może służyć do uruchamiania natywnych poleceń, ale należy ich używać tylko wtedy, gdy trzeba kontrolować sposób wykonywania polecenia. Polecenie cmdlet ma parametry do obsługi następujących scenariuszy:
- Uruchamianie polecenia przy użyciu różnych poświadczeń
- Ukryj okno konsoli utworzone przez nowy proces
- Przekieruj strumień stdin, stdouti stderr
- Użyj innego katalogu roboczego dla polecenia
Poniższy przykład uruchamia natywne polecenie sort.exe z przekierowanymi strumieniami wejściowymi i wyjściowymi.
$processOptions = @{
FilePath = "sort.exe"
RedirectStandardInput = "TestSort.txt"
RedirectStandardOutput = "Sorted.txt"
RedirectStandardError = "SortError.txt"
UseNewEnvironment = $true
}
Start-Process @processOptions
Aby uzyskać więcej informacji, zobacz Start-Process.
W systemie Windows polecenie cmdlet Invoke-Item wykonuje domyślną akcję dla określonego elementu. Na przykład uruchamia plik wykonywalny lub otwiera plik dokumentu przy użyciu aplikacji skojarzonej z typem pliku dokumentu. Domyślna akcja zależy od typu elementu i dostawcy programu PowerShell, który zapewnia dostęp do elementu.
Poniższy przykład otwiera repozytorium kodu źródłowego programu PowerShell w domyślnej przeglądarce internetowej.
Invoke-Item https://github.com/PowerShell/PowerShell
Aby uzyskać więcej informacji, zobacz Invoke-Item.