PowerShell - ActiveDirectory 模块

0 powershell active-directory import-module

我需要能够让用户运行需要 ActiveDirectory 模块的脚本。我复制了以下内容:

“C:\ Windows \ System32 \ WindowsPowerShell \ v1.0 \ Modules \ ActiveDirectory”,“Microsoft.ActiveDirectory.Management.resources.dll”,“Microsoft.ActiveDirectory.Management.dll”。

该脚本运行两个Get-ADUser命令,一个不带-Server参数,另一个带参数。问题是前者有效,但后者无效。

是否还有其他模块需要复制?

Ste*_*ven 5

我不喜欢为非管理员安装管理工具的想法。即使您可以复制文件而不进行完整的 RSAT 安装。其中一个重要原因是您大大增加了恶意行为者的攻击面。更好的解决方案是(Just Enough Administration)JEA,或者哲学上类似的方法。

JEA / 受限端点可能会变得复杂,但您可以执行的操作摘要如下所示:

New-PSSessionConfigurationFile -Path 'C:\PSSessionConfigs\DemoPSEndpointConfig.pssc' -ModulesToImport ActiveDirectory -VisibleCmdlets "Get-ADUser"
Register-PSSessionConfiguration -Path 'C:\PSSessionConfigs\DemoPSEndpointConfig.pssc' -ShowSecurityDescriptorUI -Name DemoPSEndPoint
Run Code Online (Sandbox Code Playgroud)

在安装了 ActiveDirectory 模块(可能是整个 RSAT 组件)的系统上运行这些命令,它不需要是域控制器。它将创建一个新的 PowerShell 远程处理端点配置,该配置仅公开您想要的命令。该Register-PSSessionConfiguration命令将显示一个安全对话框,您可以在其中授予您想要允许连接的用户的权限,您想要授予他们读取和执行权限。完成后,您可以使用Invoke-Command如下命令获取结果:

Invoke-Command -ComputerName <ServerName> -ConfigurationName DemoPSEndPoint -ScriptBlock { Get-ADUser <UserName> }
Run Code Online (Sandbox Code Playgroud)

您可以-Server在命令中添加参数,不会出现问题。您可以在以下位置展开您允许的 cmdletNew-PSSessionConfiguration

同样,这很大程度上是一个更复杂主题的摘要,但应该足以获得您想要的内容。

就我个人而言,我使用配置文件的次数不如使用启动脚本的次数。我认为后者更灵活。您可以在这里获取一些相关信息。如果您确实想深入研究这一点,可以在文章末尾找到参考资料,其中包括 PowerShell JEA 文档的链接。还有一个指向我用来开发自己的端点的一些 MVP 文章的链接。