comment modifier un fichier dans powershell remoting session (powershell)

je me connecte à un autre ordinateur en utilisant powershell remoting, really nice. peut faire beaucoup, mais comment puis-je modifier un fichier?

PS C:Usersguutlee > Enter-PSSession-ComputerName appprod

[appprod]: PS C:UsersguutleeDocuments > cd myapp

[appprod]: PS C:myapp 151920920"

que puis-je faire pour ouvrir un fichier Editeur d'un fichier sur la machine distante?

[appprod]: PS C:myapp > edit app.config

donc éditer "nom de fichier" semble juste pendre, de powershell.exe ou de powershell_ise.exe

la seule chose à laquelle je peux penser est de revenir de la pssession et" start webprodc$inetpubmyappweb.config", qui ouvrirait visual studio.

[appprod]: PS C:myapp > sortie

PS C:Usersguutlee > start agobuildc$myappapp.config

PS C:Usersguutlee > Enter-PSSession-ComputerName appprod

[appprod]: PS C:UsersguutleeDocuments > cd myapp

[appprod]: PS C:myapp > myapp.exe

bien sûr avec ceci j'ai pour retrouver le fichier, j'espère que le partage c$ est disponible et accessible, et que je retrouve mon répertoire de travail quand je veux continuer. Il ne semble pas très élégant.

je pourrais peut-être envelopper ceci est une fonction, mais avoir du mal à envelopper ma tête autour de cela..

alors comment éditer commodément un fichier avec une PSSession distante?

EDIT

le billet de kbrimington m'a fait penser à propos de l'option-X de ssh. ce serait probablement quelque chose de génial pour powershell sessions pour être en mesure de transférer les applications fenêtrées de retour à l'environnement de fenêtrage d'origine...

mais je serais quand même heureux de simplement éditer le fichier.

EDIT

tests utilisant vi, emacs, cmd et edit

PS C:UsersMeredith > Enter-PSSession-ComputerName appprod

[appprod]: PS C:UsersguutleeDocuments > C:vimvim72vim nom du fichier.txt

[appprod]: PS C:UsersguutleeDocuments > C:emacs-23.2binemacs.nom du fichier exe-nw.txt

emacs.exe: emacs: entrée standard n'est pas un tty

+ CategoryInfo          : NotSpecified: (emacs: standard input is not a tty:String) [], RemoteException

+ FullyQualifiedErrorId : NativeCommandError

[appprod]: PS C:UsersguutleeDocuments > cmd

Microsoft Windows [Version 6.1.7600]

Copyright (c) 2009 Microsoft Corporation. Tous droits réservés.

C:UsersguutleeDocuments 151920920"

[appprod]: PS C:UsersguutleeDocuments > edit filename.txt

vi et de modifier accrocher (Contrôle-C pour obtenir une invite dos)

cmd fonctionne, produisant une invite, mais sort immédiatement de nouveau à l'invite powershell

emacs produit l'erreur (entrée standard n'est pas un tty)

EDIT

Jered suggère de retirer le fichier localement pour le modifier. J'ai embelli sa réponse à la copie à l'aide de sessions pssession plutôt que de l'Unc (c'est peut-être ce qu'il voulait)

PS C:UsersMeredith > Invoke-Command-Session $ps-ScriptBlock {get-content c:/inetpub/myapp/web.config} > web.config

modifier la configuration web de

PS C:UsersMeredith > get-content web.config / Invoke-Command-Session $ps-ScriptBlock {set-content c:/inetpub/myapp/web.config}

potentiellement, nous pourrions exécuter les commandes invoke-dans l'une ou l'autre direction, local à distant ou remote back to local.

32
demandé sur JasonMArcher 0000-00-00 00:00:00

8 réponses

si vous utilisez Powershell 5, vous pouvez utiliser la commande PSEdit. Il ne fonctionne qu'à partir d'ISE.

  1. Alors d'abord, ouvrez PowerShell ISE
  2. puis ouvrir la session distante à L'ordinateur distant en utilisant Enter-PSSession
  3. puis éditez le fichier en utilisant PsEdit 'filename'

le fichier distant sera ouvert dans un nouvel onglet dans votre fenêtre (locale) ISE.

en fait j'ai trouvé ceci réponse de la section des commentaires de cette question SO , mais je pense qu'il sera utile pour d'autres si je poste comme réponse ici.

17
répondu chenz 2017-05-23 11:54:37

après beaucoup de recherches, j'ai trouvé quelque chose qui semble pertinent dans la documentation d'aide de powershell. À l'invite powershell, tapez:

aide sur_remote_troubleshooting

à la toute fin du fichier d'aide affiché, il y a une section intitulée "dépannage du comportement non réactif", qui se lit comme suit:

DÉPANNAGE COMPORTEMENT NON RÉACTIF

