在域内环境中,常常需要使用命令行管理域用户,此时可以使用Active Directory中的命令行工具Dsquery.exe,或CSVE,以及Ldifde等,其实,使用Windows Powershell来进行管理操作也是相当的方便。

下面以创建用户举例:

创建域用户最基本的Windows Powershell脚本类似这样:

$objOU=[ADSI]”LDAP://OU=People,DC=contoso,DC=com”
$objUser=$objU.Create(“user”,”CN=Mary North”)
$odjUser.Put=(“sAMAccountName”,”mary.north”)
$objUser.SetInfo()

上述代码列举了在Active Directory中使用Windows Powershell创建用户的四个基本步骤。

下面将作详细介绍。

连接到Active Directory容器

要创建用户这样的对象,实际上是要对该对象的容器来创建对象。因此首先需要针对容器,执行某种操作,也就是“方法”。第一步需要连接到容器,Windows Powershell可以使用Active Directory服务接口类型适配器切入到Active Directory对象。要连接Active Directory对象,必须提交LDAP查询字符串,也就是LDAP://协议标识符,后跟对象的DN。因此第一行代码应该像下面这样:

$objOU=[ADSI]"LDAP://OU=People,DC=contoso,DC=com"

Windows Powershell需要使用ADSI类型适配器创建代表People OU的对象,并将其分配给分量。名为objOU的变量反映了对变量类型进行标识,以obj开头只是编程标准,但实际变量可以使用任何名称。

调用Create方法

至此,变量$objOU就可以代表People OU。接着即可使用容器的create方法让容器创建对象。Create方法需要提供两个参数:对象类和对象RDN。对象的RDN是指该对象在父容器下的名称位置,大部分对象类则使用"CN=对象名"这样的格式作为自己的RDN。然而OURDN"OU=组织单位名称"这样的格式,而域的RDN"DN=域名"。因此下列代码可以使用"CN=Mary North"这样的RDN创建用户对象:

$objUser=$objU.Create(“user”,”CN=Mary North”)

生成的对象结果会分配给变量$objUser,并用该变量代表要创建的对象,可供后续操作。

填写用户属性

这里需要注意一个问题,在将改动合并之前,新对象和其进行的改动都不会保存,而在填写所有必要的属性之前,还不能成功合并改动。用户对象的必须舒心包括windows 2000前登陆名。该属性的LDAP名称是sAMAccountName,因此代码的下一行需要为对象指派sAMAccountName,此时需要使用Put方法。Put是为对象写入属性的标准方法,Get则是检索对象属性的标准方法,此处的代码应该像下面这样:

$odjUser.Put=(“sAMAccountName”,”Mary North”)

对于用户对象,还有其他强制属性,包括对象的安全标识符(SID),但这些对象会在将新用户提交到目录的时候用Active Directory自动创建。

使用SetInfo方法合并改动

要合并改动,请使用Active Directory对象的SetInfo方法。此处的代码应该像下面这样:

$objUser.SetInfo()

填写其他用户属性

上述命令将创建只包含强制sAMAccountName属性的用户,在创建用户对象时,还需要填写其他用户属性。前面介绍了使用用户对象的Put方法写入属性,因此这里只需要重复调用该方法,指定需要添加的每个属性即可:

$odjUser.Put=(“sAMAccountName”, ”$samAccountName”)
$odjUser.Put=(“displayName”, ”$displayname”)
$odjUser.Put=(“sn”, “$sn”)
$objUser.SetInfo()

用户的密码又怎么办?使用Put方法无法设置用户密码,相反此时应当使用SetPassword方法,例如这样:

$objUser.SetPassword(“passwd”)

然而SetPassword方法只能在创建好用户并调用SetInfo()方法之后使用,这意味着实际上,我们是首选创建好账户,随即才为其设置密码。这并不是Windows PowershellBug或局限,而是KerberosLDAP的实际要求。不过安全性并不会受损,因为这样创建的账户处于禁用状态。

因此账户的状态实际上是一种标志(flag),无法直接使用Put命令设置。此时需要下列命令:

$objUser.psbase.InvokeSet(“AccountDisabled”,$false)
$objUser.SetInfo()

参考:https://www.cnblogs.com/index-htm/p/5412524.html

