2010-05-26 11 views
6

Esiste un metodo per abbreviare i riferimenti allo spazio dei nomi di PowerShell?PowerShell: abbrevia i nomi degli spazi dei nomi per facilitare l'accesso ai tipi

Digitando [RootNameSpace1.NameSpace2.Namepsace3+SomeEnum]::SomeValue è tassativo e non è una buona esperienza utente. Mi rendo conto che è possibile fare riferimento agli oggetti di livello System senza uno spazio dei nomi in modo tale che lo [Type]::GetType(... funzioni. C'è qualche manifesto che potrei creare o comando che potrei usare per accorciare lunghi spazi dei nomi?

risposta

6

Tutti i metodi di accettare Enums accetterà stringhe, ma questo è per enumerazioni solo e dove non c'è ambiguità (cioè non ci sono altri sovraccarichi con stringhe corrispondenti alla firma in questo modo.)

Se si utilizza PowerShell v2.0, è possibile (ab) utilizzare gli acceleratori di tipi. Ho bloggato su questo prima, e Joel Bennett avvolto la mia tecnica in uno script a portata di mano:

http://poshcode.org/1869

-Oisin

+0

Questo è esattamente quello che stavo cercando. Grazie –

5

tipi lunghe possono essere assegnati alle variabili e quindi utilizzati tramite tali variabili:

# enum values 
$rvk = [Microsoft.Win32.RegistryValueKind] 
$rvk::Binary 
$rvk::DWord 

# static members 
$con = [System.Console] 
$con::CursorLeft 
$con::WriteLine('Hello there') 

# just to be sure, look at types 
.{ 
    $rvk::Binary 
    $con::WriteLine 
    $con::CursorLeft 
} | 
% { $_.GetType() } 
+0

che lavora per una soluzione semplice. Speravo che ci fosse un modo per raggiungerlo senza che il nostro utente finale dovesse creare queste variabili o senza doverle creare internamente e quindi esporre una sorta di documentazione. Grazie! –