polecenia PowerShell każdy programista powinien wiedzieć: 50 + Cmdletów do wykonywania zadań, monitorowania wydajności, debugowania

wpis w: Articles | 0

wielu programistów kocha PowerShell i nie bez powodu: dodaje on moc, funkcjonalność i elastyczność do Wiersza poleceń systemu Windows, w którym wielu z nas spędza dużo czasu. Ma jednak trochę krzywej uczenia się, ale po opanowaniu podstawowych poleceń, które musisz wiedzieć, to produktywność na sterydach.,

polecenia PowerShell są znane jako cmdlety, a te cmdlety są siłą napędową jego funkcjonalnych możliwości. Od poleceń, które poprawiają ogólne wrażenia z systemu Windows po polecenia przydatne do prac programistycznych, istnieją dziesiątki ważnych poleceń, które programiści powinni znać., Zebraliśmy tę listę, aby służyć jako podręczny przewodnik dla tych, którzy dopiero zaczynają korzystać z możliwości PowerShell, jak również tych, którzy chcą wyrównać swoje doświadczenie PowerShell, w tym:

  • podstawowe cmdlety PowerShell
  • polecenia PowerShell do Getting Things Done
  • cmdlety do monitorowania wydajności, testowania i debugowania

oprócz cmdletów, istnieją dziesiątki parametrów i metod, które pomogą ci uzyskać jak najwięcej z Twoich scenariuszy., Parametr WhatIf jest szczególnie przydatny do testowania skryptów PowerShell bez ich uruchamiania (@pluralsight). Dla każdego polecenia dostępnych jest zazwyczaj kilka parametrów i metod. Polecenia wymienione poniżej są dobrym punktem wyjścia dla każdego programisty, ale aby w pełni zrealizować korzyści, należy opanować parametry i inne metody.

podstawowe polecenia PowerShell

te podstawowe polecenia PowerShell są pomocne w uzyskiwaniu informacji w różnych formatach, konfigurowaniu zabezpieczeń i podstawowym raportowaniu.,

Get-Command

Get-Command jest łatwym w użyciu referencyjnym cmdletem, który wyświetla wszystkie polecenia dostępne do użycia w bieżącej sesji.

Po prostu wpisz to polecenie:

get-command

wynik będzie wyglądał mniej więcej tak (@MS_ITPro):

2. Get-Help

polecenie Get-Help jest niezbędne dla każdego, kto korzysta z PowerShell, zapewniając szybki dostęp do informacji potrzebnych do uruchomienia i pracy ze wszystkimi dostępnymi poleceniami.

Jeśli chcesz na przykład kilka przykładów, wpisz następujące (@jp_jofre):

3., Set-ExecutionPolicy

Microsoft domyślnie wyłącza skrypty, aby zapobiec wykonywaniu złośliwych skryptów w środowisku PowerShell. Programiści chcą jednak mieć możliwość pisania i wykonywania skryptów, więc polecenie Set-ExecutionPolicy pozwala kontrolować poziom zabezpieczeń otaczających skrypty PowerShell. Możesz ustawić jeden z czterech poziomów bezpieczeństwa:

  • Restricted: jest to domyślny poziom bezpieczeństwa, który blokuje uruchamianie skryptów PowerShell. Na tym poziomie zabezpieczeń można wprowadzać polecenia tylko interaktywnie.,
  • All Signed: ten poziom bezpieczeństwa umożliwia uruchamianie skryptów tylko wtedy, gdy są podpisane przez godnego zaufania wydawcę.
  • Remote Signed: na tym poziomie bezpieczeństwa dozwolone jest uruchamianie skryptów PowerShell, które zostały utworzone lokalnie. Skrypty tworzone zdalnie mogą być uruchamiane tylko wtedy, gdy zostały podpisane przez renomowanego wydawcę.
  • nieograniczony: jak sama nazwa wskazuje, nieograniczony poziom bezpieczeństwa pozwala na uruchamianie wszystkich skryptów poprzez usunięcie wszystkich ograniczeń z zasad wykonywania.,

Podobnie, jeśli pracujesz w nieznanym środowisku, możesz łatwo dowiedzieć się, jakie są bieżące zasady wykonywania za pomocą tego polecenia:

Get-ExecutionPolicy

sprawdź ten wątek na SuperUser, aby uzyskać więcej informacji na temat konfigurowania zasad wykonywania w PowerShell. (@StackExchange)

