Подтвердить что ты не робот

Как отредактировать файл в сеансе удаленного доступа powershell (powershell)

Я подключаюсь к другому компьютеру, используя удаленное управление powershell, очень приятно. может делать много, но как отредактировать файл?

PS C:\Users\guutlee > Enter-PSSession -ComputerName appprod

[appprod]: PS C:\Users\guutlee\Documents > cd\myapp

[appprod]: PS C:\myapp >

что я могу сделать, чтобы открыть редактор файлов в файле на удаленной машине?

[appprod]: PS C:\myapp > изменить app.config

так что редактирование "filename" просто кажется зависающим, из файла powershell.exe или из файла powershell_ise.exe

Единственное, о чем я могу думать, это вернуться из pssession и "start\webprod\c $\ inetpub\myapp\web.config", который откроет визуальную студию.

[appprod]: PS C:\myapp > exit

PS C:\Users\guutlee > start\agobuild\c $\ myapp\app.config

PS C:\Users\guutlee > Enter-PSSession -ComputerName appprod

[appprod]: PS C:\Users\guutlee\Documents > cd\myapp

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

Конечно, с этим я должен снова найти файл, надеюсь, что c $share доступен и доступен, и снова подключится к моей pssession и снова найду свою рабочую директорию, когда я захочу продолжить. Это не кажется очень изящным.

Возможно, я мог бы обернуть это функцией, но с трудом обволакивать ее вокруг.

так как мне удобно редактировать файл с удаленной pssession?

ИЗМЕНИТЬ

Сообщение kbrimington заставило меня подумать о опции -X для ssh. вероятно, было бы удивительной вещью для сессий powershell, чтобы иметь возможность пересылать оконные приложения обратно в исходную среду окон...

но все же я был бы счастлив просто отредактировать файл.

ИЗМЕНИТЬ

тесты с использованием vi, emacs, cmd и edit

PS C:\Users\Meredith > Enter-PSSession -ComputerName appprod

[appprod]: PS C:\Users\guutlee\Documents > C:\vim\vim72\vim filename.txt

[appprod]: PS C:\Users\guutlee\Documents > C:\emacs-23.2\bin\emacs.exe -nw filename.txt

emacs.exe: emacs: стандартный ввод не является tty

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

+ FullyQualifiedErrorId \: NativeCommandError

[appprod]: PS C:\Users\guutlee\Documents > cmd

Microsoft Windows [версия 6.1.7600]

Copyright (c) 2009 Корпорация Microsoft. Все права защищены.

C:\Users\guutlee\Documents >

[appprod]: PS C:\Users\guutlee\Documents > изменить filename.txt

vi и отредактируйте зависание (Control-C, чтобы получить подсказку назад)

cmd работает, создавая приглашение, но сразу же возвращается к приглашению powershell

emacs создает ошибку (стандартный ввод не является tty)

ИЗМЕНИТЬ

Jered предлагает вытащить файл обратно для редактирования. Я приукрасил его ответ на копирование, используя pssessions, а не UNC (возможно, это то, что он намеревался)

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

изменить веб-конфигурацию

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

Потенциально мы могли бы запускать команды-вызовы в любом направлении, от локального до удаленного или удаленного до локального.

4b9b3361

Ответ 1

Если вы используете Powershell 5, вы можете использовать команду PSEdit. Он работает только от ISE.

  • Итак, сначала откройте PowerShell ISE
  • Затем откройте удаленный сеанс на удаленном компьютере с помощью Enter-PSSession
  • Затем отредактируйте файл с помощью PsEdit 'filename'

Удаленный файл будет открыт на новой вкладке в вашем (локальном) окне ISE.

На самом деле я нашел этот ответ из раздела комментариев этого вопроса SO,, но я думаю, что это будет полезно для других, если я отправлю его в качестве ответа здесь.

Ответ 2

Можете ли вы не вытащить файл локально, отредактировать его и опубликовать? Я знаю, что это утомительно и не изящно, но кажется, что редакторы сейчас испытывают проблемы с удаленными сеансами.

