代码之家  ›  专栏  ›  技术社区  ›  Katz

特定用户上的受约束端点

  •  -1
  • Katz  · 技术社区  · 7 年前

    我正在尝试创建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

    如何允许自定义模块成为端点允许用户执行的唯一功能?或者,如何将模块导入到配置文件中,以便在每次使用帮助台端点配置时执行。我知道在配置文件中有一行要导入模块,但导入模块实际上不是一个模块。模块的一个示例是ActiveDirectory,如果我能够找到模块导入模块是其中的一部分,我想我应该能够快速地解决这一问题。

    更新

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

    输入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'
    

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

    Error1

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

    Error

    语言模式 设置为

    LanguageMode = 'RestrictedLanguage'
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Prasoon Karunan V    7 年前

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

    请参见下文。

    Get-Help New-PSSessionConfigurationFile -Parameter ScriptsToProcess

    Get-Help New-PSSessionConfigurationFile -Parameter FunctionDefinitions

    更新:

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