Get-Service

warto również wiedzieć, jakie usługi są zainstalowane w systemie., Możesz łatwo uzyskać dostęp do tych informacji za pomocą następującego polecenia:

Get-Service

wyjście będzie wyglądało mniej więcej tak (@MS_ITPro):

Jeśli chcesz wiedzieć, czy konkretna usługa jest zainstalowana, możesz dołączyć przełącznik-Name i nazwę usługi, a System Windows pokaże stan usługi. Ponadto można wykorzystać funkcje filtrowania, aby zwrócić określony podzbiór aktualnie zainstalowanych usług., Poniższy przykład spowoduje wyjście danych z polecenia Get-Service, które zostało przesłane do pliku cmdlet Where-Object, który następnie odfiltruje Wszystko inne niż usługi, które zostały zatrzymane:

Get-Service | Where-Object {$_.status -eq "stopped"}

sprawdź ten post, aby uzyskać dodatkowe przykłady Get-Service w akcji.

5. ConvertTo-HTML

Jeśli chcesz wyodrębnić dane, które możesz użyć w Raporcie lub wysłać do kogoś innego, ConvertTo-HTML jest jednym z prostych sposobów, aby to zrobić., Aby go użyć, Przełącz wyjście z innego polecenia do polecenia ConvertTo-HTML i użyj przełącznika-Property, aby określić, które właściwości wyjściowe chcesz w pliku HTML. Musisz również podać nazwę pliku.

na przykład poniższy kod tworzy stronę HTML, która wyświetla listę aliasów PowerShell w bieżącej konsoli:

PS C:\> get-alias | convertto-html > aliases.htmPS C:\> invoke-item aliases.htm

Bonus:

Export-CSV

cmdlet działa w podobny sposób, ale eksportuje dane do .Plik CSV zamiast HTML., Użyj

Select-Object

, aby określić, które właściwości mają być zawarte w wyjściu.

sprawdź ten artykuł z 4sysops, aby uzyskać więcej informacji na temat efektywnego korzystania z ConvertTo-HTML (@adbertram).

6. Get-EventLog

Możesz użyć PowerShell do analizy dzienników zdarzeń komputera za pomocą polecenia Get-EventLog. Dostępnych jest kilka parametrów. Użyj przełącznika-Log, po którym następuje nazwa pliku dziennika, aby wyświetlić określony dziennik., Możesz użyć następującego polecenia, na przykład, aby wyświetlić Dziennik aplikacji:

Get-EventLog -Log "Application"

sprawdź kilka przykładów Get-EventLog w akcji w tym poście (@nextofwindows). Inne typowe parametry to (@SS64):

  • -Verbose
  • -Debug
  • -ErrorAction
  • -ErrorVariable
  • -Warningvariable
  • -OutBuffer

Get-Process

podobnie jak uzyskanie listy dostępnych usług, często przydatne jest uzyskanie szybkiej listy wszystkich aktualnie uruchomionych procesów., Polecenie Get-Process daje te informacje na wyciągnięcie ręki.

Bonus: użyj Stop-Process, aby zatrzymać procesy, które są zamrożone lub nie odpowiadają. Jeśli nie masz pewności, jaki proces Cię zatrzymuje, użyj Get-Process, aby szybko zidentyfikować problematyczny proces. Po uzyskaniu nazwy lub identyfikatora procesu użyj Stop-proces, aby go zakończyć.

oto przykład., Uruchom to polecenie, aby zakończyć wszystkie aktualnie uruchomione instancje Notatnika (@MS_ITPro):

Stop-Process -processname notepad

Możesz również użyć znaków wieloznacznych, takich jak Poniższy przykład, który kończy wszystkie instancje Notatnika, a także wszystkie inne procesy rozpoczynające się notatką:

Stop-Process -processname note*

sprawdź ten post, aby uzyskać więcej informacji na temat zabijania procesów za pomocą Notatnika.PowerShell (@howtogeek):

8. Wyczyść-historię

Co zrobić, jeśli chcesz wyczyścić wpisy z historii poleceń? Łatwy w użyciu Wyczyść historię cmdlet. Można go również użyć do usuwania tylko określonych poleceń., Na przykład, następujące polecenie usunie polecenia, które zawierają „help” lub kończą się „command” (@MS_ITPro):

