Mam skrypt PowerShell, który musi działać pod wieloma hostami (PowerGUI, PowerShell ISE, itp ...), ale mam problem, w którym czasami cmdlet doesn istnieją pod jednym z hostów. Czy istnieje sposób sprawdzenia, czy istnieje cmdlet, aby można było opakować kod w bloku if i zrobić coś innego, gdy nie istnieje?Jak sprawdzić, czy cmdlet istnieje w PowerShellu w środowisku wykonawczym za pomocą skryptu
Wiem, że mógłbym użyć kodu $host.name
, aby podzielić kod, który powinien być uruchamiany na każdym hoście, ale wolałbym użyć Feature Detection zamiast tego, gdyby cmdlet kiedykolwiek został dodany w przyszłości.
Mogę również użyć bloku prób/catch, ale ponieważ działa w zarządzanym kodzie, zakładam, że jest daleko, aby wykryć, czy cmdlet jest instalowany za pomocą kodu.
Nie wiedziałem, że wystąpił błąd w parametrzeAction. Znalazłem listę wszystkich wspólnych parametrów tutaj: http://msdn.microsoft.com/en-us/library/dd901844(VS.85).aspx, co warto wiedzieć. Dzięki! –
UWAGA: możesz również sprawdzić moduły, używając 'if (get-module | Gdzie-Object {$ _. Name -eq" ServerManager "}) {" Moduł istnieje "}'. Więcej szczegółów: http://stackoverflow.com/questions/10027156/how-to-import-system-modules-automatically –
cmdlet może istnieć, ale nie będzie dostępny. Dobry przykład: Get-WinEvent istnieje w systemie Windows 2003, ale generuje wyjątek NotImplemented. Jak poradzisz sobie z tą sytuacją? – Neolisk