Question Powershell, variables et tâches planifiées
- Samuel
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 8
- Remerciements reçus 0
Une petite difficulté à surmonter, le clientname se trouve dans HKCU\Volatile Environment\x où x est un entier variant pour chaque utilisateur.
Il faut que je modifie mon script pour qu'il recherche le bon x pour pouvoir lire la valeur.
Je m'aperçois que le x correspond au numéro de session, je tente la chose suivante :
[code:1]$UnifiedSessionId = get-rdusersession -collectionname bureau | Where-Object {$_.username -eq $env:username} | Select-Object UnifiedSessionId -expandproperty UnifiedSessionId
$registre = get-itemproperty -path registry::\"HKEY_CURRENT_USER\Volatile Environment\$UnifiedSessionId\"
$client = $registre.ClientName[/code:1]
Et ça fonctionne merveilleusement bien lorsque je suis administrateur.
Je lance le script en tant qu'utilisateur, et là c'est le drame :
get-rdusersession : Il n'existe aucun déploiement des services Bureau à distance sur SRV-RD1.contoso.com. Cette
opération peut être effectuée après la création d'un déploiement. Pour plus d'informations sur la création d'un
déploiement, exécutez la commande «Get-Help New-RDVirtualDesktopDeployment» ou «Get-Help New-RDSessionDeployment».
Au caractère \\ch-condom.com\netlogon\vbs\printers2012R2.ps1:3 : 21
+ $UnifiedSessionId = get-rdusersession -collectionname bureau | Where-Object {$_. ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: ( : ) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Get-RDUserSession
Alors qu'il ne s'agit pas d'un problème de déploiement sur SRV-RD1 car c'est précisément sur lui que je fais mes tests en tant qu'administrateur et que tout fonctionne à merveille.
Je pense que l'environnement utilisateur ne sait pas communiquer avec les services Bureau à distance ou n'a pas le droit mais là, pour contourner, je ne sais pas par quoi commencer.
Il faut que je tente de lister les dossiers de la clé HKCU\Volatile Environment, et vérifier dans chacun si il existe une clé CLIENTNAME.
Ca devient de la bidouille++
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Faudrait que je vous montre celle que j'ai réalisé pour utiliser l'API SendMessage dans une tâche planifiéeCa devient de la bidouille++
Là tu en es soit à corriger un bug d'une API, soit combler un manque de l'OS pour ce scénario.
Et s'il existe une solution 'popre' il reste à la trouver...
Pour ton pb essaie d'utiliser un des programmes externes pour lister les sessions, celle en cours est peut être différenciée.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Samuel
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 8
- Remerciements reçus 0
Un que j'utilise à l'ouverture de session et qui est lancée par une gpo et qui utilise $env:clientname (le script d'origine en gros qui marchait très bien jusqu'à présent).
Un autre qui est appelé via une tâche planifiée crée par gpo dans l'environnement de l'utilisateur et qui réagit à l'événement 25 du journal Microsoft-Windows-TerminalServices/Operationnal et qui va lire la valeur de CLIENTNAME dans la base de registre comme ceci :
[code:1]$registre = get-childitem -path registry::\"HKEY_CURRENT_USER\Volatile Environment\\"
$cle = get-itemproperty -path registry::\"$registre\"
$client = $cle.ClientName
[/code:1]
Reste à espérer qu'il n'y ait pas un second dossier qui sera créer à cet endroit là sinon je suis bon pour refaire encore des if un peu partout.
La clé ne retourne rien au moment de l'ouverture de session, je ne peux malheureusement pas l'utiliser pour la primo connexion de la journée de l'utilisateur.
J'aurai pu avec des if utiliser le même script supposant que si $env:clientname est vide alors utiliser l'autre méthode mais je n'ai plus de temps à consacrer à ce problème et vu que ça fonctionne parfaitement maintenant, je n'y touche plus. D'autant que les tests sont un peu longs puisqu'il faut faire des déco/reco, fermeture/réouverture de session, ...
Merci beaucoup pour ton aide et toutes les pistes que tu as pu m'apporter, le résultat est là
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les initiés
- Powershell, variables et tâches planifiées