¿Cómo se configura el directorio predeterminado de PowerShell?


Respuestas:


61

Puede especificar el directorio para abrir al iniciar PowerShell:

powershell.exe -NoExit -command "& {Set-Location $env:systemroot}"

Úselo en su atajo.

O use un perfil para establecer un directorio de inicio.


5
Para PS Core:pwsh.exe -WorkingDirectory C:\YourLocation\Goes\Here
Sergey Zykov

"C: \ Archivos de programa \ PowerShell \ 6 \ pwsh.exe" -WorkingDirectory D: \ test
cem kaan

179

Cree un perfil de PowerShell de la siguiente manera.

  1. Ejecute PowerShell como administrador y ejecute el siguiente comando:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

    Esto permitirá que PowerShell ejecute scripts locales y scripts descargados de Internet que hayan sido firmados. Lea más sobre este comando en la documentación .

  2. En su Documentscarpeta, busque una carpeta con el nombre WindowsPowerShellde PowerShell clásico o PowerShellde PowerShell Core más nuevo. Si no existe, está bien; solo créalo.

  3. Cree un nuevo archivo con el nombre profile.ps1en la WindowsPowerShellcarpeta (o PowerShellpara PowerShell Core).
  4. Abra profile.ps1y agregue el siguiente comando para configurar su directorio de trabajo predeterminado:

    Set-Location C:\my\default\working\directory
  5. Abra una nueva ventana de PowerShell ... los cambios deberían haber surtido efecto.


1
Intenté esto, pero get "profile.ps1 no se puede cargar porque la ejecución de scripts está deshabilitada". ¿Existe una forma "segura" de habilitar scripts seguros?
John Little

3
Ejecute esto: "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned" Puede leer sobre esto aquí: technet.microsoft.com/en-us/library/ee176961.aspx No permite que los scripts descargados de Internet se ejecuten a menos que provengan de una fuente.
LLL

7
Esta es una forma realmente mala de hacerlo porque si tiene un script de compilación, por ejemplo (como un script de compilación de Visual Studio) y desea ejecutar un comando ps, entonces el directorio de trabajo del comando se establecerá en esa ubicación, por lo que básicamente funcionará romper todos los scripts usando PowerShell comopowershell -File "myscript.ps1"
Santhos

2
Si esa es una mala opción, ¿hay una forma mejor o más segura de hacerlo?
Adam_G

4
Déjame corregirme. Al escribir scripts de PowerShell, por ejemplo, para compilar, siempre use la opción -NoProfile comopowershel -NoProfile -File "myscript.ps1"
Santhos

33

Probé las respuestas anteriores en Windows Server 2016 sin éxito.

Pero encontré que este enfoque (debería ser el mismo para Windows 10) funcionó para mí.

  1. Iniciar una sesión de PowerShell
  2. En la barra de tareas, haga clic con el botón derecho y fije para mantener un enlace allí
  3. De nuevo, haga clic con el botón derecho en el icono de la barra de tareas y luego haga clic con el botón derecho en Windows PowerShell y elija Propiedades
  4. Ingrese su directorio preferido en el campo de entrada Comenzar en: y presione OK
  5. Comience desde el icono de la barra de tareas

¡Hecho!

En el mismo cuadro de diálogo Propiedades , también puede cambiar muchas otras configuraciones como fuentes, colores, tamaños y en la pestaña Acceso directo a través del botón Advanced. Puede seleccionar si esa sesión de PowerShell se ejecutará con privilegios de administrador.


5
Cambiar el directorio de trabajo no parece funcionar cuando revisa Run as administratorel .lnkmenú avanzado. La solución parece estar aquí stackoverflow.com/questions/31622469/…
Santhos

Eso es extraño, porque funciona aquí. Acabo de probar cambiando el directorio y cambiando la Run as aministratorcasilla de verificación de un lado a otro.
neongrau

Funciona de maravilla. Gracias.
Yasser Shaikh

12

Una forma más sencilla de establecer el directorio predeterminado es la siguiente:

  1. Haga clic con el botón derecho en el icono de Windows PowerShell y anclar a Inicio
  2. Haga clic con el botón derecho en el icono de Windows PowerShell en Inicio, y nuevamente haga clic con el botón derecho en Windows PowerShell y seleccione Propiedades (no Ejecutar como administrador y no Windows PowerShell ISE )

    Ingrese la descripción de la imagen aquí

    1. En la pestaña Acceso directo -> campo 'Comenzar en', cambie a la ubicación en la que desea que PowerShell comience.

    Ingrese la descripción de la imagen aquí


