удаленное взаимодействие PowerShell: очень медленно - PullRequest
5 голосов
/ 21 февраля 2011

Если я перешлю ssh с сервера Solaris на сервер в США, соединение ssh будет очень быстрым, например, удаление файла может завершиться очень скоро.

Но почему удаленное взаимодействие powershell так медленно, после того, как я вошел в удаленный сеанс и затем удалил элемент, для его завершения требуется более 10 секунд.

Enter-PSSession -computerName test
remove-item 'C:\20010101.xls' 

выполнение следующей команды также занимает более 5 секунд.

[Environment]::UserDomainName + "\" + [Environment]::UserName+" on"+[Environment]::MachineName

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

Есть ли способ повысить производительность или узнать, куда больше времени уходит?

1 Ответ

7 голосов
/ 17 марта 2011

Daniel

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

Вместо использования Enter-PSSession попробуйте использовать Invoke-Command. Он по-прежнему инициализирует удаленный сеанс PS, но вы не получаете все накладные расходы на консоль.

Invoke-Command -Computer test -ScriptBlock {[Environment] :: UserDomainName + "\" + [Environment] :: UserName + "on" + [Environment] :: MachineName}

Имейте в виду, что PowerShell и WinRM много делают для вас, потому что все ваши выходные данные сериализуются в XML, а затем снова восстанавливаются в объекты. Одна из лучших вещей в PowerShell, все является объектом, это то, что делает его медленнее при выполнении аналогичных действий через ssh / bash / cmd и т. Д. Это все о компромиссах.

Когда я выполняю задачи, которые, как я знаю, займут некоторое время, я попытаюсь запланировать их как задания и перейти к другим вещам.

- Greg

...