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创建权限组,分配权限,设置母版页等。

本博客为 木宛城主原创,基于 Creative Commons Attribution 2.5 China Mainland License发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 木宛城主(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言。

本文转自木宛城主博客园博客,原文链接:http://www.cnblogs.com/OceanEyes/p/powershell_export_import_ad_users.html,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
数据安全/隐私保护
【Azure Entra ID】使用PowerShell脚本导出Entra ID中指定应用下的所有用户信息
在Azure Entra ID中,需要导出一个Application 下的用户信息, 包含User的创建时间。
|
JavaScript 前端开发 API
前端工程自动化——动态导入
介绍webpack的require.context用法和实例
|
前端开发 JavaScript
less的自动化导入
less的自动化导入
less的自动化导入
|
Windows
Python+selenium 自动化 - 实现自动导入、上传外部文件实例演示
Python+selenium 自动化 - 实现自动导入、上传外部文件实例演示
353 0
Python+selenium 自动化 - 实现自动导入、上传外部文件实例演示