Удаленное взаимодействие PowerShell 5 — JEA с RunAsCredential и Select-Object — Unique

Я пытаюсь использовать PowerShell JEA (Just Enough Administration) на сервере Windows Server 2012 R2, где я установил WMF 5.

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

Я создаю новую возможность роли с моей пользовательской функцией, указанной в разделе VisibleFunctions, назначаю эту роль своей группе пользователей в файле конфигурации сеанса (который также содержит RunAsVirtualAccount = $false) и регистрирую эту конфигурацию сеанса с помощью файла конфигурации и параметра RunAsCredential.

При использовании Get-PSSessionCapability локально на сервере с авторизованной учетной записью без прав администратора я вижу свою пользовательскую функцию в списке. Когда я использую Enter-PSSession с удаленного компьютера (Windows 8.1 с установленным WMF 5) с этой ограниченной конечной точкой, а затем использую Get-Command, функция не отображается в списке.

Если я перестану использовать параметр RunAsCredential и вместо этого использую RunAsVirtualACcount = $true (что приведет к сбою моей функции, но это только для тестирования), тогда я смогу увидеть свою пользовательскую функцию в списке с Get-Command при удаленном выполнении. Но в этом случае попытка вызова функции приводит к следующей ошибке, которая возникает еще до того, как появится ошибка авторизации отсутствующей учетной записи «RunAs»:

Select-Object : A parameter cannot be found that matches parameter name 'Unique'.

Командлет Select-Object вызывается во вложенном стороннем модуле, который я использую (поэтому я не могу заменить его какой-либо другой функцией).

Вот вывод $PSVersionTable на сервере:

Name                           Value
----                           -----
PSVersion                      5.0.10586.117
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.10586.117
CLRVersion                     4.0.30319.34014
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

То же самое на моей рабочей станции, за исключением CLRVersion, которая равна 4.0.30319.42000.

Как я могу использовать JEA в моем сценарии с учетной записью домена как RunAsCredential и вызовом моего стороннего модуля и (среди прочего) его вызовом Select-Object -Unique?

Спасибо,

Иордания


person jalliot    schedule 18.05.2016    source источник
comment
Включили ли вы Microsoft.PowerShell.Utility в импортированные модули?   -  person mjolinor    schedule 18.05.2016
comment
Я только что попробовал, и это не помогает. Спасибо   -  person jalliot    schedule 23.05.2016


Ответы (1)


У меня была та же проблема, когда я создавал конечную точку PS в качестве оболочки вокруг модуля PSPKI. Модуль PSPKI также использует Select-Object, выдавая ту же ошибку.

решение для меня состояло в том, чтобы обновить файл .psrc моей конечной точки, чтобы включить AliasDefinition для Select-Object, чтобы указать на Select-Object полного доменного имени.

AliasDefinitions = @{ Name = 'Select-Object'; Значение = 'Microsoft.PowerShell.Utility\Select-Object' }

См. также: https://jamesone111.wordpress.com/2016/07/01/just-enough-admin-and-constrained-endpoints-part-2-startup-scripts/

Grtx, БвЗантен

person BvZanten    schedule 20.10.2016
comment
Здравствуйте, спасибо за совет. Кажется, это действительно решает проблему выбора объекта. Но это не устраняет основную проблему: моя пользовательская функция по-прежнему не видна при использовании конфигурации RunAsCredential. И я не могу использовать виртуальные аккаунты, к сожалению, в моем сценарии... - person jalliot; 05.12.2016