特定用户

时间:2017-12-30 02:38:08

标签: powershell powershell-v4.0 powershell-remoting

我试图创建一个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。

Image

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

更新

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

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

进一步更新

User @ 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'

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

Error1

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

Error

语言模式设置为

LanguageMode = 'RestrictedLanguage'

1 个答案:

答案 0 :(得分:0)

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

见下文。

Get-Help New-PSSessionConfigurationFile -Parameter ScriptsToProcess

Get-Help New-PSSessionConfigurationFile -Parameter FunctionDefinitions

更新

确保使用的语言模式, 见here