powershell SetAduser凭据如何自动化?

2024-06-16 12:09:18 发布

您现在位置:Python中文网/ 问答频道 /正文

出于自动化目的-运行从一个AD到另一个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 move有关,而且还与许多其他操作有关),因此我希望为每个powershell命令提供其用于域身份验证的用户名和密码

我从其他网站上尝试了几种方法,但都没有成功。我看了看,但也没弄明白

从python中,我这样调用powershell命令

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

ps_rename_cmd是一个简单的文本变量,具有来自第一个代码段的类似内容

事先非常感谢你的帮助


Tags: 用户命令cmdnetservermigrationadps
1条回答
网友
1楼 · 发布于 2024-06-16 12:09:18

好的,在深入研究文档之后,感谢一个伟大的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_凭证变量用于brakets()
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)

凭证窗口,这是阻碍我自动化所有这一切,不再弹出,管理员用户得到认证的广告服务器创建新的帐户。Ofc这可以更改为与任何需要凭证的命令一起使用

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

相关问题 更多 >