#powershell #powershell-4.0 #type-accelerators
#powershell #powershell-4.0 #ускорители типов
Вопрос:
Я не могу понять, как правильно использовать PSSession для использования в качестве параметра в функции.
Должен ли я загружать сборку или что-то в этом роде? Я использую Powershell v4.
Мне нравится приводить параметры моих функций, чтобы убедиться в правильном использовании. Что я пытаюсь, так это:
function Some-Remote-Task([PSSession] $Session, [String]$Target) {
# Do stuff...
}
Но я получаю эту ошибку при приведении моего параметра:
Unable to find type [PSSession]. Make sure that the assembly that contains this type is loaded.
Кроме того, использование $mySession.GetType()
в допустимом сеансе приводит к следующему:
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False PSSession System.Object
Похоже, что это должно быть правильное имя типа…
Любая помощь приветствуется.
Ответ №1:
Попробуйте это:
function Some-Remote-Task([System.Management.Automation.Runspaces.PSSession]$Session, [String]$Target) {
# Do stuff...
}
Комментарии:
1. Это работает. Я пока не принимаю, потому что не знаю, является ли это наилучшим возможным ответом.
2. @Grallen 1) вы всегда можете принять и изменить это позже. 2) Это правильный ответ. Я не знаю контекста, в котором вы могли бы использовать
[PSSession]
его самостоятельно. Проверьте$mySession.GetType().FullName
. Это объединение$mySession.GetType().Namespace
и$mySession.GetType().Name
.
Ответ №2:
Редактировать:
Теперь я могу [PSSession]
правильно использовать.
Объединив информацию из ссылки в комментарии biantist: ускоритель типов
С другим ответом здесь: упростите свой сценарий …
Я правильно добавил ускоритель типов:
PS c:> [PowerShell].Assembly.GetType("System.Management.Automation.TypeAccelerators")::add(“PSSession”,”System.Management.Automation.Runspaces.PSSession”)
PS c:> [PSSession]
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False PSSession System.Object
БЫЛО:
В конце я использовал псевдоним. Опубликовано для других, которые также предпочитают чистый вид.
New-Alias PSSession System.Management.Automation.Runspaces.PSSession
-ErrorAction SilentlyContinue
Полезно добавлять к нему во время тестирования, если вы продолжаете перезапускать одни и те же сегменты кода.
Комментарии:
1. Лично я бы не рекомендовал это. Я даже не совсем уверен, как это работает в вашем коде, поскольку псевдонимы предназначены для команд / функций / командлетов. То, что вы ищете, — это ускоритель типов .
2. Комментарий выше был до редактирования. Теперь реализован ускоритель ввода.