因管理需要計劃將現(xiàn)有的serv-u服務(wù)改成ad+iis+ftp+ntfs架構(gòu),所以需要在ad中新建對應(yīng)群組并添加用戶。
目前成都創(chuàng)新互聯(lián)公司已為上1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計、松原網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。為提高效率減少重復(fù)工作,編寫一個批量新增群組及添加用戶腳本,以下為測試環(huán)境。
=INDEX(A:A,SMALL(IF($B$2:$B$200="Sam",ROW($2:$200),4^8),ROW(A1)))&""
Import-Module ActiveDirectory
$ngroups=Import-Csv C:\Data\ngs.csv
$nusers=Import-Csv C:\Data\nus.csv
foreach ($ngroup in $ngroups) {
#新建組
New-ADGroup -Name $ngroup.name -SamAccountName $ngroup.name -GroupCategory $ngroup.GroupCategory -GroupScope $ngroup.Groupscope -Path $ngroup.path -Description $ngroup.description -PassThru
Get-ADGroup -Identity $ngroup.name | Set-ADGroup -Replace @{info=$ngroup.info}
#新增成員
Add-ADGroupMember -Identity $ngroup.name -Members ($nusers.($ngroup.name) | Where-Object {$_ -ne ''} ) -PassThru
}
name,path,groupcategory,groupscope,description,info
ftp-ops-w,"OU=FTP,OU=Group,DC=lxy,DC=lin",Security,Global,"ip/ftp/ops/","DRI:xx,TEL:xx"
ftp-ops-r,"OU=FTP,OU=Group,DC=lxy,DC=lin",Security,Global,"ip/ftp/ops/","DRI:xx,TEL:xx"
ftp-dba-w,"OU=FTP,OU=Group,DC=lxy,DC=lin",Security,Global,"ip/ftp/dba/","DRI:xx,TEL:xx"
ftp-dba-r,"OU=FTP,OU=Group,DC=lxy,DC=lin",Security,Global,"ip/ftp/dba/","DRI:xx,TEL:xx"
ftp-ops-w,ftp-ops-r,ftp-dba-w,ftp-dba-r
user01,user02,user03,user04
user05,,user06,user07
user08,,user09,
Import-Module ActiveDirectory
foreach ( $num in 1..10 ) {
$user='USER'+$num
New-ADUser $user -Path "OU=Test,DC=iku,DC=lxy" -Enabled:$true -AccountPassword(ConvertTo-SecureString "lxy1989." -AsPlainText -Force)
}
$newusers= Import-Csv .\nu.csv
$newgroups= Import-Csv .\ng.csv
# 新建數(shù)組保存離職或不存在帳號
$array_error_user = New-Object -TypeName System.Collections.ArrayList
$array_disabled_user = New-Object -TypeName System.Collections.ArrayList
foreach ($newgroup in $newgroups) {
$newuser=($newusers.($newgroup.name) | Where-Object {$_ -ne ''})
foreach ($user in $newuser) {
$user_abled= (Get-ADUser $user).enabled # 查詢帳號是否被禁用,默認(rèn)情況下只有離職的帳號才會被禁用
$returned=$? # 若帳號不存在,則返回false
if ($returned -eq $true)
{
if ($user_abled -eq $false)
{$array_disabled_user.Add($user+'@'+($newgroup.name))} # 將被禁用(離職)的帳號添加至數(shù)組
}
else
{ $array_error_user.add($user+'@'+($newgroup.name)) } # 將不存在的帳號添加至數(shù)組
}
}
echo "The following user is disabled :"$array_disabled_user
echo "The following user does not exist :"$array_error_user
vi user.error
xx
xxx
xx
:%s/@.*//g
vi deluser.sh
#!/bin/bash
#在sed中引用變量用雙引號
for user in $(cat user.error)
do
sed -i "s/$user//g" nu.csv
done
$ngroups=Import-Csv C:\Data\ngs.csv
$nusers=Import-Csv C:\Data\nus.csv
# version1
foreach ($ngroup in $ngroups) {
New-ADGroup -Name $ngroup.name -SamAccountName $ngroup.name -GroupCategory $ngroup.GroupCategory -GroupScope $ngroup.Groupscope -Path $ngroup.path -PassThru
Get-ADGroup -Identity $ngroup.name | Set-ADGroup -Replace @{info=$ngroup.info}
}
# version2
# 增加了群組是否存在的判斷
$ngroups = Import-Csv D:\PS\NewGroup\201807\ng.csv -Encoding Unicode
foreach ($ngroup in $ngroups) {
$drop = Get-ADGroup $ngroup.name
$return = $?
# 檢查組是否存,不存在則新建組
if ($return -eq $false){
New-ADGroup -Name $ngroup.name -SamAccountName $ngroup.name -GroupCategory $ngroup.groupcategory -GroupScope $ngroup.groupscope -Path $ngroup.path -Description $ngroup.description
Get-ADGroup $ngroup.name | Set-ADGroup -Replace @{info=$ngroup.info}
}
}
foreach ($ngroup in $ngroups) {
Add-ADGroupMember -Identity $ngroup.name -Members ($nusers.($ngroup.name) | Where-Object {$_ -ne ''} ) -PassThru
}
PS C:\Users\Administrator> ($nusers.'ftp-dba-r' | Where-Object {$_ -ne ''}).count
3
---nu.csv
ftp-ops-w,ftp-ops-r,ftp-dba-w,ftp-dba-r
user1,user2,user3,user4,
user5,,user6,user7,
user8,,user9,,
---
PS C:\> ($nusers.'ftp-dba-r' | Where-Object {$_ -ne ''}).count
2
foreach ($ngroup in $ngroups) {
Get-ADGroupMember -Identity $ngroup.name | select @{name='group';expression={$ngroup.name}},@{name='name';expression={$_.name}}
}
group name
----- ----
ftp-ops-w USER1
ftp-ops-w USER5
ftp-ops-w USER8
ftp-ops-r USER2
ftp-dba-w USER3
ftp-dba-w USER6
ftp-dba-w USER9
ftp-dba-r USER4
ftp-dba-r USER7
foreach ($ngroup in $ngroups) {
Remove-ADGroupMember -Identity $ngroup.name -Members (Get-ADGroupMember -Identity $ngroup.name)
}
在使用過程中發(fā)現(xiàn)腳本的功能實現(xiàn)方式生硬,書寫格式并不規(guī)范,不便閱讀,所以作了更新。
# $ngroups = Import-Csv D:\PS\NewGroup\201807\ng.csv -Encoding Unicode
# 新建組
<#
foreach ($ngroup in $ngroups) {
$test = Get-ADGroup $ngroup.name
$return = $?
if ($return -eq $false){
New-ADGroup -Name $ngroup.name -SamAccountName $ngroup.name -GroupCategory $ngroup.groupcategory -GroupScope $ngroup.groupscope -Path $ngroup.path -Description $ngroup.description
Get-ADGroup $ngroup.name | Set-ADGroup -Replace @{info=$ngroup.info}
}
}
#>
# 清空組成員
<#
foreach ($ngroup in $ngroups) {
Remove-ADGroupMember -Identity $ngroup.name -Members (Get-ADGroupMember -Identity $ngroup.name)
}
#>
# 查詢組成員
<#
foreach ($ngroup in $ngroups) {
Get-ADGroupMember -Identity $ngroup.name | select @{name='group';expression={$ngroup.name}},@{name='name';expression={$_.name}}
}
#>
# $ngroups = Import-Csv D:\PS\NewGroup\201807\ngw.csv
# $nusers = Import-Csv D:\PS\NewGroup\201807\nus.csv
# 添加成員
<#
foreach ($ngroup in $ngroups) {
Add-ADGroupMember -Identity $ngroup.name -Members ($nusers.($ngroup.name) | Where-Object {$_ -ne ''} ) -PassThru -Confirm:$false
}
#>
# 統(tǒng)計各群組用戶數(shù)
#<
[int]$sum = 0
$re =foreach ($ngroup in $ngroups){
$user_num = (Get-ADGroupMember ($ngroup.name) | Where-Object {$_ -ne ''}).count
$user_num | select @{name='group';ex={$ngroup.name}},@{name='num';ex={$user_num}}
$sum += $user_num
}
echo $re
echo $sum
#>
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。