Профиль
Вы обнаружили одно основное отличие: $profile
не настраивается.
В MSDN есть несколько часто задаваемых вопросов об удаленной PowerShell , или get-help about_Remote_FAQ
.
Под "ГДЕ МОИ ПРОФИЛИ?" (хех) это объясняет:
Например, следующая команда запускает профиль CurrentUserCurrentHost
с локального компьютера в сеансе в $ s.
invoke-command -session $s -filepath $profile
Следующая команда запускает профиль CurrentUserCurrentHost из
удаленный компьютер в сеансе в $ s. Потому что переменная $ profile
не заполняется, команда использует явный путь к профилю.
invoke-command -session $s {. "$home\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"}
Сериализация
Другое отличие, которое может повлиять на вас, состоит в том, что вместо .NET-объектов, возвращаемых командами, просто возвращаемых напрямую, при удаленном запуске и возврате они сериализуются и десериализуются по проводам. Многие объекты поддерживают этот штраф, но некоторые нет. Powershell автоматически удаляет методы для объектов, которые больше не "подключены", и тогда они в основном являются структурами данных ... но он перехватывает методы для некоторых типов, таких как DirectoryInfo
.
Обычно вам не нужно об этом беспокоиться, но если вы возвращаете сложные объекты по каналу, вы можете ...