Je souhaite redémarrer un ordinateur distant appartenant à un domaine. J'ai un compte administrateur mais je ne sais pas comment l'utiliser depuis PowerShell.
Je sais qu'il existe une Restart-Computer
applet de commande et que je peux transmettre des informations d'identification, mais si mon domaine est par exemple mydomain
, mon nom d'utilisateur est myuser
et mon mot de passe est mypassword
la bonne syntaxe pour l'utiliser?
J'ai besoin de planifier le redémarrage pour ne pas avoir à taper le mot de passe.
powershell
powershell-remoting
tout regarde sur moi
la source
la source
Réponses:
Le problème avec
Get-Credential
est qu'il demandera toujours un mot de passe. Il existe cependant un moyen de contourner cela, mais cela implique de stocker le mot de passe sous forme de chaîne sécurisée sur le système de fichiers.L'article suivant explique comment cela fonctionne:
En résumé, vous créez un fichier pour stocker votre mot de passe (sous forme de chaîne cryptée). La ligne suivante demandera un mot de passe, puis le stockera
c:\mysecurestring.txt
sous forme de chaîne cryptée. Vous ne devez le faire qu'une seule fois:Partout où vous voyez un
-Credential
argument sur une commande PowerShell, cela signifie que vous pouvez passer unPSCredential
. Donc dans votre cas:Vous aurez peut-être besoin d'une
-Authentication
valeur de commutation différente car je ne connais pas votre environnement.la source
ConvertTo-SecureString "password" -AsPlainText -Force
.$password = ConvertTo-SecureString "password" -AsPlainText -Force
Il y a un autre moyen, mais ...
NE FAITES PAS CELA SI VOUS NE VOULEZ PAS VOTRE MOT DE PASSE DANS LE FICHIER SCRIPT (Ce n'est pas une bonne idée de stocker les mots de passe dans des scripts, mais certains d'entre nous aiment simplement savoir comment.)
Ok, c'était l'avertissement, voici le code:
$cred
aura les informations d'identification de John Doe avec le mot de passe "ABCDEF".Autre moyen de préparer le mot de passe à l’utilisation:
la source
En ce qui concerne le stockage des informations d'identification, j'utilise deux fonctions (qui sont normalement dans un module chargé à partir de mon profil):
Et celui-là:
Vous l'utilisez comme ceci:
Si le fichier d'informations d'identification n'existe pas, vous serez invité la première fois, à ce stade, il stockera les informations d'identification dans une chaîne cryptée dans un fichier XML. La deuxième fois que vous exécutez cette ligne, le fichier xml est là et sera ouvert automatiquement.
la source
Je dois exécuter les fonctions SCOM 2012 à partir d'un serveur distant qui nécessite des informations d'identification différentes. J'évite les mots de passe en texte clair en passant la sortie d'une fonction de décryptage de mot de passe en entrée de ConvertTo-SecureString. Pour plus de clarté, cela n'est pas montré ici.
J'aime taper fortement mes déclarations. La déclaration de type pour $ strPass fonctionne correctement.
la source
Voici deux façons de procéder, si vous planifiez le redémarrage.
Tout d'abord, vous pouvez créer une tâche sur une machine à l'aide des informations d'identification disposant des droits nécessaires pour se connecter et redémarrer une autre machine. Cela rend le planificateur responsable du stockage sécurisé des informations d'identification. La commande de redémarrage (je suis un gars Powershell, mais c'est plus propre.) Est:
SHUTDOWN /r /f /m \\ComputerName
La ligne de commande pour créer une tâche planifiée sur la machine locale, pour en redémarrer une autre à distance, serait:
SCHTASKS /Create /TN "Reboot Server" /TR "shutdown.exe /r /f /m \\ComputerName" /SC ONCE /ST 00:00 /SD "12/24/2012" /RU "domain\username" /RP "password"
Je préfère la deuxième méthode, où vous utilisez vos informations d'identification actuelles pour créer une tâche planifiée qui s'exécute avec le compte système sur une machine distante.
SCHTASKS /Create /TN "Reboot Server" /TR "shutdown.exe /r /f" /SC ONCE /ST 00:00 /SD "12/24/2012" /RU SYSTEM /S ComputerName
Cela fonctionne également via l'interface graphique, entrez simplement SYSTEM comme nom d'utilisateur, en laissant les champs de mot de passe vides.
la source
Soyez très prudent avec le stockage des mots de passe de cette façon ... ce n'est pas aussi sûr que ...
la source
J'ai vu un exemple qui utilise Import / Export-CLIXML.
Ce sont mes commandes préférées pour le problème que vous essayez de résoudre. Et le moyen le plus simple de les utiliser est.
Donc, si le fichier n'existe pas localement, il demandera les informations d'identification et les stockera. Cela prendra un
[pscredential]
objet sans problème et masquera les informations d'identification en tant que chaîne sécurisée.Enfin, utilisez simplement les informations d'identification comme vous le faites normalement.
Remarque sur la sécurité :
Stockez en toute sécurité les informations d'identification sur le disque
Edit: Relisez simplement la question d'origine. Ce qui précède fonctionnera tant que vous avez initialisé le
[pscredential]
sur le disque dur. C'est si vous déposez cela dans votre script et exécutez le script une fois qu'il créera ce fichier, puis exécuter le script sans assistance sera simple.la source
Solution
Pour les machines de construction
Dans le code précédent, remplacez les valeurs de nom d'utilisateur et de mot de passe par des variables d'environnement secrètes ("cachées des journaux") de votre machine de construction
Résultats des tests par
et tu verras
la source
pourquoi n'essayez-vous pas quelque chose de très simple?
utilisez psexec avec la commande 'shutdown / r / f / t 0' et une liste de PC de CMD.
la source