Powershell à l'Aide de Start-Processus en Possession d'Ouvrir le bloc-notes
J'ai créé un pssession sur un ordinateur distant et entré en possession. Dans cette session, j'ai utiliser des start-démarrage du processus de bloc-notes. Je peux confirmer que le bloc-notes est en cours d'exécution avec la commande get-process, et aussi avec taskmgr dans l'ordinateur distant. Cependant, l'interface graphique de côté de, le processus n'est pas visible. C'est la séquence que j'ai été en utilisant:
$server = New-PSSession -ComputerName myserver -Credential mycreds
Enter-PSSession $server
[$server]: PS C:\>Start-Process notepad -Wait -WindowStyle Maximized
Le processus est en cours, mais tout en RDP pour la boîte, le bloc-notes ne s'ouvre pas. Si j'ouvre le bloc-notes à partir du serveur, un nouveau bloc-notes le processus commence. J'ai aussi essayé en utilisant le verbe paramètre comme ceci:
[$server]: PS C:\>Start-Process notepad -Wait -WindowStyle Maximized -Verb Open
Même résultat tho... Processus démarre, mais pas le bloc-notes affiche. J'ai essayé tout ce distants dans la boîte (mais publié à partir de mon hôte local), ainsi que devant l'accès distant sur le serveur.
Vous devez vous connecter pour publier un commentaire.
C'est parce que votre session powershell sur la machine distante ne vont pas visible sur le bureau, mais à un système invisible de bureau. La fin de réception de votre powershell session à distance est un service Windows. Le processus est commencé, mais ni vous ni personne d'autre ne peut le voir.
Et si vous pensez à ce sujet, depuis plusieurs utilisateurs pourraient RDP sur la même machine, il n'y a vraiment aucune raison de supposer une session powershell à distance permettrait de montrer à tout les utilisateurs de postes de travail. En fait, dans presque tous les cas, vous ne voulez pas de toute façon.
psexec avec le paramètre-i est capable de faire ce que vous voulez, mais vous devez spécifier des sessions (les utilisateurs) vous souhaitez qu'il s'affiche dans.
Je sais que c'est vieux, mais je suis venu à travers elle, à la recherche de la solution moi-même si je voulais mettre à jour pour les pauvres âmes.
Une native solution de contournement pour ce problème consiste à utiliser une tâche planifiée. Qui va utiliser la session active
Lorsque vous utilisez
New-PSSession
et puis RDP dans le même ordinateur, vous êtes réellement en utilisant deux séparé et distinct de l'utilisateur de sessions de connexion. Par conséquent, l'Notepad.exe processus vous avez commencé dans la Possession n'est pas visible pour votre session RDP (sauf si un autre processus en cours d'exécution via le Gestionnaire des Tâches ouget-process
).Une fois que vous avez RDP avais sur le serveur (après avoir fait ce que vous avez écrit dans votre post), démarrer une autre instance du bloc-notes à partir de là. Ensuite, goutte à PowerShell & exécuter ceci:
get-process -name notepad |select name,processid
Noter qu'il existe deux instances, chacune dans une session différente.
Maintenant ouvrez le Gestionnaire des Tâches et regarder les sessions utilisateur. Votre session RDP va probablement être répertorié en tant que session 1.
Maintenant quittez le bloc-notes et d'exécuter
get-process
de nouveau. Vous verrez un exemple, mais pour la session 0. C'est celui que vous avez créé dans votre télécommande PSSession.