You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Active Directory指定OU的所有计算机上执行PowerShell脚本

批量在AD特定OU计算机上执行PowerShell脚本方案

问题背景

需要在AD特定OU(OU=Location,OU=Corporate,DC=corp,DC=corporation,DC=com)内的所有计算机上执行创建快捷方式的PowerShell脚本,无组策略权限,希望通过PowerShell AD命令实现批量执行。

前提条件

  • 执行账号需拥有目标计算机的本地管理员权限
  • 目标计算机已启用WinRM(Windows远程管理服务,域环境通常默认开启)

具体步骤

1. 获取目标OU内的在线计算机列表

使用Get-ADComputer筛选目标OU下的计算机,并通过Test-Connection验证在线状态:

# 获取目标OU内的在线计算机名称
$computers = Get-ADComputer -SearchBase "OU=Location,OU=Corporate,DC=corp,DC=corporation,DC=com" -Filter * | 
             Where-Object { Test-Connection $_.Name -Count 1 -Quiet } |
             Select-Object -ExpandProperty Name

2. 封装执行脚本(修正原脚本问题)

原脚本存在变量大小写不一致、路径兼容性问题,修正后封装为脚本块:

$scriptBlock = {
    # 替换为远程计算机可访问的路径(建议用UNC共享路径)
    $SourceFilePath = "\\corp.corporation.com\shared\your-target-app.exe"
    # 建议使用公共桌面,避免用户目录权限限制
    $ShortcutPath = "C:\Users\Public\Desktop\nameofplace.lnk"
    
    $WScriptObj = New-Object -ComObject WScript.Shell
    $shortcut = $WScriptObj.CreateShortcut($ShortcutPath)
    $shortcut.TargetPath = $SourceFilePath
    $shortcut.WindowStyle = 1
    $shortcut.Hotkey = "CTRL+SHIFT+T"
    $shortcut.Save()
}

注意:原脚本中$ShortCut.Hotkey的大小写需统一为$shortcut.Hotkey,避免变量未定义错误;SourceFilePath若为本地路径仅在你的机器有效,需替换为远程机器可访问的UNC路径或本地已存在的路径。

3. 远程批量执行脚本

遍历计算机列表,通过Invoke-Command远程执行脚本:

foreach ($computer in $computers) {
    try {
        Invoke-Command -ComputerName $computer -ScriptBlock $scriptBlock -ErrorAction Stop
        Write-Host "✅ 脚本在 $computer 上执行成功"
    }
    catch {
        Write-Host "❌ 脚本在 $computer 上执行失败: $_"
    }
}

额外处理

若目标计算机未开启WinRM,可尝试执行以下命令开启(需本地管理员权限):

Invoke-Command -ComputerName $computer -ScriptBlock { Enable-PSRemoting -Force } -ErrorAction Stop

提示:若域组策略禁用WinRM,此命令可能无法生效。

内容的提问来源于stack exchange,提问作者dopaper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 23:31:12