使用PowerShell向SharePoint中写入数据

本文介绍了如何在命令行方式下, 创建自定义列表, 将外部数据导入到列表以及生成视图.

$listname = "contact0422"
$column_text = @(
"LanID"
"显示名"
"拼音姓"
"拼音名"
"员工号"
"公司邮箱"
"公司名称"
"手机号码"
"公司电话"
"部门名称"
"岗位"
"地区"
"直属领导"
"状态"
)
Connect-SPOCSOM -Username 'abc@company.cn' -Password 'your_pwd' -Url 'https://company.sharepoint.cn/IT/'
<# 新建自定义列表 #>
New-SPOList -Title $listname -TemplateType 100
<# 新建text类型的列 #>
$column_text | ForEach {
    New-SPOListColumn -ListTitle $listname -FieldDisplayName $_ -FieldType Text
}
<# 插入值 #>
# 通过Get-SPOListColumn -ListTitle $listname -FieldTitle 'LanID'(此处区分大小写)可以查看InternalName
Import-Csv -Path "C:\Users\IT\Desktop\user details template1 - 副本.csv" -Encoding Default | ForEach-Object {
    $fields= @(
        @{"fieldname"="LanID";"fieldvalue"=$_.Lanid},
        @{"fieldname"="_x663e__x793a__x540d_";"fieldvalue"=$_.显示名},
        @{"fieldname"="_x62fc__x97f3__x59d3_";"fieldvalue"=$_.拼音姓},
        @{"fieldname"="_x62fc__x97f3__x540d_";"fieldvalue"=$_.拼音名},
        @{"fieldname"="_x5458__x5de5__x53f7_";"fieldvalue"=$_.员工号},
        @{"fieldname"="_x516c__x53f8__x90ae__x7bb1_";"fieldvalue"=$_.公司邮箱},
        @{"fieldname"="_x516c__x53f8__x540d__x79f0_";"fieldvalue"=$_.公司名称},
        @{"fieldname"="_x624b__x673a__x53f7__x7801_";"fieldvalue"=$_.手机号码},
        @{"fieldname"="_x516c__x53f8__x7535__x8bdd_";"fieldvalue"=$_.公司电话},
        @{"fieldname"="_x90e8__x95e8__x540d__x79f0_";"fieldvalue"=$_.部门名称},
        @{"fieldname"="_x5c97__x4f4d_";"fieldvalue"=$_.岗位},
        @{"fieldname"="_x5730__x533a_";"fieldvalue"=$_.地区},
        @{"fieldname"="_x76f4__x5c5e__x9886__x5bfc_";"fieldvalue"=$_.直属领导},
        @{"fieldname"="_x72b6__x6001_";"fieldvalue"=$_.状态}
)
    New-SPOListItem -ListTitle $listname -ItemTitle $_.员工号 -AdditionalMultipleFields $fields
}

 

2016-4-25更新:

$listname = "contact0425"
Connect-SPOCSOM -Username 'abc@xyz.cn' -Password 'your_pwd' -Url 'https://company.sharepoint.cn/IT/'
$listnames = Get-SPOList
$column_text = @(
"LanID"
"显示名"
"拼音姓"
"拼音名"
"员工号"
"公司邮箱"
"公司名称"
"手机号码"
"公司电话"
"部门名称"
"岗位"
"地区"
"直属领导"
"状态"
)
if ($listname -in $listnames.title) { Write-Host "$listname is already exist in Sharepoint!!!" }
else {
# 新建自定义列表
New-SPOList -Title $listname -TemplateType 100
# 新建text类型的列
$column_text | ForEach {
    New-SPOListColumn -ListTitle $listname -FieldDisplayName $_ -FieldType Text
}}
# 通过Get-SPOListColumn -ListTitle $listname -FieldTitle 'LanID'(此处区分大小写)可以查看InternalName
# 由于中文的关系, internalname会被转成utf8编码,所以这里构建title和internalname之间的哈希表
# 避免了类似这样的代码@{"fieldname"="_x663e__x793a__x540d_";"fieldvalue"=$_.显示名}, 增强了可读性
$ht = $column_text | ForEach { 
    Get-SPOListColumn -ListTitle $listname -FieldTitle $_
} | Select title, internalname | foreach { @{$_.title = $_.internalname} }
# 插入值
Import-Csv -Path "C:\Users\IT\Desktop\user details template1 - 副本.csv" -Encoding Default | ForEach-Object {
# 下面最外层的@()不是哈希表,而是New-SPOListItem的特性
$fields= @( @{"fieldname"=$ht.Lanid;"fieldvalue"=$_.Lanid}, @{"fieldname"=$ht.显示名;"fieldvalue"=$_.显示名}, @{"fieldname"=$ht.拼音姓;"fieldvalue"=$_.拼音姓}, @{"fieldname"=$ht.拼音名;"fieldvalue"=$_.拼音名}, @{"fieldname"=$ht.员工号;"fieldvalue"=$_.员工号}, @{"fieldname"=$ht.公司邮箱;"fieldvalue"=$_.公司邮箱}, @{"fieldname"=$ht.公司名称;"fieldvalue"=$_.公司名称}, @{"fieldname"=$ht.手机号码;"fieldvalue"=$_.手机号码}, @{"fieldname"=$ht.公司电话;"fieldvalue"=$_.公司电话}, @{"fieldname"=$ht.部门名称;"fieldvalue"=$_.部门名称}, @{"fieldname"=$ht.岗位;"fieldvalue"=$_.岗位}, @{"fieldname"=$ht.地区;"fieldvalue"=$_.地区}, @{"fieldname"=$ht.直属领导;"fieldvalue"=$_.直属领导}, @{"fieldname"=$ht.状态;"fieldvalue"=$_.状态} ) New-SPOListItem -ListTitle $listname -ItemTitle $_.员工号 -AdditionalMultipleFields $fields }

 

创建视图:

$listname = "contact0412"
Connect-SPOCSOM -Username 'your_id' -Password 'your_pwd' -Url 'https://company.sharepoint.cn/IT/'
$view1_fields=@(
"工号"
"姓名"
"籍贯城市"
)
New-SPOListView -ListName $listname -ViewName "view_1" -ViewFields $view1_fields

 

posted @ 2015-12-09 17:04  dongdonggeorge  阅读(503)  评论(0编辑  收藏  举报