通过PowerShell创建AD用户:复制命令可行但脚本执行失败求助
解决PowerShell脚本创建AD用户失败的问题
兄弟,从你贴的代码片段来看,直接执行命令能成但脚本跑失败,核心是几个典型的PowerShell远程执行和语法坑,我帮你捋清楚并修正:
问题根源拆解
远程会话用错了方式
你用的Enter-PSSession是交互式远程会话,适合手动敲命令,但脚本里用它的话,后续的变量定义、创建用户命令其实都是在本地执行的,根本没跑到DC服务器上,这自然创建不了用户。脚本里远程执行命令得用Invoke-Command。本地变量没传到远程环境
你在本地定义的$name、$surname这些变量,默认不会自动同步到远程会话里,远程脚本块根本拿不到这些值,创建命令当然会报错。明显的拼写错误
你贴的创建命令里-Surname "$surnam..."少了最后一个字母e,写成$surnam了,这也是语法错误的一环。
修正后的完整脚本
直接用这个脚本就能正常跑了,我把所有坑都填上了:
# 本地获取用户输入 $name = Read-Host "Vorname?" $surname = Read-Host "Nachname?" # 这里可以改成让用户输入密码更安全,比如:$plainPassword = Read-Host "Passwort?" -AsSecureString $plainPassword = "pa$$w0rd" # 远程连接DC并创建AD用户 Invoke-Command -ComputerName DC -Credential dd\administrator -ScriptBlock { # 定义脚本块接收的参数 param($givenName, $surName, $plainPass) # 把明文密码转成安全字符串 $securePassword = $plainPass | ConvertTo-SecureString -AsPlainText -Force # 创建AD用户(记得根据你的AD架构调整-Path参数) New-ADUser -Name "$surName $givenName" ` -GivenName $givenName ` -Surname $surName ` -AccountPassword $securePassword ` -Enabled $true ` -Path "OU=Benutzer,DC=dd,DC=local" } -ArgumentList $name, $surname, $plainPassword Write-Host "AD用户创建流程执行完毕,请检查DC上的用户是否存在!"
额外注意事项
- 确保运行脚本的电脑已经安装了RSAT-AD-PowerShell模块(Windows 10/11可以在"可选功能"里安装)
- 密码里的
$$在PowerShell里会被解析成单个$,如果你的实际密码是pa$w0rd,那脚本里要写成"pa$w0rd"`(用反引号转义) -Path参数一定要对应你的AD组织单元路径,不然用户会被创建到默认的CN=Users容器里,根据你的实际情况调整
内容的提问来源于stack exchange,提问作者Eros
相关产品推荐
相关产品推荐