PS C:\> Clear-History -Command *help*, *command

Jeśli chcesz dodać wpisy do sesji, użyj:

Add-History

sprawdź ten post, aby uzyskać przydatne informacje na temat czyszczenia historii i wstępnego ładowania historii z listą niektórych poleceń (@MS_ITPro).ms_itpro).,

Where-Object

Where-Object jest jednym z najważniejszych cmdletów, które należy znać, ponieważ umożliwia pobranie zbioru danych i przekazanie go dalej w dół potoku do filtrowania (@jonathanmedd):

Get-Service | Where-Object {$_.Status -eq 'Running'}Status Name DisplayName------ ---- -----------Running AdobeARMservice Adobe Acrobat Update ServiceRunning AppHostSvc Application Host Helper ServiceRunning Appinfo Application InformationRunning AudioEndpointBu... Windows Audio Endpoint BuilderRunning Audiosrv Windows AudioRunning BFE Base Filtering EngineRunning BITS Background Intelligent Transfer Ser...Running BrokerInfrastru... Background Tasks Infrastructure Ser...Running Browser Computer BrowserRunning CDPSvc Connected Devices Platform Service

10. Set-AuthenticodeSignature

Jeśli chcesz zabezpieczyć swoją pracę w produkcji i zapobiec modyfikacjom, użyj Set-AuthenticodeSignature, aby dodać podpis Authenticode do skryptu lub pliku.

polecenia PowerShell do wykonywania zadań

Jeśli chodzi o produktywność, PowerShell może pomóc ci wykonać zadania za pomocą następujących poleceń.

11., Foreach-Object

cmdlet ForEach-Object wykonuje operację przeciwko każdemu elementowi w określonej grupie obiektów wejściowych. Podczas gdy wiele cmdletów i tak działa z każdym obiektem w kolekcji, będziesz potrzebował ForEach-Object w sytuacjach, w których chcesz wprowadzić inne modyfikacje lub zastosować określone formatowanie do wszystkich obiektów w kolekcji.

oto przykład (@MS_ITPro)., Jeśli chcesz wyświetlić listę nazw procesów i chcesz, aby były one renderowane w Kolorze cyjanowym, możesz spróbować:

Get-Process | Write-Host $_.name -foregroundcolor cyan

ale powyższe spowoduje następujący błąd:

At line:1 char:25+ get-process | write-host <<<< $_.name -foregroundcolor cyan Write-Host : The input objectcannot be bound to any parameters for the command either because the command does nottake pipeline input or the input and its properties do not match any of the parametersthat take pipeline input.

ponieważ cmdlet hosta zapisu nie rozumie, co chcesz zrobić z danymi wysyłanymi przez potok.

użycie cmdleta ForEach-Object rozwiązuje ten problem:

Get-Process | ForEach-Object {Write-Host $_.name -foregroundcolor cyan}

sprawdź ten samouczek, aby uzyskać więcej informacji na temat ForEach-Object i pracy z pętlami (@tomsitpro).

12., Clear-Content

Jeśli chcesz usunąć zawartość elementu, ale zachować sam element, użyj polecenia Clear-Content:

Clear-Content C:\Temp\TestFile.txt

Możesz również użyć tego polecenia, aby wyczyścić zawartość wszystkich plików z określonym rozszerzeniem pliku. Poniższy kod oczyści zawartość wszystkich plików zrozszerzenie txt, na przykład:

Clear-Content -path * -filter *.TXT –force

można również używać znaków wieloznacznych. Dodatkowo możesz wyczyścić zawartość dowolnego typu pliku, z .pliki txt do .doc,xls i nie tylko.

sprawdź ten post, aby uzyskać więcej szczegółów.

13., Checkpoint-Computer

Jeśli wprowadzasz poważne zmiany lub przeprowadzasz ryzykowny eksperyment, możesz ustawić punkt przywracania na komputerze za pomocą cmdleta Checkpoint-Computer.

zauważ, że możesz utworzyć punkt przywracania za pomocą tego cmdletu tylko raz na 24 godziny. Jeśli uruchomisz polecenie ponownie, zachowa ono poprzedni punkt przywracania:

sprawdź ten artykuł z MCP Mag, aby dowiedzieć się więcej (@MCPmag).

Compare-Object

