【问题标题】:A bit more challenging - Batch script to add domain user to local administrator group Windows 7更具挑战性 - 将域用户添加到本地管理员组 Windows 7 的批处理脚本
【发布时间】:2013-11-05 01:21:37
【问题描述】:

我想编写一个脚本,将域用户添加到本地管理员组。 我已经试过了

NET LOCALGROUP Administrators "domain\domainuser" /ADD

但我收到拒绝访问错误。

问题是如果我想以域用户身份运行它,它没有本地管理员权限,如果以本地管理员身份运行,它没有访问域名的权限。 (我不想使用域管理员)

如果我手动右键单击计算机图标,而不是管理,我输入计算机名称/本地管理员用户/密码,而不是本地用户和Groups -> Groups 文件夹 我想将用户添加到 Administrators,系统提示我再次登录。如果我使用域用户登录,它可以工作。

我的问题是,是否可以用批处理脚本做同样的事情(或类似的事情)?

【问题讨论】:

    标签: batch-file dns administrator


    【解决方案1】:

    也许,来自 vbs

    GetObject("WinNT://" + WScript.CreateObject("WScript.Network").ComputerName + "/Administrators").Add "WinNT://DomainName/UserName"
    

    【讨论】:

    • 如果我使用本地管理员权限从 cmd 调用 vbs,它可以正常工作。感谢您的快速答复!
    【解决方案2】:

    我用另一种方式解决了这个问题,使用 2 个批处理文件 所以我给你我的代码:

    这个在 c: 中创建一个文件夹,而不是创建一个文本文件,它复制其中当前用户的名称,而不是同一文件夹中的另一个批处理文件,最后以本地管理员身份运行它。如果你写的密码正确(你写的时候密码不会显示为“*”):

    mkdir c:\tempfiles$
    break>c:\tempfiles$\temp.txt
    echo %username% >> "c:\tempfiles$\temp.txt"
    copy "%~dp0\admin.bat" "c:\tempfiles$"
    runas /noprofile /env /user:%computername%\<LOCAL ADMIN USER> "C:\tempfiles$\admin.bat"
    pause
    rmdir /s /q "c:\tempfiles$"
    

    admin.bat,使用文本文件中写入的用户名(如果不是,它将使用 %username% 作为本地管理员用户名来添加它,因为我们以本地管理员身份运行它) 批处理文件的副本只是必要的,因此您可以从任何地方运行它。例如,如果您将它放在服务器的映射驱动器上,它将无法工作。

    set /p u=<c:\tempfiles$\temp.txt
    net localgroup Administrators /add <DOMAIN NAME>\%u%
    

    我已经在多台计算机上尝试过,在大多数情况下,它都可以运行。在某些计算机上它没有,可能是因为我公司的当地政策。我还没有弄清楚。

    如有任何问题或建议,请放心写下您的意见。

    【讨论】:

      【解决方案3】:

      此批处理文件的目的是获取域组成员并将它们添加到本地组。您必须右键单击此文件并选择以管理员身份运行。

      @echo off 
      setlocal EnableDelayedExpansion
      set /p v1=[Enter Domain Group Name]
      set /p v2=[Enter domain name: xxx.com ]
      set /p v3=[Enter Localgroup "Name"]
      
      For /F "skip=8 tokens=1 delims= " %%G IN ('net group %v1% /domain' ) ^
      DO if %%G neq The net localgroup %v3% %v2%\%%G  /add 
      timeout /t 1
      
      For /F "skip=8 tokens=2 delims= " %%G IN ('net group %v1% /domain' ) ^
      DO if %%G neq command net localgroup %v3% %v2%\%%G  /add
      timeout /t 1
      
      For /F "skip=8 tokens=3 delims= " %%G IN ('net group %v1% /domain' ) ^
      DO if %%G neq completed net localgroup %v3% %v2%\%%G /add
      timeout /t 1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多