我正在尝试创建一个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,如果我能找到哪个模块导入模块是我认为的一部分我应该能够为此做一个快速而肮脏的工作。
UPDATE
我找到的一个肮脏的解决方案是进入用户的会话并禁用除我想要允许的所有cmdlet /函数,例如带导入模块的import-module
和Get-Command
我可以手动导入我的自定义模块,我的函数将是唯一的对用户可见的。但这不是一个完美的解决方案,因为这意味着我需要将我的模块下载到我希望它生效的每个系统中,它不再是一对多的解决方案。理想的解决方案是让我的模块在本地存储,进入与已注册端点的会话,并将我的模块导入到用户帐户。
Enter-PSSession -computername SRV1-AD -Credential $credential -ConfigurationName HelpDesk
进一步更新
用户@ prasoon-karunan-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'
当我尝试建立会话时,它会抛出以下错误
然后我想也许它不起作用,因为没有告诉命令导入任何东西只是指向模块文件,所以也许我需要创建一个导入模块的小脚本然后添加配置文件。这就是我所做的,我创建了一个带有导入模块C:\ Modules \ ImportM.psm1的小脚本然后我转到.pssc文件并将此脚本添加到ScriptsToProcess
但是我得到以下错误尝试建立与受约束端点的会话。
语言模式设置为
LanguageMode = 'RestrictedLanguage'
使用-ScriptsToProcess
参数,该参数可用于导入自定义模块。
见下文。
Get-Help New-PSSessionConfigurationFile -Parameter ScriptsToProcess
Get-Help New-PSSessionConfigurationFile -Parameter FunctionDefinitions
更新:
请确保使用的语言模式,请参阅here