например.

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

Сделайте свои изменения локально, а затем

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

ИЗМЕНИТЬ

Также, если вы только заменяете некоторые экземпляры, вы можете сделать это довольно легко.

например.

Get-Content REMOTE\Filename.txt | foreach-object { $_ -replace "OLD", "NEW" } | Set-Content REMOTE\Filename.txt

Ответ 3

После многократного поиска я нашел то, что кажется релевантным в документации по помощи powershell. В приглашении powershell введите:

help about_remote_troubleshooting

В самом конце файла справки, который отображается, есть раздел "УСТРАНЕНИЕ НЕИСПРАВНОСТЕЙ НЕПРЕРЫВНОГО ПОВЕДЕНИЯ", в котором говорится:

УСТРАНЕНИЕ НЕИСПРАВНОСТЕЙ НЕПРЕРЫВНОЕ ПОВЕДЕНИЕ

В этом разделе обсуждаются проблемы, связанные с удалением завершение и предотвращение или отсрочка возврата Windows PowerShell приглашение.

КАК ПЕРЕСМОТРЕТЬ КОМАНДУ


Некоторые собственные программы Windows, такие как программы с пользовательским интерфейсом,   консольные приложения, которые запрашивают ввод, и консоль   приложения, использующие консольный API Win32, не работают   правильно на удаленном хосте Windows PowerShell.

Когда вы используете эти программы, вы можете увидеть неожиданное поведение, такое   как нет вывода, частичного вывода или удаленной команды, которая не   полный. Чтобы закончить неаккуратную программу, введите CTRL + C. Для просмотра любой   ошибки, о которых можно было сообщить, введите "$ error" в   локальный хост и удаленный сеанс.

Таким образом, казалось бы, даже консольные приложения, отличные от GUI, такие как VIM, к сожалению, не будут работать. Кто угодно заботиться о том, чтобы пролить немного света на то, почему это может быть и/или можно ли это работать вокруг? Я бы ДЕЙСТВИТЕЛЬНО любил его, если бы мог использовать vim над удалением PowerShell.

Ответ 4

Попробуйте использовать консольный редактор, такой как VI или Emacs. Как и в моем комментарии, я думаю, что проблема заключается в том, что команда редактирования привязана к оконному приложению, которое, в свою очередь, не виртуализируется на удаленном сеансе.

Ответ 5

PowerShell_ISE.exe \\REMOTE\File.txt 

загрузит и отредактирует файл напрямую и сохранит его обратно на удаленный компьютер за один шаг и, так как его командная строка, легко создавать функции, используя его. Не обойти проблемы совместного использования, но самый простой способ, который я нашел.

Ответ 6

Я пробую все вышеприведенное предложение и даже другое решение, связанное с Microsoft, но никто не работает так, как вы и я хочу - "полная интерактивная и отзывчивая оболочка". Если вы действительно хотите получить опыт ssh, который есть у пользователей UNIX с самого начала, я рекомендую вам установить ssh-сервер. Я лично использую freesshd, вы можете найти его здесь http://www.freesshd.com и инструкции по его настройке здесь http://www.windowsnetworking.com/articles_tutorials/install-SSH-Server-Windows-Server-2008.html. После того, как вы сделаете все, что сказано в инструкциях, вам нужно всего лишь использовать любое клиентское приложение ssh для подключения к вашему компьютеру и использовать полную версию powershell. Vim, edit, emacs или все, что вы используете для редактирования файла, будет работать без проблем.

Я призываю вас не тратить свое время на psremoting, telnet, winrs, psexec, пытаясь достичь того, что дает реальная интерактивная оболочка (я уже потерял ее, T_T). Попробуйте использовать этот ssh-сервер для себя.

Ответ 7

Я получил nano, чтобы легко работать над SSH для PowerShell. Он доступен в Chocolatey, поэтому вы можете просто сделать...

choco install nano -y

Тогда вы можете просто сделать...

nano filename