powershell - 通过 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 选项。
注意:我知道一些发送密码信息现在不是很好,只是做一个快速测试看看这是否可能。
解决方案
我做了更多的挖掘,据我所知,微软不支持 UNIX 中的 AD 模块。因此,我不得不依靠在 Windows 计算机上调用命令。
我仍然愿意接受其他建议,但现在这在技术上有效。
Invoke-Command -ComputerName domain_controller -Authentication Negotiate -Credential $credentials -ScriptBlock {Set-ADUser " + user + " -ChangePasswordAtLogon $true}
推荐阅读
- java - Java:计算字符串数组的第一个和最后一个字母中的重复
- c++ - 字符串和数组的问题
- json - 当键未知时如何从jmeter中的json中提取值?
- java - 使用 Batik 到 SVG 将 SVG 转换为 PNG 时 Linux 和 OSX 之间的文本差异
- kendo-grid - 如何删除剑道网格分组中的字段名称?
- javascript - SVG没有在浏览器上显示任何东西
- yii2 - yii2 中的 Swiftmailer 和 smtp gmail
- c++ - 为什么我的打印功能之一会删除节点?
- mysql - MySQL,如何通过连接三个表插入新数据表
- javascript - JSON.parse 仅在部署在 pythonanywhere 上时返回语法错误