博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PowerShell通过安全组创建计算机账号
阅读量:6839 次
发布时间:2019-06-26

本文共 2834 字,大约阅读时间需要 9 分钟。

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

需求是这样的:某个用户位于某个安全组内,安全组在某个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 }}

转载地址:http://wtwul.baihongyu.com/

你可能感兴趣的文章
SuperSocket 服务管理器 (ServerManager)
查看>>
程序员要避开哪些坑
查看>>
Eclipse launch failed.Binary not found解决方案
查看>>
NSGA-II入门C1
查看>>
结对第2次作业——WordCount进阶需求
查看>>
两个经典递归问题:菲波那契数列 + 汉诺塔
查看>>
bzoj3171: [Tjoi2013]循环格(费用流)
查看>>
php中处理xml文件的类 simpleXML
查看>>
attr与prop
查看>>
结构体内字节手动对齐(#pragam pack)
查看>>
TagCloudView云标签的灵活运用
查看>>
Wikioi 1020 孪生蜘蛛 Label:Floyd最短路
查看>>
链路聚合
查看>>
Mybatis映射文件(3)
查看>>
SpringtMVC中配置 <mvc:annotation-driven/> 与 <mvc:default-servlet-handler/> 的作用
查看>>
springboot配置文件priperties大全
查看>>
UOJ46. 【清华集训2014】玄学
查看>>
调整屏幕亮度,调整字体大小
查看>>
js解决EasyUI页面渲染速度慢问题(Mask遮罩)
查看>>
swift--添加新手引导页
查看>>