【发布时间】:2021-04-16 20:28:50
【问题描述】:
在过去的几周里,我已经阅读了一些关于我的问题主题的非常有趣的帖子,并且已经接近了,但我需要一个非常具体的 XML,它是从我通过将 CSV 与输出的 Active Directory 比较而创建的哈希表创建的包含特定用户数据的 csv。
具体字段如下:XrefCode、EmployeeNumber、FirstName、LastName、BusinessEmail、StartDate。
我需要输入这些数据的 XML 在格式上非常具体,我找不到让它工作的方法。
这是最终需要的 XML。
所以它必须有一个标题<EmployeeImport>在文档的顶部和</EmployeeImport>在底部,以及在数据的中间<ContactInformation>和</ContactInformation>。
这是我使用的数据示例,非常基本。我的代码到达 AD 并填充电子邮件字段。
号码显示名称状态位置分类帐代码业务电子邮件名字姓氏 1234567 Doe, John 活跃 0GB50 John Doe 2345678 史密斯,简活跃 0GB50 简史密斯
哈希表构建看起来像......
$match = New-Object PSObject
$match | Add-Member NoteProperty "XRefCode" $first.SamAccountName
$match | Add-Member NoteProperty "EmployeeNumber" $first.SamAccountName
$match | Add-Member NoteProperty "FirstName" $first.'First Name'
$match | Add-Member NoteProperty "LastName" $first.'Last Name'
$match | Add-Member NoteProperty "ContactInformationTypeXrefCode" 'BusinessEmail'
$match | Add-Member NoteProperty "EffectiveStart" $TodaysDay
$match | Add-Member NoteProperty "ElectronicAddress" $second.mail
$combine += $match
csv 如下所示:抱歉,它排列得不好
XRefCode EmployeeNumber FirstName LastName ContactInformationTypeXrefCode EffectiveStart IsForSystemCommunication ElectronicAddress
1234567 1234567 Joe Doe BusinessEmail 04/16/2021 0 Jdoe@Company.com
2345678 2345678 Jane Smith BusinessEmail 04/16/2021 0 Jsmith@Company.com
<EmployeeImport>
<Employee>
<XRefCode>1234567</XRefCode>
<EmployeeNumber>1234567</EmployeeNumber>
<FirstName>Joe</FirstName>
<LastName>Doe</LastName>
<ContactInformation>
<ContactInformationTypeXrefCode>BusinessEmail</ContactInformationTypeXrefCode>
<EffectiveStart>2020-04-16</EffectiveStart>
<ElectronicAddress>JoeDoe@Company.com</ElectronicAddress>
</ContactInformation>
</Employee>
<Employee>
<XRefCode>2345678</XRefCode>
<EmployeeNumber>2345678</EmployeeNumber>
<FirstName>Jane</FirstName>
<LastName>Smith</LastName>
<ContactInformation>
<ContactInformationTypeXrefCode>BusinessEmail</ContactInformationTypeXrefCode>
<EffectiveStart>2020-04-16</EffectiveStart>
<ElectronicAddress>Jsmith@Company.com</ElectronicAddress>
</ContactInformation>
</Employee>
</EmployeeImport>
我发现的接近的代码是这样的......
$output |% {'<Objects>'} {$_.psobject.properties |% {'<Object>'} {"<$($_.name)>$($_.value)</$($_.name)>"} {' </Object>'} } {'</Objects>'}
但是,这不会添加所需的页眉和页脚以及 ContactInformation 之间的中间对象。
我可能需要根据我的情况自定义此操作,但我不确定如何构建它。如果是这样的话,有人能指出我正确的方向来为这个特定案例定制这个吗?
谢谢
【问题讨论】:
-
而
$output是具有XrefCode、EmployeeNumber、FirstName、...等属性的对象的集合? -
正确,现在输出是一个带有所需标头的 csv 散列。我可以举个例子。
-
您能否提供用于将其转换为哈希表的示例数据和代码?以便任何人都可以复制和测试您的案例。
-
数据已添加到问题中
标签: xml powershell