我正在运行一个 powershell 脚本,用于从 SharePoint 文档库获取数据。运行脚本时,数据进入 csv 文件,但列名称带有";#"
标签。例如,姓名、经理姓名等都随附其中ID number hashtags(123;#)
。我只想在输出 CSV 上获取姓名、经理姓名,而不是标签或 ID 号。有人可以粘贴相同的更新脚本吗?
$web = get-spweb "site Url"
$caseLib = $web.lists | where {$_.title -eq "Document Library"}
$query=new-object Microsoft.SharePoint.SPQuery
$query.ViewFields = "<FieldRef Name='LinkFilename'/><FieldRef Name='Source_x0020_Name'/><FieldRef Name='Content_x0020_Lookup'/><FieldRef Name='Manager'/><FieldRef Name='Assigned_x0020_Person'/><FieldRef Name='City_x0020_Name'/>"
do
{
$caseLibItems=$caseLib.GetItems($query)
$query.ListItemCollectionPosition=$caseLibItems.ListItemCollectionPosition
$listItemsTotal = $caseLibItems.Count
$x = 0
for($x=0;$x -lt $listItemsTotal; $x++)
{
$SourceName = $caseLibItems[$x]["Source_x0020_Name"]
$ContentLookup = $caseLibItems[$x]["Content_x0020_Lookup"]
$Manager = $caseLibItems[$x]["Manager"]
$AssignedTo = $caseLibItems[$x]["Assigned_x0020_To"]
$CityName = $caseLibItems[$x]["City_x0020_Name"]
$str = ""
if('$SourceName; $ContentLookup; $Manager; $AssignedTo; $CityName' -ne $null)
{
$str = $caseLibItems[$x]["LinkFilename"].ToString() + $SourceName + $ContentLookup + $Manager + $AssignedTo + $CityName
}
else
{
$str = $caseLibItems[$x]["LinkFilename"].ToString()
}
Write-Output $str| Out-File "path" -Append
}
}while ($query.ListItemCollectionPosition -ne $null)
Write-Host "Exiting"
我得到的输出文件
ABCD;"1234;#ABC travels";"48;#outdated";"157;#Rajukumar";"1246;#Raju";"1534;#England"
AFGV;"2678;#CDF travels";"26;#sourcedata";"24;#Johnson";"2323;#Kumar";"1298;#Japan"
xyza;"45324;#KHR travels";"324;#conducteddate";"136;#Peter";"231;#Helen";"1212;#USA"
MNGR;"11225;#XYZ travels";"368;#mangeddated";"157;#Helen";"1246;#Johnson";"3567;#AUS"
Etc
在输出文件中,我获取了带有主题标签的列表 ID 名称。我不想要 ID 名称和主题标签。输出文件中只需要获取名称。有人能帮忙写一下这个脚本吗?
答案1
您没有说明最终用例需要什么。请说明,否则我们只能猜测。您考虑使用什么名字?
您可以使用内置的 CSV cmdlet 解析文件结果。示例:
$DataSet = '
ABCD;"1234;#ABC travels";"48;#outdated";"157;#Rajukumar";"1246;#Raju";"1534;#England"
AFGV;"2678;#CDF travels";"26;#sourcedata";"24;#Johnson";"2323;#Kumar";"1298;#Japan"
xyza;"45324;#KHR travels";"324;#conducteddate";"136;#Peter";"231;#Helen";"1212;#USA"
MNGR;"11225;#XYZ travels";"368;#mangeddated";"157;#Helen";"1246;#Johnson";"3567;#AUS"
'
$DataSet -replace '#|"' |
ConvertFrom-Csv -Delimiter ';' -Header H1,H2,H3,H4,H5,H6,H7,H8,H9,H10 |
Format-Table -AutoSize
# Results
H1 H2 H3 H4 H5 H6 H7 H8 H9 H10
-- -- -- -- -- -- -- -- -- ---
ABCD 1234 ABC travels 48 outdated 157 Rajukumar 1246 Raju 1534
AFGV 2678 CDF travels 26 sourcedata 24 Johnson 2323 Kumar 1298
xyza 45324 KHR travels 324 conducteddate 136 Peter 231 Helen 1212
MNGR 11225 XYZ travels 368 mangeddated 157 Helen 1246 Johnson 3567
我添加了标题来标识特定的列。然后,你可以挑选想要输出的内容。
我手动删除了换行符,因此您需要更改代码,这样它就不是输出项,否则您也必须处理它。