使用powershell管理域用户的更多相关文章

  1. Exchange 域用户无权管理邮箱

    将需要管理邮箱的域用户添加至“Microsoft Exchange Security Groups”用户组即可.

  2. (转)从0开始搭建SQL Server AlwaysOn 第一篇(配置域控+域用户DCADMIN)

    原文地址: http://www.cnblogs.com/lyhabc/p/4678330.html 实验环境: 准备工作 软件准备 (1) SQL Server 2012 (2) Windows S ...

  3. AD域撤销域用户管理员权限方案

    一.简介 公司大部分主机加入域已有一段时间了,由于某软件没管理员权限不能执行,所以管理员权限一直没撤销,不能完全实现域的管理效果.但起码实现了域用户脱离不了域的控制:http://www.cnblog ...

  4. JAVA 通过LDAP获取AD域用户及组织信息

    因为工作需求近期做过一个从客户AD域获取数据实现单点登录的功能,在此整理分享. 前提:用户可能有很多系统的情况下,为了方便账号的统一管理使用AD域验证登录,所以不需要我们的系统登录,就需要获取用户的A ...

  5. SVN+Apache域用户认证配置方法_Windows(转,重新排版,部分内容更新优化)

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  6. SharePoint 2010中重置windows 活动目录(AD)域用户密码的WebPart(免费下载)

    由于SharePoint 2013推出不久,并非所有的企业都会升级到SharePoint 2013的,毕竟升级不是打打补丁这么简单,更多的企业还是使用Sharepoint 2010版本的,因此本人自行 ...

  7. SharePoint 2013中修改windows 活动目录(AD)域用户密码的WebPart(免费下载)

    前段时间工作很忙,好久没更新博客了,趁国庆休假期间,整理了两个之前积累很实用的企业集成组件,并在真正的大型项目中经受住了考验:.Net版SAP RFC适配器组件和SharePoint 2013修改AD ...

  8. JBOSS EAP 6 系列五 Managed domains 管理域最主要的功能是“统一部署,统一配置”

    摘要 本文首先介绍Managed Domain的概念,管理域最主要的功能是"统一部署,统一配置".接下来通过一个实例在"统一配置"部分实现一个双机配置起来的域, ...

  9. Windows Server 2016-批量新建域用户(二)

    前几个章节我们讲到Windows Server 2016-图形化新建域用户(一),本章节我们简单讲解下如何通过命令批量创建域用户,以便高效完成日常工作中实际批量创建用户需求,内容涉及dsadd use ...

随机推荐

  1. .Net面试题三

    1..Net中类和结构的区别? 2.死锁地必要条件?怎么克服? 3.接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类? 4.构造器COnstructor是否可以被继承?是否可以被 ...

  2. WEBAPI 最近更新项目时 服务器总是提示:An error has occurred.

    解决办法: 在webconfig中设置 <system.web><customErrors mode="Off"/></system.web> ...

  3. QT 获取字体大小

    QFont font(androidFont); QFontInfo fInfo(font); qDebug()<<"FFFFFFFFFFFFFFFFFFFFFFFPPPSIZE ...

  4. 基于APR模式的Tomcat8环境部署

    1.版本信息 组件名 版本号 jdk 1.8.111 tomcat 8.5.9 apr 1.6.3 apr-iconv 1.2.2 apr-util 1.6.2 tomcat-native 1.2.1 ...

  5. mui APP 微信登录授权

    一.在微信平台上申请appid.appsecret. 二.app --> manifest.json-->SDK配置(填写申请好的appid和appsecret) 三.在登录页,点击微信登 ...

  6. Mybatis和hibernate的优缺点比较

    介绍: Hibernate :Hibernate 是当前最流行的ORM框架,对数据库结构提供了较为完整的封装. Mybatis:Mybatis同样也是非常流行的ORM框架,主要着力点在于POJO 与S ...

  7. 怎么处理U盘无法正常弹出的情况?

    我们都知道U盘和移动硬盘在使用完毕后需要点击“安全删除硬件并弹出”后才能拔出,这样可以避免U盘还在工作时被拔出而造成的故障. 但有时我们点击“安全删除硬件并弹出”时,系统会提示U盘正在工作,没有办法停 ...

  8. 理解函数声明--signal函数的声明

    1.显示调用首地址为0的例程:(*(void(*)())0)() 显示调用首地址为0的例程的表达式为:(*(void(*)())0)() 分两步分析: 假定变量fp是一个函数指针,调用方法如下:(*f ...

  9. MySQL 安装与基本概念

    Mysql版本 第一条产品线:5.0.xx及升级到5.1.xx的产品系列,这条产品线继续完善与改进其用户体验和性能,同时增加新功能,这条路线可以说是MySQL早期产品的延续系列,这一系列的产品发布情况 ...

  10. Winfrom TextBox 添加水印文字 + 字体颜色

    using System.Drawing; using System.Windows.Forms; namespace KK.WaterMark.Control { public partial cl ...