使用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