Jestem całkiem nowy w Powershell i napisałem całkiem spore skrypty, czyli skrypt, który wywołuje inne skrypty, które mają funkcje zagnieżdżone w innych funkcjach. Kiedy uruchamiam ten skrypt, czasami pojawiają się błędy, z których nie wiem skąd pochodzą. Czy istnieje prosty sposób sprawdzenia, gdzie zakończył się ten skrypt, aby rozwiązać problem z błędem?Jak śledzić przepływ skryptów
Odpowiedz
Można użyć Set-PsDebug
uzyskać PowerShell do wyprowadzania prawie każda linia biegnie:
Set-PSDebug -Trace 1;
Jedynym minusem jest to prawdopodobnie będziesz skończyć z dużą ilością mocy, aby przebrnąć przez ...
Zazwyczaj błąd zawiera skrypt wywołujący.
W przypadku niepowodzenia można spróbować uruchomić skrypt programu ISE programu Window PowerShell w trybie debugowania. Pozwala to na używanie punktów przerwania i przechodzenie przez kod.
Artile na temat korzystania z ISE do debugowania:
pozdrowienia Arcass
Do debugowania, aby zobaczyć, gdzie błąd użytkownika pochodzą Proponuję debugowanie z ISE lub PowerGUI.
Możesz także pobrać skrypt z twojego skryptu, używając cmdletu Start-Transcript
, który zapisze całą aktywność konsoli do pliku. Możesz więc umieścić instrukcje, takie jak Write-Host "Doing XYZ"
, a te pojawią się w dzienniku transkryptów.
Jeśli złapiesz wyjątki z połowu try lub użyć pułapki można napisać numer wiersza i kolumny z wyjątkiem tak:
$ErrorActionPreference = 'Stop'
trap {
Write-Host "Error on line $($_.InvocationInfo.ScriptLineNumber)"
exit 1
}
try {
Get-Item DoesntExist
} catch {
Write-Host ("Error occurred on line: " + $_.InvocationInfo.ScriptLineNumber)
}
$_.InvocationInfo
ma inne szczegóły dotyczące były błąd pochodzi.
Ustawiając $ErrorActionPreference = "Stop"
, upewniasz się, że jakikolwiek błąd wyzwala blok trap{}
, który w tym przypadku wypisze linię, do której skrypt dotarł i z niej wychodzi.
Dodane więcej informacji na temat 'trap {}' obsługi błędów, ponieważ umożliwia to ogólne rozwiązywanie problemów z dowolnym błędem, bez konieczności umieszczania 'try {} catch {}' wokół zbyt wielu instrukcji. –
- 1. Jak zainstalować przepływ powietrza?
- 2. Przepływ pracy z piskiem
- 3. Jak śledzić pobieranie plików?
- 4. Maksymalny przepływ - przez wierzchołek - jak?
- 5. Przepływ powietrza: jak usunąć DAG?
- 6. Jak śledzić odsłon w widoku
- 7. Jak śledzić kliknięcia przycisków Tweetowania?
- 8. Jak śledzić żądanie jQuery AJAX?
- 9. Przepływ realizacji programu burzy
- 10. Przepływ wykonywania lalek
- 11. Przepływ pracy nhibernate + migracje
- 12. JWT odśwież przepływ tokena
- 13. Jak dołączyć pakiet skryptów w sekcji skryptów w widoku
- 14. Przepływ zleceń Gitub/EGit
- 15. Przepływ aplikacji z AccountManager
- 16. Przepływ zadań w Sharepoint kontra Przepływ pracy w systemie Windows
- 17. Jak uruchomić Przepływ powietrza na Windows
- 18. Jak zaimplementować przepływ logowania w jonowej 2?
- 19. Niestandardowy przepływ pracy, jak zdobyć jednostkę wykonawczą
- 20. jak połączyć wiele skryptów Pythona
- 21. Jak korzystać ze skryptów AutoHotKey?
- 22. Jak uzyskać niezapisane zakładki skryptów?
- 23. Jak mogę śledzić postęp pisania AVAssetWriter?
- 24. jak śledzić użytkowników za pomocą websocket ++ 0.3X
- 25. Jak śledzić wiele zdarzeń dotyku w Libgdx?
- 26. Jak śledzić lokalizację użytkownika za pomocą MapKit
- 27. Jak śledzić zależności wtyczek w maven2?
- 28. Jak śledzić żądania usługi WebService ScriptService?
- 29. Jak śledzić zmianę daty w Javie
- 30. Jak śledzić postępy podczas korzystania z Kanban?
To jest dokładnie to, czego szukałem. Jednak widzę dużą zaletę w ustalaniu, jak poprawnie debugować, więc zajrzę do tego w późniejszym czasie. –