将XML转换为CSV以进行广告进口(使用通配符)



我试图将XML从API调用转换为可用于创建广告用户的CSV。到目前为止,除手机价值外,它主要是有效的。

这是XML的样子。

<first_name>SomeName</first_name>
<nick_first_name>SomeFirstName</nick_first_name>
<nick_name>SomeNickName</nick_name>
<middle_name>SomeMiddleName</middle_name>
<last_name>SomeLastName</last_name>
<name_suffix/>
<gender>Female</gender>
<birthday type="date">1901-01-01</birthday>
<email_1 display="true">myemail@example.com</email_1>
<home_phone display="true"/>
<mobile_phone display="false">555-555-5555</mobile_phone>

这是我的powershell

[xml]$xml = Get-Content 'C:page1.xml'
$xml.SelectNodes('//facstaff') |
Select-Object @{n='name';e={$_.first_name + " " + $_.last_name}},
            @{n='SAM';e={$_.first_name + $_.last_name}},
            @{n='mobile';e={$_.mobile_phone}},
            @{n='password';e={"TestPassword1"}} |
  Export-Csv 'C:page1.csv' -NoType -Delimiter ';'
Import-Module ActiveDirectory 
$Users = Import-Csv -Delimiter ";" -Path "C:page1.csv"  
foreach ($User in $Users)  
{  
$OU = "OU=FacultyStaff,DC=informacast,DC=us"  
$Password = $User.password 
$Detailedname = $User.name
$SAM = $User.SAM
$Mobile = $User.mobile
New-ADUser -Name $Detailedname -MobilePhone $Mobile -SamAccountName $SAM -
UserPrincipalName $SAM -DisplayName $Detailedname -GivenName $user.firstname -
Surname $user.name -AccountPassword (ConvertTo-SecureString $Password -
AsPlainText -Force) -Enabled $true -Path $OU  
}

此时,它运行并创建用户。但是,当我检查帐户时,每个人都有" Mobile_phone"实际号码的价值。我认为这与XML中的" display =" false"的属性有关,但我不知道该如何进步。我试图将 *用作这样的通配值:

@{n='mobile';e={$_.mobile_phone*}},

但这无效。有建议吗?

谢谢!

如前所述,我应该将其做出答案,而不是评论。使用XML在PowerShell中,如果您正在寻找节点的内部文本,则可以引用其'#text'属性。在这种情况下,将行更新为以下将解决该问题:

@{n='mobile';e={$_.mobile_phone.'#text'}}

最新更新