Contexte
J'ai les composants suivants :
- Un boîtier Windows Server 2008 R2
- Un compte administrateur (le mien)
- Un compte de service sur le domaine qui est un administrateur de la boîte.
- Une installation de Putty (incluant plink pour la ligne de commande et Pageant pour la génération de la clé publique ssh)
- Un fichier texte pour les commandes à utiliser pendant une session SSH
- Un script powershell qui exécute plink qui utilise Start-Process pour invoquer plink avec des lignes de commande qui lui disent d'utiliser Ageant pour la connexion PuTTy et commands.txt pour la commande.
- Une tâche planifiée qui s'exécute sous mon compte utilisateur
L'objectif
Finalement, pour que la tâche planifiée s'exécute en tant que compte de service, qui appelle powershell en tant que compte de service, qui exécute le processus et réalise les commandes ssh.
Le problème
- Lorsque je lance ce script à partir d'une invite de commande powershell en tant que mon compte utilisateur, il s'exécute.
- Lorsque j'exécute ce script à partir d'une tâche planifiée en tant que mon compte d'utilisateur, avec les permissions les plus élevées, et que je lui demande d'enregistrer mes informations d'identification, il "ne s'exécute pas".
- Par "ne s'exécute pas", je veux dire qu'il semble lancer une instance de plink.exe, qui est l'endroit où je pense que le problème se produit (quelque chose de suspendu que je ne peux pas voir sur la console).
Questions
- Quelqu'un a-t-il une solution globale un peu plus élégante, mais qui utilise les mêmes outils ou des outils similaires ?
- Est-ce que mon script powershell doit plutôt invoquer cmd.exe pour que je puisse capturer le stdout dans mon fichier journal au moins ?
Le script
Au cas où ça aiderait :
#Starts the vcenter2 server.
#if the server is already started, it will tell you so.
#Stop an error from occurring when a transcript is already stopped
$ErrorActionPreference="SilentlyContinue"
Stop-Transcript | out-null
#Reset the error level before starting the transcript
$ErrorActionPreference="Continue"
Start-Transcript -path C:\Scripts\logs\StartTheVCenter2Server.log -append
#Run plink and reference the commands file to start up the server
Start-Process "C:\Program Files (x86)\PuTTY\plink.exe" -Argumentlist "-agent -m C:\Scripts\idrac_powerup_commands.txt root@[servernameredacted]" -wait -RedirectStandardOutput "C:\Scripts\logs\plinklog.log"
#Clean-up
Stop-Transcript
Réflexions ? Je vais probablement jouer avec Invoke-Command pour voir si je peux obtenir la redirection de la sortie dans mon journal au moins.
Gracias.