2013-08-05 3 views
8

Lors de l'exécution de commandes d'accès distant telles que Enable-PsSession, Invoke-command etc., nous devons fournir des informations d'identification avec ces commandes.Powershell Remoting avec informations d'identification

Je ne souhaite pas fournir les informations d'identification chaque fois que j'exécute la commande.

Dire aussi que j'ai stocké le nom d'utilisateur dans la variable & en utilisant la variable lors de l'exécution de la commande. Je veux faire ça pour le mot de passe aussi. Est-ce que je pourrais faire ça?

Par exemple:

Invoke-Command -ComputerName mycomputer -ScriptBlock { Get-ChildItem C:\ } -credential mydomain\administrator 

Voici donc je fournirai le mot de passe à chaque fois lors de l'exécution de ces commandes.

Comment les commandes doivent-elles prendre le nom d'utilisateur & mot de passe automatiquement soit à partir de la variable & un autre mécanisme?

Répondre

13

Vous pouvez faire:

$cred = get-credential #fill you credential in the pop-up window 

puis:

Invoke-Command -ComputerName mycomputer -ScriptBlock { Get-ChildItem C:\ } -credential $cred 

Rappelez-vous que le mot de passe $cred est facilement récupérable en texte clair!

2

Powershell utilisera par défaut les informations d'identification de l'utilisateur exécutant la session powershell, si aucune n'est explicitement spécifiée. Par conséquent, si vous exécutez Powershell en tant qu'utilisateur avec des privilèges d'administration sur l'ordinateur distant, vous n'avez pas besoin d'entrer les informations d'identification lors de l'exécution des commandes.

Ce que vous pouvez faire est que vous pouvez créer une tâche planifiée avec des informations d'identification stockées pour un compte de service, et permettre aux utilisateurs (ou à vous-même) l'accès pour exécuter la tâche.

http://blogs.technet.com/b/heyscriptingguy/archive/2011/01/12/use-scheduled-tasks-to-run-powershell-commands-on-windows.aspx

Ou vous pouvez stocker des informations d'identification dans le gestionnaire d'identification Windows, ce qui signifie qu'ils sont cryptées à l'aide de votre utilisateur Windows.

https://gist.github.com/toburger/2947424

Cependant, avec la solution de gestion des titres de compétences, tout utilisateur peut exécuter des scripts dans votre contexte sera en mesure d'extraire le mot de passe en texte clair.

Ce n'est pas un problème cependant, si vous ne l'utilisez que pour vous-même, ou si chaque administrateur exécutant les scripts le fait à partir de son propre contexte utilisateur.

3

Chiffrez tout. Créez un objet appelant l'information déchiffrée comme mot de passe. Utilisez-le comme ça:

read-host -assecurestring | convertfrom-securestring | out-file C:\localdrivespace\username-password-encrypted.txt 
$username = "domain\username" 
$password = cat C:\localdrivespace\username-password-encrypted.txt | convertto-securestring 
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password 
Questions connexes