2009-08-13 17 views
49

Możesz zamknąć PowerShell, wpisując exit. Jak na razie dobrze. Ale co to właściwie jest?Czym dokładnie jest "wyjście" w PowerShell?

PS Home:\> gcm exit 
Get-Command : The term 'exit' is not recognized as the name of a cmdlet, function, script file, or operable program. Ch 
eck the spelling of the name, or if a path was included, verify that the path is correct and try again. 
At line:1 char:4 
+ gcm <<<< exit 
    + CategoryInfo   : ObjectNotFound: (exit:String) [Get-Command], CommandNotFoundException 
    + FullyQualifiedErrorId : CommandNotFoundException,Microsoft.PowerShell.Commands.GetCommandCommand 

Nie jest to więc cmdlet, funkcja, skrypt lub program. Pozostawia to pytanie dokładnie tak, jak jest to .

Oznacza to niestety, że nie można tworzyć aliasy do exit:

PS Home:\> New-Alias ^D exit 
PS Home:\> ^D 
Cannot resolve alias '♦' because it refers to term 'exit', which is not recognized as a cmdlet, function, operable prog 
ram, or script file. Verify the term and try again. 
At line:1 char:2 
+ ♦ <<<< 
    + CategoryInfo   : ObjectNotFound: (♦:String) [], CommandNotFoundException 
    + FullyQualifiedErrorId : AliasNotResolvedException 

Czy istnieją więcej takich poleceń, które są żadne polecenia?

ETA: Dla odniesienia: Wiem, że mogę po prostu zawinąć go w funkcję. Mój profil ma w sobie linie

# exit with Ctrl+D 
iex "function $([char]4) { exit }" 

. Moje pytanie dotyczyło tylko tego, czym dokładnie jest to polecenie.

Odpowiedz

65

To zastrzeżone słowo kluczowe (np. Return, filter, function, break).

Reference

Ponadto, zgodnie z § 7.6.4 Bruce Payette za Powershell in Action:

Ale co się dzieje, gdy chcesz skrypt, aby wyjść z wnętrza funkcji zdefiniowanej w tym scenariuszu? ... Aby to ułatwić, Powershell ma słowo kluczowe wyjścia wyjściowe.

Oczywiście, jak inne podkreśliło, to nie jest trudne do zrobienia, co chcesz przez owinięcie zjazd w funkcję:

PS C:\> function ex{exit} 
PS C:\> new-alias ^D ex 
+3

Według 'Get-Help Exit-PSSession' _You mogą również korzystać słowo kluczowe Exit, aby zakończyć sesję interaktywną. Efekt jest taki sam jak przy użyciu Exit-PSSession. Tak więc jest napisane, że 'Exit' jest słowem kluczowym. Wydaje się jednak, że cytat nie może sugerować, że 'Exit' i' Exit-PSSession' są równoważne we wszystkich przypadkach. Słowo kluczowe exit może być użyte z argumentem, który można przekonwertować na '[int]', iw takim przypadku będzie to kod wyjścia. Na przykład 'Exit 42'. –