-1

Je lance par programme une instance Google Cloud Compute exécutant Windows Server 2016 avec un script de démarrage.PSExec sur le script de démarrage de Windows Server

L'exécutable dans le script de démarrage doit être lancé en tant qu'utilisateur spécifique, donc je suis en train de le lancer avec psexec pour simuler ledit utilisateur:

C:/psexec.exe \\\\WIN-SERVER-2016 -u WIN-SERVER-2016\\customuser -p custompassword -accepteula -w "c:/app" cmd /c node index.js

c:/app/index.js contient un monde simple bonjour , qui devrait écrire dans un fichier.

Si je me connecte en tant qu'utilisateur et lance cette commande exacte à partir de cmd, le fichier est écrit. Le lancement à partir du script de démarrage (fourni sous la forme windows-startup-script-cmd dans l'instance Google Cloud Compute Engine) n'entraîne aucun fichier écrit.

Quelle pourrait être la solution? Existe-t-il un moyen plus efficace d'exécuter un script de démarrage en tant qu'utilisateur spécifique?

+0

Créez une tâche planifiée à exécuter au démarrage. –

+0

@AnsgarWiechers J'ai déjà une tâche en cours au démarrage. Il n'exécute pas correctement psexec. – Dean

+0

Alors pourquoi auriez-vous besoin de 'psexec'? Configurez simplement la tâche à exécuter en tant que votre utilisateur personnalisé. –

Répondre

1

En regardant le problème, je ne vous recommanderais pas d'utiliser PSEXEC. NOrmalement, nous utilisons PSExec pour appeler une interface graphique dans le système distant que PS ne prend pas en charge par natif.

Dans votre cas, je vous suggère d'exécuter en utilisant le Invoke-Command

Quelque chose comme ceci:

$username = 'WIN-SERVER-2016\customuser' 
$password = "custompassword" 
$secstr = New-Object -TypeName System.Security.SecureString 
$password.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)} 
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $secstr 

$Script_block = {cmd /c node index.js} 

Invoke-Command -ComputerName WIN-SERVER-2016 -Credential $cred -ScriptBlock $Script_block 

Cela devrait également prendre de la clé de métadonnées si vous êtes en utilisant windows-startup-script-cmd

Note: Je n'ai pas considéré le accepteula -w "c:/app" partie. Veuillez incorporer les espaces réservés en conséquence.

Espérons que ça aide ... !!!

+0

Je n'ai jamais utilisé Powershell auparavant. Est-ce un script Powershell que je suis supposé charger en tant que script de démarrage de l'instance? Cela semble très utile, merci! – Dean

+0

Oui, c'est un powershell. vous pouvez l'exécuter dans PowerSell ISE .. Allez à Exécuter> tapez Powershell_ise .. Il va ouvrir –

+0

@Dean: Accepter la réponse aussi si elle vous aide. –