########################################################## # Author: Tyrone Zuo # # Describe: Auto Join AD Control # ########################################################## import subprocess import time domain = "xxx.com" #域名字 ou_path = "CN=Computers,DC=xxx,DC=com" # 根据自己AD属性修改 username = "username" password = "password" command = f""" $username = "{username}" $password = "{password}" | ConvertTo-SecureString -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential($username, $password) Add-Computer -DomainName "{domain}" -OUPath "{ou_path}" -Credential $credential -Restart """ try: result = subprocess.run( ["powershell", "-Command", command], capture_output=True, text=True, check=True ) print("STDOUT:", result.stdout) print("STDERR:", result.stderr) except subprocess.CalledProcessError as e: print("Failed to join domain:", e.stderr) time.sleep(5) # 可以看清console输出
代码说明
1.账号和密码:
将管理员账号和密码直接写入脚本中(username 和 password 变量)。
注意:将密码硬编码在脚本中可能存在安全风险,建议在生产环境中使用更安全的方式(如从环境变量或加密文件中读取)。
2.PowerShell 命令:
使用ConvertTo-SecureString 将明文密码转换为安全字符串。
使用New-Object 创建 PSCredential 对象。
调用Add-Computer 命令,并将 PSCredential 对象传递给 -Credential 参数。
在Add-Computer 命令中添加 -Restart 参数,表示加域成功后自动重启电脑。
3.执行命令:
使用subprocess.run 执行 PowerShell 命令,并捕获输出和错误。
4.错误处理:
使用try-except 捕获可能的异常,并打印错误信息。