Oh, gracias, me gusta esta respuesta. Me ayudó a entender por qué y qué directorio se establecía como "predeterminado". Creo que esta solución también reduce ligeramente el tiempo y el costo de carga del perfil (no estoy seguro de si es cierto o no, pero se siente así).
Jennings

4

Poner Set-Locationen su perfil cambiará incondicionalmente el directorio de trabajo actual, lo que podría tener consecuencias no deseadas con respecto al directorio de trabajo para los scripts que ejecuta a través de "ejecutar con PowerShell".

Una solución alternativa es cambiar el directorio de trabajo de los .lnkarchivos a PowerShell que generalmente se encuentra en %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell. Haga clic con el botón derecho en un enlace y cambie el directorio de trabajo %HOMEDRIVE%%HOMEPATH%del directorio que desee.


1
Cambiar el directorio de trabajo no parece funcionar cuando revisa Run as administratorel .lnkmenú avanzado. La solución parece estar aquí stackoverflow.com/questions/31622469/…
Santhos

Esta es la mejor solución (para mí, al menos).
Anders Arpi

Es por eso que los scripts deben usar la -NoProfileopción como powershell -NoProfile -File "myscript.ps1"
Santhos


3

En lugar de cambiar incondicionalmente el directorio de trabajo como se menciona en las respuestas anteriores, puede escribir una función simple en el perfil de PowerShell para usarla Set-Locationpara cambiar rápidamente el directorio de trabajo cuando sea necesario.

Consulte la respuesta de Jeremy Danyow para crear / modificar un perfil de PowerShell.

Agregue una (s) función (es) a su perfil de PowerShell:

function goto_this {set-location 'your\path\to\some\dir'}
function goto_that {set-location 'your\path to some\dir with space'}

Simplemente cambie el nombre de la función y el directorio al que apunta. El uso de comillas en la ruta es obligatorio si contiene espacios. Intento mantener el prefijo, goto_ya que ayuda a recordar los nombres de las funciones.

Puede comenzar a escribir y goto_luego presionar TAB para recorrer todas las funciones agregadas (recuerde iniciar una nueva ventana de PowerShell después de agregar / modificar funciones).


1

Usando solo la línea de comando, si un archivo ya existe, se agregará a él:

$(if (-Not (Test-Path ~\Documents\WindowsPowerShell\)){ mkdir ~\Documents\WindowsPowerShell\}) ; echo "Set-Location c:\THELOCATIONYOUWANT" >> ~\Documents\WindowsPowerShell\profile.ps1

1

Con eso, parece haber cierta confusión sobre el "directorio de trabajo" y la "ubicación" de PowerShell. Lo que la mayoría de la gente aquí está haciendo y diciendo es cambiar la "ubicación" de PowerShell. El "directorio de trabajo" es realmente diferente. Aquí hay un artículo que lo explica.

Para aquellos que no quieren leer el artículo: Abra PowerShell y use lo que otros han dicho que haga Set-Location "C:\some\directory". Tenga en cuenta que su "directorio de trabajo" todavía está donde se abrió su PowerShell. Ya sea "~"o "%SYSTEMROOT%\system32"dependiendo de si se ejecutó como administrador o no. Para verificar el directorio de trabajo, use [Environment]::CurrentDirectory.

Nota: en el artículo, el autor dice que verifique el "directorio de trabajo" usando este comando:

\[Environment\]::CurrentDirectory

No estoy seguro de si esto funciona con versiones anteriores de PowerShell, pero con PowerShell 5 (y posterior) debe usar [Environment]::CurrentDirectory.


0

Haga que esta sea la primera línea en su Profile.ps1 y PowerShell Core (pwsh) se abrirá en el directorio en el que está trabajando actualmente:

set-location (obtener-ubicación) .path


0

Salida de escritura "Establecer ubicación C: \" >> $ perfil


0

Esta solución establece la carpeta de trabajo actual en la ubicación donde se encuentra el script. Asegúrese de colocarlo al principio de su secuencia de comandos, o al menos antes de intentar usar el comando basándose en la ruta de ubicación.

Set-Location (Split-Path $MyInvocation.MyCommand.Path)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.