通过 powershell 脚本将数据导出到 CSV 文件时会出现标签

通过 powershell 脚本将数据导出到 CSV 文件时会出现标签

我正在运行一个 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

我添加了标题来标识特定的列。然后,你可以挑选想要输出的内容。

我手动删除了换行符,因此您需要更改代码,这样它就不是输出项,否则您也必须处理它。

相关内容