PowerShell通过安全组创建计算机账号
这是一个非常悲伤的需求,整个逻辑弄的我有点吐血,幸运的是终于做完了。由于用到了太多变量,不写备注自己也看不懂,记录一下。
需求是这样的:某个用户位于某个安全组内,安全组在某个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通过安全组创建计算机账号
- PowerShell通过安全组创建计算机账号
- 通过powershell来创建Azure虚拟机
- 【运维】通过计算机管理控制台创建共享文件
- Exchange2007:通过PowerShell批量创建用户邮箱
- 未能创建SSL/TLS安全通道,导致的通过HTTPS协议访问WCF服务
- Powershell 创建文件,安全组和DFS链接
- 通过unlink创建安全的临时文件
- 通过先unlink()后close()创建安全的临时文件
- [Redis]如何通过Powershell创建Redis服务
- SharePoint自动化系列——通过PowerShell创建SharePoint Site Collection
- Exchange2007通过PowerShell批量创建用户邮箱指定组成员邮箱
- SharePoint自动化系列——通过PowerShell创建SharePoint Web
- 远程桌面连接win7 无法验证此远程计算机的身份 由于安全证书存在问题,因此远程计算机无法通过身份验证
- Exchange通过powershell创建帐号的命令
- PowerShell2.0之桌面计算机维护(四)审核安全的屏幕保护程序
- 服务器上出现应用程序错误。此应用程序的当前自定义错误设置禁止远程查看应用程序错误的详细信息(出于安全原因)。但可以通过在本地服务器计算机上运行的浏览器查看。
- powershell:Invoke-WebRequest : 请求被中止: 未能创建 SSL/TLS 安全通道
- PowerShell2.0之桌面计算机维护(四)审核安全的屏幕保护程序
- Powershell脚本检测Azure账号是否登陆,资源组是否创建,并部署ARM template