首页 > 解决方案 > 通过 UNIX Python 设置 ADUser

问题描述

我们正在研究一些自动化,如果 X 事件发生,那么它将调用 PowerShell 脚本来执行一些操作。问题是我们的平台是 UNIX,我运行 PowerShell 命令的结果好坏参半。

我已经在 CentOS 7 上安装了 PowerShell RPM,我让它适用于诸如“Invoke-Command -computername”之类的基本命令,并下拉 netstat 信息或类似的东西。我的问题是 UNIX 的特定 Active Directory 模块。

下面是我要运行的代码,但我得到“Set-ADUser 未被识别为 cmdlet、函数、脚本文件或可运行程序的名称”。

我怎样才能将此模块导入 CentOS 以便我可以运行以下命令?

#!/usr/bin/python3.6

import os
import getpass

userid = input('Enter the username you want to force a password reset on: ')
username = input('Enter your domain username: ')
password = getpass.getpass('Enter your domain password: ')

os.system("pwsh -c '$username = \"" + username + "\"; $password = \"" + password + "\";  \
$userPassword = ConvertTo-SecureString -String \"" + password + "\" -AsPlainText -Force; $credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $Username,$userpassword; \
Set-ADUser " + userid + "-ChangePasswordAtLogon $true'")

我将https://pypi.org/project/pyad/视为一个潜在的模块,但仍然没有看到引用的 Set-ADUser 命令,也没有看到 ChangePasswordAtLogon 选项。

注意:我知道一些发送密码信息现在不是很好,只是做一个快速测试看看这是否可能。

标签: powershellunix

解决方案


我做了更多的挖掘,据我所知,微软不支持 UNIX 中的 AD 模块。因此,我不得不依靠在 Windows 计算机上调用命令。

我仍然愿意接受其他建议,但现在这在技术上有效。

Invoke-Command -ComputerName domain_controller -Authentication Negotiate -Credential $credentials -ScriptBlock {Set-ADUser " + user + " -ChangePasswordAtLogon $true}

推荐阅读