特定用户的受限端点

Constrained endpoint on specific user

我正在尝试创建一个 PowerShell 端点约束,限制用户只能执行我创建的自定义模块中的功能。

我做的第一件事是 import-module mymodule.psm1,它允许我 运行 我的模块在我的主机系统中正常运行。

然后下面的 PS 命令为端点创建配置文件,允许括号内的函数成为用户可以执行的唯一函数。

New-PSSessionConfigurationFile -VisibleFunctions('Get-Command','Get-Info', 'CreateAD-User','Generate-Html','Change-Logon') -LanguageMode ‘ConstrainedLanguage’ –SessionType ‘RestrictedRemoteServer’ –Path ‘c:\test\helpdesk.pssc’

然后我用

注册端点
Register-PSSessionConfiguration –Name ‘HelpDesk’ -ShowSecurityDescriptorUI –Path ‘c:\test\helpdesk.pssc’

并选择了我希望允许的用户在 SecurityDescriptorUI 弹出后具有这些约束。一旦我登录到我设置约束的用户

Enter-PSSession -computername SRV1-AD -Credential $credential -ConfigurationName HelpDesk

这些是允许用户执行的允许的 cmdlet/功能。这些是允许远程连接到系统的默认必需 cmdlet。

如何让我的自定义模块成为端点允许用户执行的唯一功能?或如何将我的模块导入配置文件,以便在每次使用 HelpDesk 端点配置时执行。我知道在配置文件中有一行导入模块,但 Import-Module 实际上不是一个模块,一个模块的例子是 ActiveDirectory,如果我能够找到模块 import-module 是其中的一部分,我想我应该能够为此做一个快速而肮脏的工作。

更新

我为此找到的一个肮脏的解决方案是进入用户会话并禁用所有 cmdlets / 函数,除了我想要允许的那些,例如 import-module & Get-Command with import-module I可以手动导入我的自定义模块,我的功能将是唯一对用户可见的功能。但这不是一个完美的解决方案,因为这意味着我需要将我的模块下载到我希望它生效的每个系统中,并且它不再是一对多的解决方案。理想的解决方案是将我的模块存储在本地,进入与注册端点的会话并将我的模块导入到用户帐户中。

Enter-PSSession -computername SRV1-AD -Credential $credential -ConfigurationName HelpDesk

进一步更新

用户@prasoon-ka运行an-v 建议我使用 -ScriptsToProcess & FunctionDefinitions 导入模块所以我使用了以下命令

New-PSSessionConfigurationFile -VisibleFunctions('Get-Command','Get-Info', 'CreateAD-User','Generate-Html','Change-Logon') -LanguageMode ‘ConstrainedLanguage’ –SessionType ‘RestrictedRemoteServer’ –Path ‘.\EndPoint.pssc’ -ScriptsToProcess C:\Users\Administrator\Desktop\Modules\ImportM.psm1

在配置文件中我也设置了我想使用的功能

# Functions defined in this session configuration
FunctionDefinitions = 'Get-Command','Get-Info', 'CreateAD-User','Generate-Html','Change-Logon'

当我尝试建立会话时,它会抛出以下错误

然后我想它可能不起作用,因为我们没有告诉命令导入任何东西只是指向模块文件,所以也许我需要创建一个导入模块的小脚本,然后将其添加到配置文件中。所以这正是我所做的 我创建了一个小脚本, import-module C:\Modules\ImportM.psm1 然后我转到 .pssc 文件并将此脚本添加到 ScriptsToProcess,但在我尝试与受限端点建立会话后出现以下错误。

语言模式设置为

LanguageMode = 'RestrictedLanguage'

使用 -ScriptsToProcess 参数,可用于导入自定义模块。

另见下文。

Get-Help New-PSSessionConfigurationFile -Parameter ScriptsToProcess

Get-Help New-PSSessionConfigurationFile -Parameter FunctionDefinitions

更新:

确定要使用的语言模式, 见 here