Question Reprendre le script sur autre session après reboot

Plus d'informations
il y a 9 ans 1 mois #23142 par Brice
Bonjour à tous,:)
j'ai un script qui doit permettre de créer un utilisateur, puis après le redémarrage, de passer l'utilisateur en profil local a partir de sa session en reprenant le script utilisé précédemment.

Quelqu'un aurait t-il un moyen simple de faire ceci avec des commandes PS ? Peut-etre un Invoke-Command ?

Merci d'avance :side:<br><br>Message édité par: michmich, à: 9/02/17 09:03

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 1 mois #23145 par Laurent Dardenne
Salut,
pas évident de te proposer qq chose sans le code sous les yeux. On connait +- la fin du traitement mais le début...
qq chose comme :
[code:1]
Traitement -Step One
#puis
Traitement -Step Two
[/code:1]
S'il y a une notion de reprise un Workflow peut être une piste à étudier. Reste à vérifier si on peut l'exécuter dans une session et le terminer dans une autre.
Pourquoi ne pas utiliser la clé de registre RunOnce ?

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 1 mois #23147 par Brice
Merci pour ta réponse rapide Laurent :side:

pas évident de te proposer qq chose sans le code sous les yeux. On connait +- la fin du traitement mais le début...


Pardon,
Voici un extrait de mon code, je passe tout ce qui est crédential et connexion au domaine cela fonctionne, donc je crée mon utilisateur avec adsi :

[code:1]
$RegPath = \&quot;HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\&quot;
$RegRunOnce=\&quot;HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce\&quot;

$adsi = [ADSI]\&quot;WinNT://$Env:ComputerName\&quot;

#Vérifier si l'utilisateur a déjà été crée
if (&amp; net users | select-string \&quot;$INITIALE\&quot;«») {
# Suppression en cas de poste ayant le meme nom d'utilisateur
$reponse= read-host \&quot;user already exist, do you want to delete him ? (O)\&quot;
if ($reponse -eq \&quot;O\&quot;«»){
$user = $adsi.delete('User', $INITIALE)
} else
{
write-host \&quot;On quitte la MAJ\&quot;
exit
}

} else
{
write-host \&quot; user not found, create new user\&quot;
}


# Création d'un nouvel utilisateur
$user = $adsi.Create('User', $INITIALE)
# Définit un mot de passe à l'utilisateur
$user.SetPassword('$PASSWORD')

# Enregistre l'utilisateur
$user.SetInfo()


#Connexion automatique au nouveau compte après redémarrage
write-host \&quot;`n Register information into registery key `n \&quot; -foregroundcolor \&quot;Green\&quot;
Set-ItemProperty $RegPath \&quot;AutoAdminLogon\&quot; -Value \&quot;1\&quot; -type String
Set-ItemProperty $RegPath \&quot;DefaultUsername\&quot; -Value \&quot;$INITIALE\&quot; -type String
Set-ItemProperty $RegPath \&quot;DefaultPassword\&quot; -Value \&quot;$PASSWORD\&quot; -type String
Set-ItemProperty $RegPath \&quot;DefaultDomainName\&quot; -Value \&quot;$Domain\&quot; -type String

#Attente du réseau (environ 100 secondes, soit 1 min 40)
#Set-ItemProperty $RegPath \&quot;DWORD SyncForegroundPolicy\&quot; -Value \&quot;1\&quot; -type String
#Set-ItemProperty $RegPath \&quot;GpNetworkStartTimeoutPolicyValue\&quot; -Value \&quot;100\&quot; -type String
[/code:1]

Pourquoi ne pas utiliser la clé de registre RunOnce?


C'est sur cette piste que je suis parti ;) j'ai quelque chose comme :


[code:1]Set-ItemProperty $RegRunOnce -Name '!NextRun' -Value ('c:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe -noexit -File \&quot;C:\Users\adminvif\Desktop\RenameAndJoinDomainInOneReboot.ps1\&quot;')[/code:1]

mais j'ai un message d'erreur : :dry:

[code:1]Set-ItemProperty : Impossible de trouver le chemin d'accès « C:\Windows\system32\HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce », car il n'existe pas.
Au caractère Ligne:1 : 1
+ Set-ItemProperty \&quot;HKLM\Software\Microsoft\Windows\CurrentVersion\RunO ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Windows\syst...Version\RunOnce:«»String) [Set-ItemProperty], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.SetItemPropertyCommand[/code:1]

Edit: Je pense enlever le paramètre -noexit car je ne vois pas son utilité ici :huh:<br><br>Message édité par: michmich, à: 9/02/17 11:45

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 1 mois #23149 par Laurent Dardenne
michmich écrit:

mais j'ai un message d'erreur : :dry:

Tu utilises un nom de chemin de registry pas de provider PS.
Et par contre je ne sais plus trop si c'est dans la ruche de l'utilisateur ou dans celle de la machine qu'il faut la créer...

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 1 mois #23150 par Philippe
salut

une autre technique :
si tu a la possibilité d'écrire un fichier sur le disque local

au debut de la premiere partie du script si il n'existe pas tu crée un fichier en local (ex : c:\etape.txt)
si il existe tu passe a l'étape deux

à la fin tu efface le fichier local et le script local si besoin

si tu a plus de deux étape tu peut écrire dans le fichier l'étape en cours et dans le script lire l'étape dans le fichier et sauté a la bonne partie du script par un switch ou un if


la même technique fonctionne avec une clé de registre

apres pour relancer le script il y a run ou runone comme dis Laurent
ou le menu démarrage si il existe toujours !!!

.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 1 mois #23151 par Laurent Dardenne
6ratgus écrit:

une autre technique :
si tu a la possibilité d'écrire un fichier sur le disque local

Humm, cette approche de 'fichier flag' nécessite d'intervenir sur le poste en cas d'exception imprévue dans le script.
Mieux vaut s'appuyer sur un mécanisme proposé par le système.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.050 secondes
Propulsé par Kunena