często przydatne jest bezpośrednie porównanie dwóch obiektów., Można to zrobić za pomocą Compare-Object, który generuje raport o różnicach między dwoma zestawami, takimi jak (@Marcam923):

15. ConvertFrom-StringData

użyj Convertfrom-StringData, aby przekonwertować łańcuch zawierający jedną lub więcej par wartości na tabelę skrótu. Oto przykład jak to polecenie wygląda:

$settings = $TextData | ConvertFrom-StringData

To polecenie jest przydatne w różnych sytuacjach, na przykład, gdy chcesz zapisać ustawienia skryptu PowerShell, aby umożliwić innym edycję ustawień bez pracy w kodzie skryptu bezpośrednio.,

ConvertTo-SecureString

Konwertuj zaszyfrowany standardowy ciąg znaków na Bezpieczny ciąg lub zwykły tekst na Bezpieczny ciąg za pomocą ConvertTo-SecureString. Ten cmdlet jest używany w połączeniu z ConvertFrom-SecureString i Read-Host (@AdmArsenal):

ConvertTo-XML

użyj ConvertTo-XML cmdlet do utworzenia reprezentacji obiektu opartej na XML. Jest to również nazywane serializacją i jest to przydatny proces do zapisywania danych do późniejszego ponownego wykorzystania. Zauważ, że ważne jest, aby wyrażenie zapisywało obiekty do potoku., Wszystko za pomocą Write-Host nie będzie zapisywane do potoku i dlatego nie może być serializowane. Oto przykład ConvertTo-XML w akcji (@PetriFeed):

Get-Service wuauserv -ComputerName chi-dc04,chi-p50,chi-core01 |Export-Clixml -Path c:\work\wu.xml

konkretny cmdlet użyty w powyższym przykładzie, Export-Clixml, jest odpowiedni do większości celów. Konwertuje wyjście wyrażenia PowerShell na XML i zapisuje je do pliku.

18. New-AppLockerPolicy

New-AppLockerPolicy tworzy nową Politykę Applockera z listy informacji o pliku i innych opcji tworzenia reguł., W sumie istnieje pięć cmdletów, które umożliwiają interakcję z AppLocker, w tym (@RootUsers_):

  • Get-AppLockerFileInformation: pobiera wymagane informacje do tworzenia reguł AppLocker z listy plików lub dziennika zdarzeń.
  • Get-AppLockerPolicy: służy do pobierania lokalnej, efektywnej lub domenowej Polityki Applockera.
  • New-AppLockerPolicy: jak wspomniano, ten cmdlet jest używany do tworzenia nowych zasad Applockera.
  • Set-AppLockerPolicy: Ustawia Politykę Applockera dla określonego obiektu zasad grupy.,
  • Test-AppLockerPolicy: używany do określenia, czy użytkownik lub grupa użytkowników będzie w stanie wykonać określone działania na podstawie zasady.

19. New-ItemProperty

New-ItemProperty tworzy nową właściwość dla elementu i ustawia jego wartość. Można go używać do tworzenia i zmiany wartości rejestru i danych (właściwości klucza rejestru), na przykład.

sprawdź ten tutorial z mnaoumov.NET dla niektórych użytecznych obejść za pomocą tego cmdlet (@mnaoumov).

20. New-Object

aby utworzyć instancję Microsoft .,Obiekt NET Framework lub Component Object Model (COM), użyj polecenia cmdlet New-Object.

oto przykład, który tworzy nowy obiekt za pomocą New-Object, przechowuje go w zmiennej, a następnie łączy go do Add-Member, który następnie doda Właściwości lub metody określone w utworzonym obiekcie (@gngrninja):

21. Nowość-WebServiceProxy

Nowość-WebServiceProxy tworzy obiekt proxy usługi internetowej, który umożliwia korzystanie z usługi internetowej i zarządzanie nią z poziomu PowerShell., Ten cmdlet jest piękną rzeczą dla programistów-sprawia, że nie trzeba pisać dużo skomplikowanego kodu, aby spróbować osiągnąć coś w PowerShell, kiedy można po prostu wywołać inną usługę, która już to umożliwia.

oto przykład:

teraz możesz uruchomić następujące metody, aby wyświetlić listę wszystkich dostępnych metod:

$proxy | gm -memberType Method

22. New-WSManInstance

podobnie jak New-WebServiceProxy, New-WSManInstance tworzy nową instancję zasobu zarządzania.,

