Powershell Remoting Profils
-
24-10-2019 - |
Question
Comment puis-je utiliser une fonction dans mon profil sur la machine distante lors de l'utilisation Enter-PSSession
sur ma machine locale pour ouvrir une session PowerShell à distance.
La solution
Vous ne pouvez pas. Lors du démarrage d'une session interactive à distance avec enter-pssession, un profil à distance est chargé. En outre, seul le profil de niveau machine $ pshome est chargé. Si vous voulez que les fonctions à distance disponibles, vous devrez les initialiser dans le script de démarrage de la configuration de session à distance. Jetez un oeil à get / set-PSSessionConfiguration sur le serveur distant.
Autres conseils
Par jonz et x0n:
Lorsque vous utilisez PSSession avec les configurations de session par défaut, pas de scripts de profil exécuté.
Lors du démarrage d'une session interactive à distance avec
Enter-PSSession
, un profil à distance est chargé. En outre, seul le profil de niveau machine$pshome
est chargée.
Si vous voulez une session à préconfiguré (à la charge des fonctions personnalisées, modules, etc.-ins composant logiciel enfichable), ajouter un script de profil à un nouveau sessionconfiguration (pour initialize eux dans le script de démarrage de la configuration de session à distance).
Le Register-PSSessionConfiguration cmdlet crée et enregistre une nouvelle session configuration sur l'ordinateur local. Utilisez Get-PSSessionConfiguration pour afficher les configurations de session existantes. Les deux Get-PSSessionConfiguration et Register-PSSessionConfiguration exigent des droits élevés (début PowerShell avec l'option « Exécuter en tant qu'administrateur »).
Dans l'ordinateur cible, où profile.ps1
contient toutes vos fonctions:
Register-PSSessionConfiguration -Name WithProfile -StartupScript $PsHome\Profile.ps1
Pour utiliser cette session préconfiguré vous tapez, à partir de l'ordinateur local:
Enter-PSSession -ComputerName $computername -ConfigurationName WithProfile
ou
Enter-PSSession -ComputerName $computername -ConfigurationName WithProfile -Credential youradminuser@yourtargetdomain
(où $computername
est le nom d'hôte du serveur distant où vous avez enregistré le PSSessionConfiguration).
Une bonne source sur PowerShell Remoting est le Guide de l'administrateur de Powershell Remoting .
Références: Powershell Remoting: Utiliser des fonctions chargées dans Powershell profil distant http: // jrich523 .wordpress.com / 2010/07/21 / update-création-un-profil-pour-une-distance Session /
Comprendre et utiliser les profils PowerShell http: // blogs.technet.com/b/heyscriptingguy/archive/2013/01/04/understanding-and-using-powershell-profiles.aspx
about_Profiles (Microsoft Docs) https://docs.microsoft.com/ fr-fr / Powershell / module / Microsoft.PowerShell.Core / about / about_Profiles
Les six différents chemins de profil Windows PowerShell et utilisation
Utilisateur actuel, hôte actuel - console $ Accueil [Mon] Documents \ WindowsPowerShell \ Profile.ps1
Utilisateur actuel, tous les hôtes $ Accueil [Mon] Documents de Profile.ps1
Tous les utilisateurs, Current Host - Console $ PsHome \ Microsoft.PowerShell_profile.ps1
Tous les utilisateurs, Tous les hôtes $ PsHome \ Profile.ps1
Utilisateur actuel, hôte actuel - ISE $ Accueil [Mon] Documents \ WindowsPowerShell \ Microsoft.PowerShellISE_profile.ps1
Tous les utilisateurs, Current Host - ISE $ PsHome \ Microsoft.PowerShellISE_profile.ps1
Windows PowerShell Profils http://msdn.microsoft.com/ fr-fr / bibliothèque / bb613488% 28VS.85% 29.aspx
Ce profil s'applique à tous les utilisateurs et toutes les coquilles. % Windir% \ system32 \ WindowsPowerShell \ v1.0 \ profile.ps1
Ce profil s'applique à tous les utilisateurs, mais seulement à la coquille Microsoft.PowerShell. % Windir% \ system32 \ WindowsPowerShell \ v1.0 \ Microsoft.PowerShell_profile.ps1
Ce profil applique uniquement à l'utilisateur actuel, mais affecte toutes les coquilles. % UserProfile% \ Mes documents \ WindowsPowerShell \ profile.ps1
Ce profil applique uniquement à l'utilisateur actuel et le shell Microsoft.PowerShell. % UserProfile% \ Mes documents \ WindowsPowerShell \ Microsoft.PowerShell_profile.ps1
PowerShell Profils de base https://docs.microsoft.com/ fr-fr / Powershell / module / Microsoft.PowerShell.Core / about / about_Profiles
Ce profil s'applique à tous les utilisateurs et tous les hôtes. $ Env: ProgramFiles \ PowerShell \ 6 \ profile.ps1
Ce profil s'applique à tous les utilisateurs, mais seulement sur la machine hôte. $ Env: ProgramFiles \ PowerShell \ 6 \ Microsoft.PowerShell_profile.ps1
Ce profil applique uniquement à l'utilisateur actuel, mais affecte tous les hôtes. $ Env: USERPROFILE \ Documents \ PowerShell \ profile.ps1
Ce profil applique uniquement à l'utilisateur actuel et le shell Microsoft.PowerShell. $ Env: USERPROFILE \ Documents \ PowerShell \ Microsoft.PowerShell_profile.ps1
Jason, Dans mon cas, je voulais avoir mon profil Powershell me suivre quand je télécommandables dans un autre ordinateur.
J'ai créé une fonction d'emballage à distance qui prend une computername, crée une session, charge votre profil dans la session, et les utilisations Enter-PSSession.
Voici le code ci-dessous:
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
}
vous pouvez modifier le paramètre -FilePath Invoke-Command pour prendre un fichier de votre goût.
jeter un oeil à cette
http: // jrich523.wordpress.com/2010/07/08/creating-a-profile-for-a-remote-session/
est un travail autour de la création d'un profil à distance.
Il y a une autre façon d'utiliser un profil sur une session à distance:
- Copiez le profil choisi au serveur distant (s) dans le dossier de vos documents. Par exemple:
Copy-Item -Path $profile.CurrentUserAllHosts -Destination \\computername\C$\Users\MyAccountName\Documents
- Entrez le PSSession
Enter-PSSession -ComputerName ComputerName
- Dot source de votre profil
. .\Profile.ps1
inconvénients de cette solution:
- vous devez copier une fois que votre profil à tous les ordinateurs sur lesquels vous voulez avoir un profil
- vous devez localiser les points sur le profil chaque fois que vous entrez dans un PSSession
Les avantages de cette solution:
- Il n'y a pas besoin de la fonction et vous suffit d'entrer un PSSession comme vous le faites toujours
- Vous ne modifie pas le profil de tous les utilisateurs en changer la configuration de la session par défaut
(Merci Jeffery Hicks pour la pointe sur le point d'approvisionnement )