我正在尝试在安装了WMF 5的Windows Server 2012 R2服务器上使用PowerShell JEA(Just Enough Administration)。
我需要让非管理员用户组看到1个自定义功能,它只依赖于另一个本地安装的模块。此功能不需要管理员权限,但需要在特定域帐户的上下文中运行。
我使用VisibleFunctions
部分中列出的自定义函数创建了新角色功能,将该角色分配给会话配置文件(也包含RunAsVirtualAccount = $false
)中的用户组并注册此会话使用配置文件和RunAsCredential
参数进行配置。
在服务器上使用授权的非管理员帐户在本地使用Get-PSSessionCapability
时,我会看到列出的自定义功能。
当我使用此约束端点的远程计算机(安装了WMF 5的Windows 8.1)使用Enter-PSSession
,然后使用Get-Command
时,未列出该函数。
如果我停止使用RunAsCredential
参数而是使用RunAsVirtualACcount = $true
(这会使我的功能失败,但这仅用于测试),那么我可以看到我的自定义函数列出{{1}当远程执行时。
但在这种情况下,尝试调用该函数会导致以下错误,即使在出现缺少的“RunAs”帐户授权错误之前也会发生此错误:
Get-Command
在我使用的嵌套第三方模块中调用Select-Object : A parameter cannot be found that matches parameter name 'Unique'.
cmdlet(因此我无法将其替换为任何其他函数)。
以下是服务器上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。
如何在我的方案中使用JEA,将域帐户设为4.0.30319.42000
并调用我的第三方模块以及(除其他事项外)RunAsCredential
来电?
谢谢,
约旦
答案 0 :(得分:0)
我遇到了同样的问题,创建了PS端点作为PSPKI模块的包装器。 PSPKI模块也使用Select-Object,给出相同的错误。
我的解决方案是更新我的端点.psrc文件,以包含Select-Object的AliasDefinition以指向FQDN Select-Object。
AliasDefinitions = @ {Name ='Select-Object'; Value ='Microsoft.PowerShell.Utility \ Select-Object'}
Grtx, BvZanten