2010-06-06 13 views

Respuesta

-1

No puede. Al iniciar una sesión interactiva remota con enter-pssession, se carga un perfil remoto. Además, solo se carga el perfil de nivel de máquina en $ pshome. Si desea funciones remotas disponibles, deberá inicializarlas en el script de inicio de la configuración de la sesión remota. Eche un vistazo a get/set-pssessionconfiguration en el servidor remoto.

+0

¿Cambió algo en la forma en que se manejan estas cosas? Estoy con powershell 5.1 y creé un profile.ps1 en C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ solo para establecer un alias, que funciona cuando se usa el shell localmente. Pero cuando se conecta a esa máquina usando Enter-PSSession, el alias no funciona ... – Alex

+0

@Alex ¿Quizás necesite reiniciar el servicio WinRM en el extremo del servidor? Un reinicio debería hacerlo, pero si esto es un poco pesado, entonces "reinicio-servicio winrm" debería funcionar. O bien, las cosas pueden haber cambiado como dices ... – x0n

15

Por Jonz y x0n:

Cuando se utiliza PSSessions con las configuraciones de sesión por defecto, no hay secuencias de comandos para ejecutar perfil.

Al iniciar una sesión interactiva remota con Enter-PSSession, se carga un perfil remoto. Además, solo se carga el perfil de nivel de la máquina en $pshome.

Si quieres una sesión para ser preconfigurado (para cargar funciones personalizadas, complementos, módulos, etc.), añadir un script de perfil a un nuevo sessionconfiguration (para inicializar en el script de inicio de la configuración de sesión remota).

El cmdlet Register-PSSessionConfiguration crea y registra una nueva configuración de sesión en la computadora local. Use Get-PSSessionConfiguration para ver las configuraciones de sesión existentes. Tanto Get-PSSessionConfiguration como Register-PSSessionConfiguration requieren derechos elevados (inicie PowerShell con la opción "Ejecutar como administrador").

En el equipo de destino, donde profile.ps1 contiene todas sus funciones:

Register-PSSessionConfiguration -Name WithProfile -StartupScript $PsHome\Profile.ps1 

Para utilizar esta sesión preconfigurado debería escribir, desde el equipo local:

Enter-PSSession -ComputerName $computername -ConfigurationName WithProfile 

o

Enter-PSSession -ComputerName $computername -ConfigurationName WithProfile -Credential [email protected] 

(donde $computername es el nombre de host de la re mote server donde registró la configuración de la sesión de pssession).

Una buena fuente de conexión remota de PowerShell es el Administrator's Guide to Powershell Remoting.

Referencias:
Powershell Remoting: Use Functions loaded in Powershell remote Profile? http://jrich523.wordpress.com/2010/07/21/update-creating-a-profile-for-a-remote-session/

comprensión y el uso de PowerShell Perfiles
http://blogs.technet.com/b/heyscriptingguy/archive/2013/01/04/understanding-and-using-powershell-profiles.aspx

Las seis rutas de perfil de Windows PowerShell y utilizar diferentes

Uso actual r, anfitrión actual - consola
$ Inicio [Mi] Documentos \ WindowsPowerShell \ Profile.ps1

usuario actual, todos los hosts
$ Inicio [Mi] Documentos \ Profile.ps1

Todos Los usuarios, actual host - consola
$ PsHome \ Microsoft.PowerShell_profile.ps1

Todos los usuarios, todos los hosts
$ PsHome \ Profile.ps1

usuario actual, Current Host - ISE
$ Inicio [Mi] Documentos \ WindowsPowerShell \ Microsoft.PowerShellISE_profile.ps1

todos los usuarios, Current Host - ISE Microsoft.PowerShellISE_profile.ps1 Perfiles
$ PsHome \

de Windows PowerShell
http://msdn.microsoft.com/en-us/library/bb613488%28VS.85%29.aspx

Este perfil se aplica a todos los usuarios y todas las shells.
% windir% \ system32 \ WindowsPowerShell \ v1.0 \ profile.ps1

Este perfil se aplica a todos los usuarios, pero sólo en la cáscara Microsoft.PowerShell.
% windir% \ system32 \ WindowsPowerShell \ v1.0 \ Microsoft.PowerShell_profile.ps1

Este perfil se aplica sólo al usuario actual, sino que afecta a todas las conchas.
% USERPROFILE% \ Mis documentos \ WindowsPowerShell \ profile.ps1

Este perfil se aplica sólo al usuario actual y la cáscara Microsoft.PowerShell.
% USERPROFILE% \ Mis documentos \ WindowsPowerShell \ Microsoft.PowerShell_profile.ps1

+0

"Además, solo se carga el perfil de nivel de la máquina en $ pshome". ¿Ha cambiado esto en algún momento? Con Windows 8.1 y WIndoes Server 2012, Enter-PSSession no ejecuta ningún perfil de Powershell en la máquina de destino. –

+0

@GreenstoneWalker - Estoy viendo esto también. Con un servidor Win 2008 R2/PS 3.0. – smaglio81

+0

Si no desea depender de una versión o idioma de Windows específico, use: '[Environment] :: GetFolderPath ('MyDocuments')' – mtman

4

Jason, En mi caso, yo quería tener mi perfil Powershell sígame cuando Remoted en otro ordenador.

He creado una función de envoltura remota que toma un nombre de computadora, crea una sesión, carga su perfil en la sesión y usa enter-pssession.

Aquí es el código de abajo:

function Remote($computername){ 
if(!$Global:credential){ 
$Global:credential = Get-Credential 
} 
$session = New-PSSession -ComputerName $computername -Credential $credential 
Invoke-Command -FilePath $profile -Session $session 
Enter-PSSession -Session $session 
} 

Se podría modificar el parámetro de Invoke-Command -FilePath tomar cualquier archivo de su gusto.

Cuestiones relacionadas