Domanda

Sto scrivendo un cmdlet PowerShell. Dall'interno del mio metodo CMDlet BeginProcessing (), voglio essere in grado di recuperare la directory che era la directory predefinita al momento invocato il cmdlet.

Esempio: se l'utente lo fa:

cd \myDirectory
invoke-mycmdlet

Voglio che il mio codice sappia che la directory di shell predefinita era C: myDirectory. Quando accedo all'ambiente.CurrentDirectory, è sempre C: Windows System32

Ho visto un post simile su quindi in cui il poster doveva impostare l'ambiente :: corrente diretta dall'interno della shell usando il gioco. Non funzionerà per me.

Fondamentalmente, il mio cmdlet fa alcune cose del file system e voglio che l'utente sia in grado di semplicemente cd in una directory ed eseguire il mio cmdlet, con esso che opera sulla directory in cui sono passati, proprio come ti aspetteresti Lavorare dalla vecchia console di comando.

È stato utile?

Soluzione

Potresti voler provare invece, CurrentLocation.Path potrebbe anche indicare altri percorsi del fornitore, come il registro.

this.SessionState.Path.CurrentFileSystemLocation.Path

Altri suggerimenti

Sai, mi sembra sempre di trovarlo subito dopo aver pubblicato - indipendentemente da quanto tempo ho trascorso a cercare prima di raggiungere così!

Quindi, il mio cmdlet eredita da PSCMdlet. Ho scoperto che avrei potuto ottenere il percorso da cui volevo

this.SessionState.Path.CurrentLocation.Path

(dove "questo" è una classe CMDLET che eredita da PSCMDLET)

Prova il Get-Location cmdlet. Dovrebbe essere l'attuale posizione di esecuzione dello script, piuttosto che la cartella di avvio host di PowerShell.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top