我正在使用CSV文件中的元数据更新288K SPO文档库项目。 我无法将Select-String对象的输出解析为上传元数据数组中的值,如下所示:
# Get Row from CSV File
$csv | Select-String -SimpleMatch $item.FieldValues.FileLeafRef | % {
# Collect the Metadata from CSV File
$Metadata = @{}
$Metadata.add( "TcID", $_.TcItemID)
$Metadata.add( "LegacyID", $_.LegacyID)
$Metadata.add( "_Prefix", $_.Prefix)
$Metadata.add( "_Series", $_.Series.PadLeft(3,'0'))
$Metadata.add( "_Base", $_.Base.PadLeft(3,'0'))
编辑6/3:这是Select-String Line属性中的值:
@{Filename=ad3402230000.pdf; TcItemID=AD-340-223-00; SedaID=ad3402230000.pdf; Name=ASSEMBLY; Description=PEP2
H/L STR MAG VOLT DIV BOX; ItemType=Design; Revision=00; Date Created=1998/03/11; Last Modified Date=1998/03/11;
Release Status=Released; Date Released=1998/03/11;
GrpDiscipline=Electrical; ExtSource=; LegacyID=; Prefix=AD;
Series=340; Base=223; Suffix=00; CatCode=PEP3200; ccProgram=PEP-Positron Electron Project;
ccCatMajor=32-Accelerator Power Systems; ccCatMinor=00-Misc; ProjectOrigin=PEP 2; Approvers=S LOWE; Checkers=SLOWE; CreatedBy=W GORECKI;
Designers=W GORECKI; DocType=Drawing; DocSubType=AD-Assembly Drawing;
ECDate=; ECID=; ECRequestor=; ECStatus=; Engineers=D MACNAIR; Image=Y; ParentImage=; LegacyStatus=Released; IPGroup=; See=; Spires=PEP2 H/L STR MAG VOLT DIV BOX; Title1=PEP II HER/LER STRING MAGNET; Title2=VOLTAGE DIVIDER BOX;
Title3=ASSEMBLY; Title4=}
这看起来像一个哈希表,但实际上是一个字符串...... 如何将此字符串转换回哈希表,然后解析name = value对以包含在我的元数据哈希表中?
THX
编辑6/6:网络淘汰日让我陷入了一个复杂的解决方案,做了我需要它做的事情,虽然可笑得很慢......看起来像这样:# Get Row from CSV File containing filename
$row = $csv | Select-String -SimpleMatch $item.FieldValues.FileLeafRef -List -Quiet | select -ExpandProperty Line
$a = @($row.Trim('{','@').Replace("; ",";").Replace('}','').Split(';')) | ConvertFrom-StringData
# Collect the Metadata from CSV File
$Metadata = @{}
$Metadata.add( "TcID", $a.TcItemID)
$Metadata.add( "LegacyID", $a.LegacyID)
$Metadata.add( "_Prefix", $a.Prefix)
$Metadata.add( "_Series", $a.Series.PadLeft(3,'0'))
$Metadata.add( "_Base", $a.Base.PadLeft(3,'0'))
$Metadata.add( "_Suffix", $a.Suffix.PadLeft(2,'0'))
必须有更好的方法来做到这一点吗?