2012-12-16 16 views
6

Pracuję nad PowerShell 3.0 cmdlet przy użyciu C# /. Net 4.0 w Visual Studio 2010. Chciałbym uzyskać bieżący katalog w PowerShell, gdzie użytkownik wykonuje cmdlet. Ale Directory.GetCurrentDirectory() nie działa zgodnie z oczekiwaniami. W poniższym kodzie wynik to C: \ Users \ Administrator.Jak mogę uzyskać bieżący katalog w cmdlet PowerShell?

Pytanie: Jaki kod cmdlet służy do uzyskania aktualnego katalogu PowerShell?

[System.Management.Automation.Cmdlet(System.Management.Automation.VerbsCommon.Get, "StatusBar")] 
public class GetStatusBarCommand : System.Management.Automation.PSCmdlet 
{ 
    /// <summary> 
    /// Provides a record-by-record processing functionality for the cmdlet. 
    /// </summary> 
    protected override void ProcessRecord() 
    { 
     this.WriteObject(Directory.GetCurrentDirectory()); 
     return; 
    } 
} 
+0

$ (get-lokalizacja) lub $ PWD –

Odpowiedz

20

Proces PowerShell może mieć wiele obszarów Run, więc pojedynczy katalog globalny nie działa dla PowerShell. Poza tym w PowerShell twój bieżący katalog może znajdować się w rejestrze, a nie w systemie plików. Jednakże, można uzyskać dostęp do systemu plików dir z API PowerShell tak:

this.SessionState.Path.CurrentFileSystemLocation 
+0

ja nigdzie nie myślał o rejestrze. Trafne spostrzeżenie. Tak, działa to. SessionState.Path.CurrentFileSystemLocation. Dzięki! –

Powiązane problemy