Come utilizzare una funzione nel mio profilo sulla macchina remota quando si utilizza Enter-PSSession
sul computer locale per aprire una sessione remota di PowerShell.Profili remoti PowerShell
risposta
Non è possibile. Quando si avvia una sessione interattiva remota con enter-pssession, viene caricato un profilo remoto. Inoltre, viene caricato solo il profilo a livello macchina in $ pshome. Se si desidera disporre di funzioni remote, è necessario inizializzarle nello script di avvio della configurazione della sessione remota. Dai un'occhiata a get/set-pssessionconfiguration sul server remoto.
È cambiato qualcosa nel modo in cui vengono gestite queste cose? Sono con powershell 5.1 e ho creato un profile.ps1 in C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ solo per impostare un alias, che funziona quando si utilizza la shell localmente. Ma quando ci si connette a quella macchina usando Enter-PSSession, l'alias non funziona ... – Alex
@Alex Forse potrebbe essere necessario riavviare il servizio WinRM sul server? Un riavvio dovrebbe farlo, ma se questo è un po 'pesante, allora "restart-service winrm" dovrebbe funzionare. Oppure, le cose potrebbero essere cambiate come dici tu ... – x0n
un'occhiata a questo
http://jrich523.wordpress.com/2010/07/08/creating-a-profile-for-a-remote-session/
suo un lavoro in giro per la creazione di un profilo remoto.
Con Jonz e x0n:
Quando si utilizzano sessioni PSSession con le configurazioni di sessione di default, nessuno script profilo di esecuzione.
All'avvio di una sessione interattiva remota con
Enter-PSSession
, viene caricato un profilo remoto. Inoltre, viene caricato solo il profilo a livello macchina in$pshome
.
Se si desidera una sessione per essere preconfigurato (per caricare funzioni personalizzate, snap-in, moduli, ecc), aggiungere uno script profilo per un nuovo sessionconfiguration (per loro inizializzazione nello script di avvio del configurazione della sessione remota).
Il cmdlet Register-PSSessionConfiguration crea e registra una nuova configurazione di sessione sul computer locale. Utilizzare Get-PSSessionConfiguration per visualizzare le configurazioni di sessione esistenti. Sia Get-PSSessionConfiguration che Register-PSSessionConfiguration richiedono diritti elevati (avviare PowerShell con l'opzione "Esegui come amministratore").
Nel computer di destinazione, dove profile.ps1
contiene tutte le funzioni:
Register-PSSessionConfiguration -Name WithProfile -StartupScript $PsHome\Profile.ps1
Per utilizzare questa sessione preconfigurato è necessario digitare, dal computer locale:
Enter-PSSession -ComputerName $computername -ConfigurationName WithProfile
o
Enter-PSSession -ComputerName $computername -ConfigurationName WithProfile -Credential [email protected]
(dove $computername
è il nome host del re mote server in cui è stata registrata la pssessionconfiguration).
Una buona fonte sul servizio remoto di PowerShell è Administrator's Guide to Powershell Remoting.
Riferimenti:
Powershell Remoting: Use Functions loaded in Powershell remote Profile? http://jrich523.wordpress.com/2010/07/21/update-creating-a-profile-for-a-remote-session/
comprensione e l'utilizzo PowerShell profili
http://blogs.technet.com/b/heyscriptingguy/archive/2013/01/04/understanding-and-using-powershell-profiles.aspx
I sei diversi percorsi profilo di Windows PowerShell e utilizzare
Pagina corrente r, host corrente - console
$ HOME [My] Documenti \ WindowsPowerShell \ Profile.ps1
Utente corrente, tutti gli host
$ HOME [mio] Documenti \ Profile.ps1
Tutto Gli utenti, host corrente - console
$ PsHome \ Microsoft.PowerShell_profile.ps1
Tutti gli utenti, tutti gli host 012.380.073.162. $ PsHome \ Profile.ps1
Utente corrente, host corrente - ISE
$ casa [mio] Documenti \ WindowsPowerShell \ Microsoft.PowerShellISE_profile.ps1
tutti gli utenti, host corrente - ISE
$ PsHome \ Profiles Microsoft.PowerShellISE_profile.ps1
di Windows PowerShell
http://msdn.microsoft.com/en-us/library/bb613488%28VS.85%29.aspx
Questo profilo si applica a tutti gli utenti e tutte le shell.
% windir% \ system32 \ WindowsPowerShell \ v1.0 \ Profile.ps1
Questo profilo si applica a tutti gli utenti, ma solo alla shell Microsoft.PowerShell.
% windir% \ system32 \ WindowsPowerShell \ v1.0 \ Microsoft.PowerShell_profile.ps1
Questo profilo è valida solo per l'utente corrente, ma riguarda tutte le shell.
% USERPROFILE% \ Documenti \ WindowsPowerShell \ Profile.ps1
Questo profilo si applica solo per l'utente corrente e la shell Microsoft.PowerShell.
% UserProfile% \ Documenti \ WindowsPowerShell \ Microsoft.PowerShell_profile.ps1
"Inoltre, viene caricato solo il profilo a livello macchina in $ pshome." Questo è cambiato ad un certo punto? Con Windows 8.1 e WIndoes Server 2012, Enter-PSSession non esegue alcun profilo PowerShell sul computer di destinazione. –
@GreenstoneWalker - Sto vedendo anche questo. Con un server Win 2008 R2/PS 3.0. – smaglio81
Se non vuoi dipendere da una specifica versione o lingua di Windows, usa: '[Ambiente] :: GetFolderPath ('MyDocuments')' – mtman
Jason, Nel mio caso, ho voluto avere il mio profilo PowerShell seguire me quando sono comandate a distanza in un altro computer.
Ho creato una funzione wrapper Remote che accetta un nomecomputer, crea una sessione, carica il profilo nella sessione e utilizza enter-pssession.
Ecco il codice qui sotto:
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
}
Si potrebbe modificare il parametro Invoke-Command -FilePath di prendere qualsiasi tipo di file di vostro gradimento.
qualsiasi soluzione finale con codice sorgente completo? – Kiquenet