Est-il possible d'exécuter une commande headlessly (dans un script bat) en tant qu'autre utilisateur sur Windows?
Je veux avoir un .chauve-souris de script exécuter une tâche particulière en tant qu'un autre utilisateur et exécuter headlessly (aucune intervention de l'utilisateur ou de l'invite est autorisé). Est-il un moyen de le faire avec un .chauve-souris de script? Veuillez noter que je suis contraint de ne pas utiliser PowerShell comme il n'est pas installé par défaut sur tous les systèmes d'exploitation Windows que nous devons soutenir.
Que j'ai considéré comme RUNAS dans mon script, mais apparemment il exige interactif d'entrée.
Sous Linux, l'équivalent de l'idiome est:
echo "Password" | sudo -S -u username "command"
Des suggestions pour Windows .chauve-souris scripts?
Mise à jour: je crois que vbscript est toujours disponible sur Windows, donc si purement headless solution est disponible via vbscript, alors c'est bon, aussi!
OriginalL'auteur fatbear | 2013-02-13
Vous devez vous connecter pour publier un commentaire.
Voici une autre alternative:
MODIFIER : Apparemment, qui ne permet pas l'authentification avec les informations d'identification distinctes sur la machine locale.
Il y a un moyen d'appeler
runas
avec vbscript et ont le vbscript envoyer le mot de passe de la console pour automatiser la saisie du mot de passe.Enregistrer que pour un
.vbs
de fichier et l'appel parcscript /nologo script.vbs
Si vous avez besoin d'exécuter à partir d'un script de commandes, il suffit de faire quelques créatif echos.
Si cela ne fonctionne pas pour vous, vous pouvez également utiliser psexec pour exécuter un programme avec des informations d'identification différentes.
La seule autre alternative, je pense, serait d'exécuter votre script par un groupe politique script de démarrage, ce qui permettrait d'exécuter le script à partir d'un compte système. J'ai aussi pensé à l'appeler à partir du registre
HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce
, mais je pense que cela pourrait se lancer dès le premier utilisateur qui se connecte après le redémarrage.User credentials cannot be used for local connections
Est-il un moyen de contourner cela?Vous pourriez essayer d'ajouter le
/node
argument.wmic /node:computername /user:adminuser /password:password process call create "cmd /c \"d:\\path\\program.exe\""
Modifier: Non, cela ne fonctionne pas non plus. Permettez-moi de jouer autour d'un peu et de voir ce que je peux venir avec.Je n'ai juste essayer d'ajouter de l' /node et a essayé à la fois complet et à court de noms d'hôtes pour le nom de l'ordinateur, mais j'ai toujours le même message d'erreur ci-dessus. Merci pour l'idée... est-il autre chose que je peux essayer? Viens de voir ton edit... GRÂCE à vous, peu importe ce qui se passe!
Il est grand et un hommage à vos compétences qui vous ont fourni de multiples solutions qui répondent à la question! Réponse à la Question! Merci beaucoup!
OriginalL'auteur rojo
runas est la bonne façon de le faire. Ajouter
/username user /savecred
la première fois que vous exécutez le lot, il vous demandera le mot de passe utilisateur et l'enregistrer alors, la prochaine fois, il sera exécuté avec les informations d'identification enregistréesOriginalL'auteur Loïc MICHEL
Essayer le
runas
commande.Vous pouvez enregistrer les informations d'identification avec
/savecred
, et ne pas avoir à entrer un autre temps.http://technet.microsoft.com/en-us/library/cc771525.aspx
OriginalL'auteur BernzSed