这是一个非常悲伤的需求,整个逻辑弄的我有点吐血,幸运的是终于做完了。由于用到了太多变量,不写备注自己也看不懂,记录一下。

需求是这样的:某个用户位于某个安全组内,安全组在某个OU下。现在需要创建一个新的OU,只改变OU中的某一个关键词,其他部分照抄,创建一个计算机账号,放到新的OU下。

#定义函数,参数是x,分别是1和2,生成的计算机的尾巴不一样
function chuangjianjisuanjiX ($xuhao)
{if ($xuhao -eq "1"){ $xuhao = "-" }elseif ($xuhao -eq "2"){ $xuhao = "X" }#计算机名的来源是更上一级的一个参数,员工编号$jisuanjiname = $jisuanji#获取中文名,其实这里最终没有用到$zhongwenming =  (Get-ADUser $jisuanjiname).name#识别创建计算机规则,即创建员工编号+序号的计算机名字$xingmingshibiechar = $jisuanjiname + $xuhao#获取操作时间$date = date#准备后面 用的计算机描述信息$miaoshu = (Get-ADUser $jisuanjiname -Properties *).extensionAttribute1 + (Get-ADUser $jisuanjiname).name#这是另外一种描述信息,备注掉了,暂时不用。#$miaoshu = (Get-ADUser $jisuanjiname).name + "使用," + (get-aduser $env:USERNAME).name + "创建。时间是" + $date#获取用户所在的OU。#$newcomputerou = (Get-ADUser $jisuanjiname).DistinguishedName#获取最终应该放置的计算机OU#这里比较长,首先获取这个用户所在的安全组和邮件组,然后后去组信息,查找符合条件的安全组,最后获取这个安全组的DistinguishedName,也就是它的OU名$newcomputeroux = ((Get-ADUser $jisuanjiname -Properties *).memberof | Get-ADGroup | ?{ $_.distinguishedname -match "xxxxxxxxxxxx" }).DistinguishedName#获取一下安全组的名字的长度,这个和上面的类似,很简单,不说了。$yhmchangdu = ((Get-ADUser $jisuanjiname -Properties *).memberof | Get-ADGroup | ?{ $_.distinguishedname -match "xxxxxxxxxxxx" }).name.Length#关键字替换,把原来OU中的xxx换成计算机OU,这里 有个remove+4的操作,具体的大家可以试试,很巧妙。$newcomputerou = $newcomputeroux.Replace('xxxx', '计算机OU').remove(0, $yhmchangdu + 4)#从OU中去除尾部比较长的部分,一般就是www.contoso.com部分,这样最终循环的时候可以少运行一些$quchuxinxi = "xxxxx"#需要创建的OU列表,有个数,如果计数4个,实际上OU有3个,进行一个循环#下面这行其实不应该备注的,因为显色有点问题,我备注掉了。#$chuangjianOU = $newcomputerou.Replace($quchuxinxi,"").split(',')#统计需要删除的字符数$x = 0#$yxserver = "xxxxxxxxxxx"#    定义两个数组阵列,空的,当前OU和部门名$dangqianOU = New-Object System.Collections.ArrayList$bumenming2 = New-Object System.Collections.ArrayList#进入关键环节,循环部分,这里用到了创建OU的计数器,可以看一下。for ($i = 0; $i -lt $chuangjianOU.Count - 1; $i++){#筛选,替换$bumenming = $newcomputerou.Replace('OU=', '').split(',')[$i]#把修改过的东西加到数组里面$bumenming2.add($newcomputerou.Replace('OU=', '').split(',')[$i]) | Out-Null#计算需要删除的字符数,继续对OU名进行操作$x += $bumenming.Length + 4$dangqianOU.add($newcomputerou.Remove(0, $x)) | Out-Null}#进入下一个循环for ($i = 0; $i -lt $bumenming2.Count; $i++){#做一个倒数计数器$countx = $bumenming2.count - $i - 1#创建新的组织单位,也就是OU,参数都是从上面获取的。因为OU要一级一级创建,所以这里计数器也是倒数的new-ADOrganizationalUnit -name $bumenming2[$countx] -Path $dangqianOU[$countx] -Server $global:yxserver}#创建计算机New-ADComputer -Name $xingmingshibiechar -path $newcomputerou -Server $global:yxserver -Enabled $True -Description $miaoshu #-ManagedBy $jisuanjiname  Location "Redmond,WA"#location是位置信息$information = $_.used + "     " + $_.OU + "     " + $_.OU2 + "  " + $date#设置一下计算机描述的特殊字段,这是我新加的,把原安全组的信息写进去Set-ADComputer $xingmingshibiechar -server $global:yxserver -Replace @{ computerdis = $newcomputeroux }}

PowerShell通过安全组创建计算机账号相关推荐

  1. boost::mpi模块从组创建的传播者的测试

    boost::mpi模块从组创建的传播者的测试 实现功能 C++实现代码 实现功能 boost::mpi模块从组创建的传播者的测试 C++实现代码 #include <boost/mpi/env ...

  2. windows 2008 域 删除不活动计算机账号,如何删除域内非活动计算机账号?

    域内管理很多用户和计算机,但是常常有无用的用户和计算机没有退出域,而浪费域内的资源.如何删除一段时间内没有登录域非活动计算机账号呢?下文给出了详细的描述. 命令:dsquery http://tech ...

  3. js 数组头部添加_javaScript 为对象型数组创建表格

    实现过程 初始化函数 1.定义字符串变量str,初始值为" 2.执行添加表头函数 3.执行添加表格部分 4.字符串变量添加table尾标签" " 5.将str显示在页面d ...

  4. 使用PowerShell监视您的Azure计算机

    介绍 (Introduction) In earlier chapters, I show you how to create your Virtual Machine in Azure using ...

  5. 如何检查计算机账号克隆

    如何检查计算机账号克隆 simeon    随着个人计算机安全意识的提高,网络***程序的生命周期越来越短,而如果要对***软件进行免杀,必须掌握软件加壳.修改特征码等技术.对于网络上的计算机,特别是 ...

  6. 计算机用户域怎么删除,如何删除域内非活动计算机账号?

    域内管理很多用户和计算机,但是常常有无用的用户和计算机没有退出域,而浪费域内的资源.如何删除一段时间内没有登录域非活动计算机账号呢?下文给出了详细的描述. 命令:dsquery http://tech ...

  7. IM开发——群组创建业务设计

    最近更新: 2021-10-14:增加效果图和代码链接. 2020-11-02:初稿. 需求分析 群聊是很基础的功能需求,在进行群组聊天前,逃不过创建群组的这么一个过程. 接下来,我们对微信进行一个简 ...

  8. 复旦大学桂韬:当NLP邂逅Social Media--构建计算机与网络语言的桥梁

    不到现场,照样看最干货的学术报告! 嗨,大家好.这里是学术报告专栏,读芯术小编不定期挑选并亲自跑会,为大家奉献科技领域最优秀的学术报告,为同学们记录报告干货,并想方设法搞到一手的PPT和现场视频--足 ...

  9. linux逻辑文件块,linux逻辑卷组创建以及修改

    创建逻辑卷组: 一.将扩展的硬盘分区 新加一块SCSI硬盘,需要将其分成三个区:代码: #fdisk  /dev/sdb进入fdisk模式:Command (m for help):p //查看新硬盘 ...

最新文章

  1. sqlserver如何通过管理器设置字段的自增
  2. 看完 50000 张专辑封面后,AI 设计师疯狂输出
  3. Dreamwerver8下定义表单实现第一个登陆页面
  4. 外部中断---STM32F1
  5. Exchange2010应用地址列表
  6. 在C++中创建并使用Web服务
  7. C++:求区间内最大的因子和
  8. C#语言学习--基础部分(十三)枚举类型和结构体
  9. table中加表单元素怎么验证_el-table嵌入表单元素注意事项(验证规则prop写法与数据初始化)...
  10. socket端口重定向(python示例)
  11. 个性化头像生成——微信小程序开发
  12. Android P WMS addwindow流程
  13. 生命的火花盛开与如幻如梦
  14. Python计算某年某月某日天数
  15. 用 Python 发电子邮件
  16. AutoIt上路03-添加工具栏
  17. STATA 和 SAS 输入输出示范
  18. CentOS 7 YUM安装MariaDB 10.1
  19. python用函数绘制椭圆_Python学习笔记——opencv绘制椭圆
  20. java写到txt乱码_java读取txt文本发生乱码的解决方法

热门文章

  1. 【Excle数据透视表】如何在数据透视表中使用合并单元格标志
  2. 二叉树的最小高度,最大高度(深度)和宽度
  3. 到底该不该从开发转测试
  4. iOS UINavigationController
  5. 总结 - 沉寂了大半年后的又一次
  6. 从Asp.net转到Php之调试
  7. java window.onload_从HTML中的window.onload调用webpacked代码
  8. python防反编译_Python - 浅谈Python的编译与反编译
  9. 数据结构设计_撮合引擎开发:数据结构设计
  10. 多因素方差分析_方差分析入门