使用子域凭据从父域服务器向子域运行脚本

使用子域凭据从父域服务器向子域运行脚本

我编写了一个 Powershell 脚本,用于检查操作系统并进行一些安全扫描。我们从中运行此脚本的服务器是我系统的父域的成员。我需要从该服务器针对我的子域上的所有计算机运行此脚本。我在子域上创建了一个具有管理员权限的帐户,允许扫描子域上的所有计算机。该脚本使用 -ComputerName 和一个变量,该变量是一个列出要扫描的计算机的数组。

我在任务计划程序中设置了一项任务,定期运行此扫描。任务运行后启动脚本,没有任何问题。我已设置以最高权限级别运行脚本。对于任务的凭据,我将它放入了为扫描设置的子域的帐户中。

当我检查日志时,它说该帐户在没有本地管理权限的情况下运行。这就是让我困惑的地方。由于我创建和指定的帐户在父计算机上没有管理权限,但在子域计算机上有管理权限,这有关系吗?出于某种原因,当它针对子域上的每台计算机运行脚本时,它使用“COMPUTERNAME.LOCAL”而不是典型的“COMPUTER”。当我指定 -ComputerName 时,我应该为此使用 FQDN 吗?我也可以像这样从父域运行此脚本到子域,还是需要进行权限或配置更改?该脚本确实有一个名为“-AltCredential”的参数,它会弹出一个用于输入凭据的 UAC 框,但我不想硬编码密码,也不知道如何填写该框,因为它是一个自动脚本。

答案1

您可以使用 PowerShell 5 支持的 PowerShell Remoting。PowerShell Remoting 是一项允许您在远程计算机上运行 PowerShell 命令或脚本的功能。它依赖于 Windows 远程管理 (WinRM) 服务,该服务使用 WS-Management 协议进行通信。

  1. 首先,使用命令启用 powershell 远程处理 Enable-PSRemoting。还要确保两个 dc 之间的 PowerShell 远程处理网络要求已到位。
  2. 然后设置允许的 TrustedHosts。例如 Set-Item WSMan:\localhost\Client\TrustedHosts -Value "ClientComputer1,ClientComputer2" - Force
  3. 然后重新启动 WinRM 服务Restart-Service WinRM

然后远程运行脚本如下:( Invoke-Command -FilePath c:\scripts\test.ps1 -ComputerName childdc您也可以在计算机名后面输入一个IP地址)

我想强调的另一件很酷的事情是,你可以使用 PowerShell Remoting 来打开远程 powershell 会话,使用命令Enter-PSSession

相关内容