sprawdź ten samouczek, aby uzyskać kompletny krok po kroku przykład, jak uzyskać informacje potrzebne do pomyślnego wykonania tego skryptu (@jonathanmedd).

23., New-WSManSessionOption

New-WSManSessionOption tworzy nową tabelę hashową sesji zarządzania, która jest używana jako parametry wejściowe do innych cmdletów WS-Management, w tym:

  • Get-WSManInstance
  • Set-WSManInstance
  • Invoke-WSManAction
  • Connect-WSMan

Oto składnia (@SAPIENTech):

Select-Object

cmdlet Select-Object wybiera określone właściwości pojedynczego obiektu lub grupy obiektów. Dodatkowo może wybrać unikalne obiekty z tablicy lub określoną liczbę obiektów z początku lub końca tablicy.,

PS > Get-Process | Sort-Object name -Descending | Select-Object -Index 0,1,2,3,4

Ten samouczek zawiera więcej informacji na temat różnych sposobów korzystania z Select-Object (@infosectactico).

istnieją inne cmdlety o podobnych funkcjach, w tym:

  • Select-String: wyszukuje tekst w łańcuchach lub plikach.
  • Select-XML: wyszukuje tekst w łańcuchu lub dokumencie XML.

25. Set-Alias

Set-Alias jest świetnym poleceniem do zwiększenia produktywności. Pozwala na ustawienie aliasu dla cmdleta lub innego elementu polecenia w bieżącej sesji (podobnie jak skrót klawiaturowy), dzięki czemu można pracować szybciej.,

poniższy przykład ustawia Notatnik na wartość np w bieżącej sesji za pomocą Set-Alias (@powershellatoms):

New-Alias np c:\windows\system32\notepad.exe

zauważ, że możesz również dostosować swój profil PowerShell za pomocą aliasów, których używasz najczęściej (@howtogeek).

26. Set-StrictMode

Set-StrictMode ustanawia i wymusza reguły kodowania w skryptach, blokach skryptów i wyrażeniach. Jest to przydatne polecenie do egzekwowania jakości kodu i zapobiegania obijaniu się i pisaniu niechlujnego kodu, gdy jest 3: 00 nad ranem i nie spałeś od dwóch dni (@adbertram).,

aby go użyć, należy wziąć pod uwagę dwa parametry: – Off i-Version, a-Version ma trzy możliwe wartości:

  • Wersja 1.0: zapobiega używaniu zmiennych, które nie zostały zainicjowane (takich jak opcja Explicit w VBScript)
  • Wersja 2.0: zapobiega używaniu zmiennych, które nie zostały zainicjowane, a także zapobiega wywoływaniu nieistniejących właściwości na obiektach, zapobiega wywoływaniu funkcji jak metoda i zakazuje tworzenia zmiennych bez nazwy.,
  • wersja Najnowsza: ta opcja wybiera najnowszą dostępną wersję StrictMode i używa jej. Jest to dobra opcja, ponieważ oznacza, że najnowsza wersja StrictMode jest używana niezależnie od używanej wersji PowerShell.

Wait-Job

Wait-Job wyłącza wiersz polecenia, dopóki zadania w tle uruchomione w bieżącej sesji nie zostaną zakończone. Wait-Job nie pokazuje wyjścia z zadań, ale może być używany w połączeniu z receive-Job. Wielowątkowość jest możliwa w PowerShell dzięki funkcji-Jobs.

napisz-postęp

kto nie lubi paska stanu?, Monitoruj swoje postępy za pomocą Write-Progress, który wyświetla pasek postępu w oknie poleceń Windows PowerShell.

oto przykład, który daje pełny pasek postępu i ciągi uruchomieniowe (@credera):

cmdlety do monitorowania wydajności, testowania i debugowania

istnieje również wiele cmdletów przydatnych dla programistów do rozwiązywania problemów, testowania, debugowania i monitorowania. Oto kilka, które musisz wiedzieć.

Debug-Process

deweloperzy uwielbiają debugowanie! Cóż, lubimy to jeszcze bardziej, gdy nie ma błędów do wyeliminowania, ale niestety nie zawsze tak jest., W PowerShell możesz debugować proces za pomocą cmdleta Debug-Process.

można również debugować zadania za pomocą Debug-Job (@MS_ITPro). Możesz też ustawić punkty przerwania lub użyć polecenia Wait-Debugger cmdlet:

