SharePoint自動化部署,利用PowerShell 導出/導入AD中的用戶


這幾個月一直在幫客戶改需求,部署。我已經心力憔悴,經過一段時間的摸索,我對用PowerShell實現自動化部署也有了一些心得,比如說利用PowerShell導出導入AD中的User。在基於SharePoint平台開發時,利用AD來進行人員的管理,一般會建組織單元(OrganizationalUnit)來對用戶進行管理。當最終部署到客戶的服務器上時,怎樣把本地AD中的用戶數據同步到服務器上呢,要知道如果手動輸入人員是一件麻煩的事。幸運的事,PowerShell可以幫我們解決這個麻煩的問題。

導出AD Users(Export-Csv)

  • 首先導出本地相應OU中的User Object
<#

.Description

從AD中的組織單元里以csv格式導出人員數據

.Example

.\userInfoExport.ps1 -ou "Sources" -dc "xcgov" -path "c:\temp\xxx.csv"

#>

param([string]$ou,[string]$dc,[string]$path)

if(!(Get-PSSnapin| Where-Object{$_.Name -eq "Microsoft.SharePoint.PowerShell"})){

    Add-PSSnapin "Microsoft.SharePoint.PowerShell"
}

$searchBase='OU='+$ou+',Dc='+$dc+',Dc=com'

Get-ADUser -LDAPFilter '(name=*)' -SearchBase $searchBase |Select GivenName,SurName,Name,SamAccountName|Export-Csv $path -NoTypeInformation -Encoding UTF8
  • 導出時注意編碼格式,特別是數據中包含中文等。比如我這兒使用的是UTF-8。
  • 導出的對象包含許多屬性,我們選重要的屬性導出,比如GivenName、SurName、Name、SamAccountName,結果如下所示:

導入AD Users(Import-Csv)

  • 當得到指定的OU中的User后,接下來就是導入到線上服務器AD指定的OU中
<#

.Description

從指定的csv格式中導入人員信息

.Example

.\importUserInfo.ps1 -ou "Hello" -dc "Kingdom" -sourcePath "C:\temp\xxx.csv"

#>

param([string]$ou,[string]$dc,[string]$sourcePath)

if(!(Get-PSSnapin|Where-Object{$_.Name -eq "Microsoft.SharePoint.PowerShell"})){

     Add-PSSnapin "Microsoft.SharePoint.PowerShell" 

}

#創建組織單元#

[string]$path='OU='+$ou+',Dc='+$dc+',Dc=Com'

if(![adsi]::Exists("LDAP://$path")){

    $domainObj=[adsi]("LDAP://Dc="+$dc+",Dc=com")

    $domainOU=$domainObj.Create("OrganizationalUnit","OU="+$ou)

    $domainOU.SetInfo()
}

$users=Import-Csv -Path $sourcePath

foreach($user in $users){

    $givenName=$user.GivenName

    $surName=$user.SurName

    $name=$user.Name

    $samAccountName=$user.SamAccountName

    $userPrincipalName=$samAccountName+'@'+$dc+'.com'

    $password=$user.Password

    #創建AD User#

    New-ADUser -Name $name -SamAccountName $samAccountName -UserPrincipalName $userPrincipalName -DisplayName $name -GivenName $givenName -Surname $surName -AccountPassword (ConvertTo-SecureString $password -AsPlainText -Force) -PasswordNeverExpires $true -Enabled $true -Path $path

}

Write-Host "導入成功"
  • 如果導入的時候一直出現亂碼,但用Excel打開csv格式時都是正確的編碼。嘗試將csv用記事本打開,另存為UTF-8格式。因為我使用的英文版的Server,不知道中文版本的系統是否會出現導入亂碼。

導入成功后,如下所示:

小結

這篇博客對PowerShell自動化部署SharePoint開了個頭,下一篇隨筆打算寫寫利用SPSD進行自動化部署SharePoint,包括利用PowerShell創建權限組,分配權限,設置母版頁等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM