2011-02-23 7 views
13

Así que prefieren no crear mi archivo de perfil aquí:

C:\Users\fmerrow\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 

quiero decir que no me malinterpreten, esto no es el fin del mundo y puedo vivir con ello. Sin embargo, me gusta mantener la raíz de "Mis documentos" razonablemente delgada y realmente preferiría no crear un directorio allí cada vez que empiece a usar una nueva aplicación.

He mirado alrededor buscando dónde se puede ocultar esta configuración, pero hasta ahora no hubo suerte. No parece estar en el registro ni en ninguno de los archivos $PsHome.

¿Tengo que aprender a vivir con esto? . . . o hay una forma de cambiar el valor de $ profile que se "pegará" en este sistema para siempre? Es decir, para cambiar el "valor predeterminado" de $profile?

Lo mejor que he pensado hasta ahora es ignorar $profile y en su lugar poner algún código en $profile.AllUsersAllHosts para buscar/ejecutar mi archivo desde donde quiero ponerlo en lugar de desde la ubicación predeterminada de $ perfil.

Comentarios y/u otras sugerencias dadas la bienvenida.

Frank

+1

Esto también se solicitó en Serverfault http://serverfault.com/questions/195397/change-the-powershell-profile-directory –

+0

Gracias por el puntero. . . aunque mirando, no veo una mejor solución allí que la que se ofrece a continuación. Aunque los motivos de los carteles son mucho más convincentes que los míos. . . En este caso, no es solo una preferencia. – Frank

+0

Así que has encontrado una solución, increíble. ¿Qué es $ profile.AllUsersAllHosts y cómo lo modifica? – flq

Respuesta

4

creo que la solución a la fuente de su "nuevo" perfil del perfil existente es probablemente lo mejor que vas a conseguir.

+0

$ profile.AllUsersAllHosts es entonces. Trataré de asegurarme de hacerlo de manera que no arruine a otros usuarios, solo en caso de que alguien más ejecute PowerShell en mi sistema. – Frank

+3

¡No puedo creer que MS haya codificado esta ubicación! ¿Cómo se supone que debemos mantener nuestro desarrollo separado de todo lo demás? –

+0

La respuesta de Root Loop a continuación fue capaz de resolver mi problema – Oberheim

16

Lo único que se me ocurre es "dot sourcing" de su perfil en la invocación de powershell.

Por ejemplo:

powershell -noprofile -noexit -command "invoke-expression '. ''C:\My profile location\profile.ps1''' " 

Al cambiar la secuencia de comandos que invocan-expresión de puntos de mando para que pueda realizar la "perfil" en cualquier lugar que desee. A continuación, cree un acceso directo que inicie PowerShell y establezca el destino en el comando anterior.

+0

También una solución, pero ¿quién quiere tener que escribir todo eso cada vez que invoco PowerShell? No es una buena solución a largo plazo y/o permanente. – Frank

+3

@Frank, es por eso que sugerí crear un acceso directo que pueda colocar en el escritorio o menú de inicio. – zdan

+2

Como referencia, un ticky doble ('') es la secuencia de escape para un ticky interior ticky único. Me llevó un segundo averiguar qué estaba pasando. –

7

uniones Trate de ejecutar este comando en PowerShell:

cmd /c mklink /J c:\Users\Name\Documents\WindowsPowerShell\ d:\Powershell\Engine\Profile\ 

Para obtener más información acerca de los cruces ver here.

+0

¡Esto funcionó para mí! Ni siquiera tuve que usar un cruce. Un simple directorio simbólico funcionó: 'mklink/D' –

3

También se puede poner el archivo de perfil aquí

C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1 

Si usted quiere tener un lugar separado para todos los perfiles y secuencias de comandos, puede modificar su archivo profile.ps1 anteriormente como

$profile = "NewLocation\profile.ps1" 
. $profile 

Asegúrese de que el tipo de perfil que utilice, ver detalles aquí

https://technet.microsoft.com/en-ca/library/dd819434.aspx

1

Según el artículo de Scripting Guy Understanding the Six PowerShell Profiles, $profile se amplía desde $PsHome\Microsoft.PowerShell_profile.ps1; $pshome es el directorio de instalación de powershell y una variable de solo lectura; de acuerdo con una publicación en el hilo this, Microsoft nos dice que esto no se puede cambiar.

+0

¿Por qué el downvote? – Yevgeniy

+0

He votado en sentido ascendente porque creo que esto es relevante, pero solo los perfiles 'AllUsers' se derivan de' pshome'. El único OP que le interesa se deriva de '$ Home \ [My] Documents \', como se indica aquí: https://blogs.technet.microsoft.com/heyscriptingguy/2012/05/21/understanding-the-six- perfiles powershell / – VillasV

0

Esto podría ser más como una solución alternativa, pero lo que hice fue crear una copia de enlace simbólico del directorio de WindowsPowerShell en la ubicación que estaba mirando PowerShell. Sin embargo, esta es más una técnica de banda.

0

Puede cambiar sus $Profile.CurrentUser* caminos cambiando la ruta de la carpeta personal Environment.GetFolderPath(Environment.SpecialFolder.Personal)

De cualquier vía regedit

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ User Shell Folders

Bajo el nombre seleccione Personal columna y cambie el valor a donde desee su perfil.

O vía PowerShell

New-ItemProperty 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders' Personal -Value 'Your New Path Here' -Type ExpandString -Force

Tienes que reiniciar para que esto tenga efecto.

Cuestiones relacionadas