powershell Set-Aduser Credentials - 如何自动化?

powershell Set-Aduser Credentials - how to automate?

出于自动化目的 - 运行 从一个 AD 迁移到另一个 - 我想对我连接到的 AD 服务器的脚本操作进行身份验证以执行操作。

例如通过 powershell 创建用户非常简单:

PS C:\Users\myuser> Get-ADUser -Server "domain1.net" -Identity username-1 | Set-ADUser -Server \
"domain1.net" -SamAccountName usernam-1-mig -DisplayName usernam-1-mig -Surname usernam-1-mig \
-UserPrincipalName usernam-1-mig -GivenName usernam-1-mig -Credential AD\admin-user

因为每次用户重命名时都需要登录,而且我不仅使用 powershell 而是 python(是的,因为迁移不仅与 AD 移动相关,而且还有更多操作),我想为每个 powershell 命令提供其用于域身份验证的用户名和密码。

我尝试了其他网站上的几种方法,但无法正常工作。 PSCredentials 我看了也看不懂。

来自 python 我这样调用 powershell 命令

migration = subprocess.Popen(["powershell.exe", ps_rename_cmd ], stdout=subprocess.PIPE)
migration.wait()

ps_rename_cmd 是一个简单的文本变量,其内容与第一个代码片段

中的内容相似

非常感谢您的帮助

好的,在深入研究文档并感谢伟大的 page! 之后,我能够弄清楚...

从 powershell 我了解到这工作正常:

New-ADUser -Server "domain.net" -AccountPassword (ConvertTo-SecureString user_password \
-AsPlainText -Force) -EmailAddress "user1@domain.net" -Name "user1" -DisplayName "user1" \
-GivenName "user1" -Surname "user1" -UserPrincipalName "user1" -path \
"OU=COMPANY,OU=Applications,OU=Users,OU=DEPARTMENT,OU=Global,DC=department,DC=domain,\
DC=net" -PasswordNeverExpires $true -Confirm:$false -Credential (New-Object \
System.Management.Automation.PSCredential ("DOMAIN\admin-user",(ConvertTo-SecureString \
"password" -AsPlainText -Force)))

重要的是变量中的文本格式正确!

  1. 为凭证部分创建了字符串
ps_credentials = (f' (New-Object System.Management.Automation.PSCredential ("DOMAIN1\{auth_user}",(ConvertTo-SecureString "{auth_pw}" -AsPlainText -Force)))')
  1. 命令本身就是一个字符串,格式正确! ps_credentials 变量用于括号 ()
ps_create_cmd = (f'New-ADUser -Server \"{domain_name}\" -Path \"{ou_destination}\" -AccountPassword ({sec_pw}) -EmailAddress {username}@domain.net -Name {username} -SamAccountName {username} -DisplayName {username} -Surname {username} -UserPrincipalName {username} -GivenName {username} -PasswordNeverExpires $true -Confirm:$false -Credential {ps_credentials}')
  1. 运行 这样的 powershell 命令
create_user = subprocess.run(["powershell.exe", (f'{ps_create_cmd}')], capture_output=True, text=True)

阻碍我自动执行所有这些操作的凭据 window 不再弹出,管理员用户获得 AD 服务器的身份验证以创建新帐户。 Ofc 这可以更改为与任何需要命令的凭据一起使用。

非常感谢达夫尼网站的作者。做得真好 我希望将来其他人会发现这很有用。期待富有成效的讨论:)