cette section traite des problèmes de remotting qui empêchent une commande de compléter et prévenir ou retarder le retour de la PowerShell Windows invite.

COMMENT INTERROMPRE UNE COMMANDE


certains programmes Windows natifs, tels que les programmes avec une interface utilisateur, les applications de la console qui demandent une entrée, et la console les applications qui utilisent L'API de console Win32, ne fonctionnent pas correctement dans la machine distante PowerShell de Windows.

lorsque vous utilisez ces programmes, vous pourriez voir un comportement inattendu, tel que comme aucune sortie, sortie partielle, ou une commande à distance qui ne compléter. Pour mettre fin à un programme sans réponse, tapez CTRL + C. erreurs qui auraient pu être signalées, tapez "$ error " dans la hôte local et la session à distance.

ainsi, il semblerait même non-GUI console applications telles que VIM ne fonctionne pas malheureusement. Quiconque prendre soin d'apporter un peu de lumière sur la raison pour laquelle cela pourrait être le cas et / ou si cela peut être travaillé autour? J'aimerais vraiment si je pouvais utiliser vim sur powershell remoting.

4
répondu dtm 2011-09-23 20:59:59

ne pouvez-vous pas extraire le fichier localement, l'éditer et le poster? Je sais que c'est fastidieux et pas Élégant, mais il semble que les éditeurs aient actuellement des problèmes avec les sessions à distance.

par exemple,

Get-Content REMOTE\Filename.txt > LOCAL\Filename.txt

faites vos modifications localement et puis

Set-Content -path REMOTE\Filename.txt -value (get-content LOCAL\Filename.txt)

EDIT

aussi si vous ne remplacez que certaines instances, vous pouvez le faire assez facilement.

par exemple,

Get-Content REMOTE\Filename.txt | foreach-object { $_ -replace "OLD", "NEW" } | Set-Content REMOTE\Filename.txt
3
répondu Jered Odegard 2010-08-17 04:12:39
PowerShell_ISE.exe \REMOTE\...\File.txt 

chargera et éditera le fichier directement et le sauvera de nouveau à l'ordinateur distant en une seule étape et, depuis sa ligne de commande, facile à construire des fonctions l'utilisant. On ne partage pas les problèmes, mais j'ai trouvé la façon la plus facile.

3
répondu Lor 2018-09-20 21:28:48

essayez-le en utilisant un éditeur basé sur la console tel que VI ou Emacs. Comme dans mon commentaire, je pense que le problème est que la commande edit est liée à une application fenêtrée qui, à son tour, n'est pas virtualisée à travers une session distante.

1
répondu kbrimington 2010-08-08 03:06:31

tout d'abord, créez un dossier temp sur la machine locale (LOCALTEMPFOLDER). Ensuite, utilisez la fonction suivante:

function vimrem {param([parameter(position=0,mandatory=$true)][string]$Session, [parameter(position=1,mandatory=$true)][string]$Path)

$TempFile = split-path -path $Path -leaf

copy-item -fromsession $Session -path $Path -destination LOCALTEMPFOLDER$TempFile

vim $LOCALTEMPFOLDER$TempFile

copy-item -tosession $Session -path LOCALTEMPFOLDER$TempFile -destination $Path

remove-item -path LOCALTEMPFOLDER$TempFile

}

cela devrait fonctionner, mais vous devrez quitter une session interactive avant d'utiliser cette fonction.

1
répondu Henrique 2018-02-13 04:24:34

j'essaie toutes les suggestions ci-dessus et même une autre solution liée à microsoft mais aucune ne fonctionne comme vous et moi le voulons --"full interactive and responsive shell"--. Si vous voulez vraiment avoir l'expérience SSH que les utilisateurs d'unix ont depuis le début du temps, je vous recommande d'installer un serveur SSH. J'utilise personnellement freesshd, vous pouvez le trouver ici http://www.freesshd.com et instructions pour le configurer ici http://www.windowsnetworking.com/articles_tutorials/install-SSH-Server-Windows-Server-2008.html . Après avoir fait tout ce qui est indiqué dans les instructions, vous n'avez qu'à utiliser n'importe quelle application client ssh pour vous connecter à votre ordinateur et utiliser powershell full interactive. Vim, edit, emacs ou tout ce que vous utilisez pour éditer un fichier va fonctionner sans aucun problème.

je vous encourage à ne pas perdre votre temps avec psremoting, telnet, winrs, psexec, en essayant d'atteindre ce qu'un réel shell interactif fournir (Je l'ai déjà perdu, T_T). Essayez ce serveur ssh un see pour vous-même.

0
répondu mjsr 2011-03-15 20:11:11

j'ai fait travailler nano facilement de SSH à PowerShell. Il est disponible en Chocolatey donc vous pouvez le faire...

choco install nano -y

alors vous pouvez le faire...

nano filename
-2
répondu Scott Alan Miller 2017-03-04 12:40:42