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

问题描述 投票:0回答:0

为了达到自动化的目的--从一个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移动有关,而且还有更多的操作),我想为每个powershell命令提供用户名和密码来进行域认证。

我尝试了一些来自其他网站的方法,但不能使其工作。PSCredentials我看了一下,但也没弄明白。

在python中,我是这样调用powershell命令的

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

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

先谢谢你的帮助

python powershell automation credentials
0
投票

好的,在深入研究了文档之后,感谢一位伟大的工程师,他为我提供了一个很好的解决方案。网页!!!!我终于弄明白了... ...

从powershell中,我了解到这是可以的。

New-ADUser -Server "domain.net" -AccountPassword (ConvertTo-SecureString user_password \
-AsPlainText -Force) -EmailAddress "[email protected]" -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. 为Credential部分创建了字符串
ps_credentials = (f' (New-Object System.Management.Automation.PSCredential ("DOMAIN1\{auth_user}",(ConvertTo-SecureString "{auth_pw}" -AsPlainText -Force)))')
  1. 命令本身就是一个字符串,格式很好! ps_credentials 变量在 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)

阻碍我自动完成这一切的凭证窗口不再弹出,管理员用户得到认证,向AD服务器创建新账户。Ofc这可以被改变为与任何-Credential required命令一起工作。

非常感谢网站的作者duffney。真的做得很好,我希望将来有人会发现这个有用。期待有成效的讨论:)

© www.soinside.com 2019 - 2024. All rights reserved.