30. Disable-PSBreakpoint

Jeśli masz ustawione punkty przerwania, ale chcesz je wyeliminować, zrób to łatwo za pomocą Disable-PSBreakpoint, który wyłącza punkty przerwania w bieżącej konsoli. Oto składnia (@ActiveXperts):

Disable-PSBreakpoint Disable-PSBreakpoint 

alternatywnie, jeśli chcesz włączyć punkty przerwania w bieżącej konsoli, użyj enable-PSBreakpoint.,

get-Counter

Get-Counter pobiera dane licznika wydajności w czasie rzeczywistym z oprzyrządowania do monitorowania wydajności w systemie operacyjnym Windows. Służy do uzyskiwania danych wydajności z komputerów lokalnych lub zdalnych w określonych odstępach czasu próbkowania.

w tym przykładzie otrzymasz licznik z interwałem próbkowania dla określonej maksymalnej próbki (@MS_ITPro):

PS C:\> Get-Counter -Counter "\Processor(_Total)\% Processor Time" -SampleInterval 2 -MaxSamples 3

w poniższym przykładzie polecenie to pobiera określone dane licznika z wielu komputerów:

32., Export-Counter

Export-Counter eksportuje PerformanceCounterSampleSet obiektów jako pliki dziennika licznika. Dostępne są dwie właściwości:

  • CounterSamples: pobiera i ustawia dane dla liczników.
  • Timestamp: pobiera i ustawia datę i godzinę, kiedy dane próbki zostały zebrane.,

i kilka metod, z których wszystkie są dziedziczone z obiektu:

  • Equals(Object)
  • Finalize()
  • GetHashCode()
  • GetType()
  • MemberwiseClone()
  • ToString()

na przykład poniższe polecenie używa get-Counter do zbierania Danych czasu procesora i eksportuje do a .plik blg przy użyciu licznika eksportu (@TechGenix):

Get-Counter "\Processor(*)\% Processor Time" | Export-Counter -Path C:\Temp\PerfData.blg

33. Test-Path

test-Path pozwala sprawdzić, czy elementy istnieją w podanej ścieżce., Na przykład, jeśli planujesz użyć innego polecenia na określonym pliku, może być konieczne sprawdzenie, czy plik istnieje, aby uniknąć błędu.

Test-Path C:\Scripts\Archive

Jeśli folder istnieje, zwróci True; jeśli nie, zwróci False.

może również pracować ze ścieżkami używanymi przez innych dostawców PowerShell. Na przykład, jeśli chcesz wiedzieć, czy Twój komputer ma zmienną środowiskową o nazwie username, możesz użyć następującego polecenia:

Test-Path Env:\username

Test-Path działa ze zmiennymi, certyfikatami, aliasami i funkcjami., Sprawdź ten post TechNet, aby uzyskać więcej szczegółów (@MS_ITPro).

34. Get-WinEvent

spójrz na dzienniki zdarzeń systemu Windows za pomocą Get-WinEvent. Aby wyświetlić listę dostępnych dzienników, użyj:

Get-WinEvent -ListLog *

następnie, aby przejrzeć szczegóły określonego dziennika, zastąp * nazwą (Przełącz wyjście na format-list, aby wyświetlić wszystkie szczegóły):

Get-WinEvent -ListLog $logname | fl *

Możesz również wyświetlić wszystkie zdarzenia w dzienniku, używając:

Get-WinEvent -LogName System

sprawdź ten samouczek po więcej szczegółów (@rakheshster).,

Invoke-TroubleshootingPack

Pakiety rozwiązywania problemów to Kolekcje skryptów i zestawów PowerShell, które pomagają rozwiązywać, diagnozować i naprawiać typowe problemy systemowe (@ITNinjaSite). Znajdź Pakiety rozwiązywania problemów na stronie:

C:\Windows\Diagnostics\System

możesz uruchomić ten skrypt, aby uzyskać listę wszystkich pakietów rozwiązywania problemów dostępnych w bieżącym systemie (@TechGenix):

Get-ChildItem C:\Windows\Diagnostic\System

następnie, z podwyższonego Okna PowerShell, uruchom pakiet rozwiązywania problemów za pomocą tego polecenia:

Invoke-TroubleshootingPack (Get-TroubleshootingPack C:\Windows\diagnostics\system\networking)

