Pregunta

Estoy escribiendo un cmdlet de PowerShell. Desde el interior de mi método cmdlet beginprocessing (), quiero poder recuperar el directorio que era el directorio predeterminado en el momento en que se invocó el cmdlet.

Ejemplo: si el usuario hace esto:

cd \myDirectory
invoke-mycmdlet

Quiero que mi código sepa que el directorio de shell predeterminado fue C: myDirectory. Cuando accedo al entorno. CurrentDirectory, siempre es C: Windows System32

He visto una publicación similar sobre, por lo que el póster necesitaba establecer el directorio de entorno :: actual desde el interior del shell usando la ubicación get. Eso no funcionará para mí.

Básicamente, mi cmdlet hace algunas cosas del sistema de archivos, y quiero que el usuario pueda simplemente cd en un directorio y ejecutar mi cmdlet, con él operando en el directorio en el que se cambió, al igual que esperar que lo Trabajar desde la consola de comando antigua.

¿Fue útil?

Solución

Es posible que desee probar esto en su lugar, CurrentLocation.path también podría señalar otras rutas de proveedores, como el registro.

this.SessionState.Path.CurrentFileSystemLocation.Path

Otros consejos

Sabes, siempre parece encontrarlo justo después de publicar, ¡independientemente de cuánto tiempo pasé mirando antes de alcanzarlo!

Entonces, mi cmdlet hereda de pscmdlet. Descubrí que podía obtener el camino que quería

this.SessionState.Path.CurrentLocation.Path

(donde "esto" es una clase de cmdlet que hereda de pscmdlet)

Prueba el Get-Location cmdlet. Debe ser la ubicación de ejecución actual del script, en lugar de la carpeta de inicio del host PowerShell.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top