我试图自动运行一个 PowerShell 脚本,该脚本使用 ActiveDirectory 模块访问 Get-ADUsers 命令行,以便获取所有用户列表以用于报告目的。然而,在尝试自动运行此脚本时,我意识到我需要在运行脚本的服务器上启用 Microsoft 远程服务器管理工具 (RSAT)。
出于安全原因,我无法获得启用 RSAT 的批准。
我正在研究设置一个命令行脚本,使用命令行实用程序逗号分隔值数据交换(CSVDE)来运行,而我以前从未使用过它。
使用一种方法或另一种方法提取的数据是否存在差异?例如列的变化?
答案1
CSVDE 与 PowerShell 无关。它在 PowerShell 之前就已经存在,并且是一个完全独立的可执行文件。您可以在 PowerShell 脚本中使用外部可执行文件吗?当然,但每个脚本都有与 PowerShell 无关的细节。
您不需要在您的系统或任何系统上安装甚至启用 RSAT 来使用 AD cmdlet。
您只需要能够与具有该功能的服务器(域控制器或备份域控制器或安装了 RSAT 的服务器/工作站)建立远程会话即可。有几种方法可以在不安装/启用系统上的 RSAT 工具的情况下使用 AD cmdlet。
这在内置帮助文件和网络上都有完整记录...它被称为 PowerShell Remoting。要使用它,必须在大多数远程场景中启用 cmdlet 的服务器上允许它,您必须是远程主机上的本地管理员。
描述如何在 PowerShell 中运行远程命令。
详细描述
您可以使用临时或持久连接在一台或多台计算机上运行远程命令。您还可以与单台远程计算机启动交互式会话。
本主题提供了一系列示例,向您展示如何运行不同类型的远程命令。尝试这些基本命令后,请阅读描述这些命令中使用的每个 cmdlet 的帮助主题。这些主题提供了详细信息并解释了如何修改命令以满足您的需求。
注意:要使用 PowerShell 远程处理,必须为本地和远程计算机配置远程处理。有关详细信息,请参阅 about_Remote_Requirements。
进入PSSession# 这称为使用显式 PowerShell 远程处理,用于正常的交互式内容
新PSSession# 这被称为使用脚本和普通交互中使用的隐式 PowerShell 远程处理
请参阅帮助文件中的示例。
# get function / cmdlet details
(Get-Command -Name Enter-PSSession).Parameters
Get-help -Name Enter-PSSession -Full
Get-help -Name Enter-PSSession -Online
Get-help -Name Enter-PSSession -Examples
(Get-Command -Name New-PSSession).Parameters
Get-help -Name New-PSSession -Full
Get-help -Name New-PSSession -Online
Get-help -Name New-PSSession -Examples
无需安装任何软件即可使用 PowerShell Active Directory 命令
第三种方法是直接使用 ADSI
带有 ADSI 的 Active Directory PowerShell
或者使用 ADSI 搜索命名空间
使用 PowerShell adsiSearcher 类型加速器搜索 Active Directory
#user properties
$san = 'user'
($getad = (([adsisearcher]"(&(objectCategory=User)(samaccountname=$san))").findall()).properties)
#Computer properties
$pc = 'computername'
($getad = (([adsisearcher]"(&(objectCategory=Computer)(name=$pc))").findall()).properties)