36., Measure-Command

Jeśli chcesz mierzyć czas operacji w PowerShell, Measure-Command jest cmdletem, który musisz znać. Mierzy czas uruchomienia skryptu lub blokady skryptów. Oto przykład (@ToddKlindt):

Measure-Command { Mount-SPContentDatabase –Name wss_content_portal –WebApplication http://portal.contoso.com }

wyjście jest obiektem TimeSpan, więc zawiera właściwości takie jak godzina, minuta, sekunda, itd. i łatwo jest dostosować wyjście do swoich preferencji.

Measure-Object

Możesz również chcieć wiedzieć, jak duży jest dany obiekt., Użyj obiektu miary do obliczania właściwości liczbowych dowolnego obiektu, w tym znaków, słów i linii w obiekcie ciągu, takich jak pliki tekstu.,

wystarczy podać nazwę i typ pomiaru do wykonania, wraz z parametrami takimi jak (@WindowsITPro):

  • -Sum: dodaje wartości
  • -Average: oblicza średnią wartość
  • -Minimum: znajduje minimalną wartość
  • -Maximum: znajduje maksymalną wartość

następujące polecenie sumuje wartości właściwości VirtualMemorySize dla wszystkich obiektów procesu:

Get-Process | measure VirtualMemorySize -Sum

new-event

new-event służy do utworzenia nowego zdarzenia., Powiązanym cmdletem jest New-EventLog, który tworzy nowy dziennik zdarzeń, a także nowe źródło zdarzeń na komputerze lokalnym lub zdalnym. Jeśli masz silnik automatyzacji obsługiwany przez PowerShell, dobrą praktyką jest skonfigurowanie dziennika zdarzeń (poprzez utworzenie niestandardowego typu dziennika zdarzeń), który rejestruje wszystkie wiadomości wysyłane przez PowerShell. Jest to jeden z przykładów, w którym można zaimplementować własną przeglądarkę zdarzeń logowania.,

zacznij od utworzenia nowego dziennika zdarzeń LogName (@BundaloVladimir):

New-EventLog -LogName Troubleshooting_Log -Source FalloutApp

następnie, aby wysyłać wiadomości do nowego dziennika zdarzeń, uruchom następujące pole za pomocą polecenia Write-Log:

Write-EventLog -log Troubleshooting_Log -source FalloutApp -EntryType Information -eventID 10 -Message "FalloutApp has been successfully installed"

Receive-Job

Jeśli chcesz uzyskać wyniki w zadaniach w tle Windows PowerShell w bieżącej sesji użyj receive-job. Jest to zwykle używane po użyciu Start-Job, aby rozpocząć zadanie, gdy trzeba wyświetlić konkretne wyniki.,

Receive-Job -Name HighMemProcess

sprawdź ten pomocny samouczek na temat korzystania z Receive-Job I co zrobić, jeśli pozornie nie ma wyników (@proxb).

40. Register-EngineEvent

Ten cmdlet jest używany do subskrybowania zdarzeń generowanych przez silnik Windows PowerShell i cmdlet New-Event. Na przykład, następujące polecenie zasubskrybuje zdarzenie, gdy bieżąca sesja PowerShell zakończy się i zapisze informacje (takie jak Data i godzina) w pliku dziennika (@jonathanmedd):

Register-EngineEvent PowerShell.Exiting-Action {"PowerShell exited at " + (Get-Date) | Out-File c:\log.txt -Append}

41., Register-ObjectEvent

Register-ObjectEvent jest podobny do Register-EngineEvent, ale zamiast subskrybować zdarzenia generowane przez silnik PowerShell i New-Event, subskrybuje zdarzenia generowane przez obiekt Microsoft. NET Framework.

oto przykład (@NetworkWorld):

istnieją inne Register – cmdlets, które mogą być przydatne, w tym:

  • Register-PSSessionConfiguration: tworzy i rejestruje nową konfigurację sesji.
  • Register-WmiEvent: ten cmdlet subskrybuje Zdarzenie WMI.

42., Usuń-Zdarzenie

Jeśli chcesz usunąć zdarzenie, użyj polecenia Usuń-Zdarzenie. Jeśli chcesz usunąć cały dziennik zdarzeń, użyj Remove-EventLog, który usuwa dziennik zdarzeń lub wyrejestruje Źródło zdarzenia.

alternatywnie, Register-Event anuluje subskrypcję wydarzenia, ale nie usuwa zdarzenia z kolejki zdarzeń (@SS64).

43. Set-PSDebug

Ten cmdlet włącza i wyłącza funkcje debugowania skryptów. Ustawia również poziom śledzenia i włącza tryb StrictMode.,

używając Set-PSDebug u góry pliku skryptu tuż po instrukcji param () (jeśli istnieje), możesz zapobiec błędom w skryptach, o których PowerShell nie dostarcza odpowiednich informacji do rozwiązywania problemów. Oto przykład (@r_keith_hill):

44. Start-Sleep

Jeśli chcesz zawiesić aktywność w skrypcie lub sesji, użyj funkcji Start-Sleep, która zatrzymuje aktywność na określony okres czasu.

Start-Sleep -Seconds xxxStart-Sleep -Milliseconds xxx

Jeśli chcesz wstrzymać jedną lub więcej uruchomionych usług, użyj Suspend-Service.

45., Tee-Object

Jeśli analizujesz wydajność lub jakość kodu, przydatne jest wyświetlanie wyjścia polecenia. Tee-Object przechowuje wyjście polecenia w pliku lub zmiennej, a także wyświetla je w konsoli, jeśli jest to ostatnia zmienna w potoku. Jeśli nie jest to ostatnia zmienna w potoku, obiekt tee-Object wysyła ją do potoku.

oto składnia:

46. Test-AppLockerPolicy

Test-AppLockerPolicy ocenia, czy pliki wejściowe mogą być uruchamiane dla określonego użytkownika na podstawie określonej polityki Applockera.,

Test-AppLockerPolicy -Path Test-AppLockerPolicy -Path 

Ten samouczek oferuje więcej szczegółów na temat dostępnych parametrów i przykładów Test-AppLockerPolicy w akcji (@powershellhelp).

Test-ComputerSecureChannel

Ten cmdlet testuje i naprawia połączenie między komputerem lokalnym a jego domeną. Bez tego polecenia, zwyczajowym rozwiązaniem było wcześniej usunięcie komputera z jego domeny, a następnie ponowne połączenie go w celu przywrócenia relacji. Test-ComputerSecureChannel umożliwia przywrócenie połączenia w krótszym czasie (@WindowsITPro).,

po zalogowaniu się jako administrator lokalny, po prostu uruchom następujące polecenie:

Test-ComputerSecureChannel –credential WINDOWSITPRO\Administrator –Repair

Możesz użyć połączenia testowego, aby wysłać pakiety żądań (pingi) do jednego lub więcej komputerów.

ścieżka testowa

użyj ścieżki testowej, aby określić, czy istnieją wszystkie elementy ścieżki. Zasadniczo pomaga radzić sobie z błędami przed ich wystąpieniem. W najprostszej formie zwraca True lub False (@MCPmag):

PS C:\> test-path c:\TruePS C:\> test-path z:\fooFalse

49. Trace-Command

Trace-Command konfiguruje i uruchamia ślad podanego polecenia lub wyrażenia., Aby go użyć, musisz również użyć Get-TraceSource, aby wyszukać konkretne nazwy za pomocą znaków wieloznacznych:

PS&gt; Get-TraceSource -Name *param*

możesz filtrować wyjście, aby dopasować opis do wzorca, którego szukasz. Po zidentyfikowaniu możliwej nazwy śledzenia, użyjesz polecenia śledzenia, aby uzyskać odpowiedzi, których potrzebujesz. Oto przykład:

sprawdź ten post, aby uzyskać więcej informacji na temat grania w detektywa z Trace-Command (@PowerShellMag).

50. Write-Debug

Write-Debug zapisuje komunikat debugowania do konsoli., Kiedy piszesz to w funkcji lub skrypcie, domyślnie nic nie robi; wiadomości zasadniczo czekają, aż zmodyfikujesz $DebugPreference lub aktywujesz przełącznik-debug podczas wywoływania funkcji lub skryptu. Gdy $DebugPreference jest ustawione na 'inquire' lub przełącznik-debug jest aktywowany, wiadomość tworzy punkt przerwania, co daje łatwy sposób na przejście do trybu debugowania.

Weźmy ten przykład (@RJasonMorgan):

powyższy przykład po uruchomieniu z-debug wyświetla następujący tekst:

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *