【问题标题】:Converting XML to CSV for AD Import (Use of Wildcard)将 XML 转换为 CSV 以进行 AD 导入(使用通配符)
【发布时间】:2018-07-18 05:56:33
【问题描述】:

我正在尝试将 XML 从 API 调用转换为可用于创建 AD 用户的 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*}},

但这没有用。有什么建议吗?

谢谢!

【问题讨论】:

  • 尝试@{n='mobile';e={$_.mobile_phone.'#text'}} 从您的 mobile_phone 节点获取内部文本。
  • 就是这样!谢谢!我只是在学习这个,最小的事情都会让我绊倒。
  • @TheMadTechnician - 您可能希望将其作为答案,以便 OP 可以接受相同的内容,其他人可以从您的答案中获得帮助。

标签: xml powershell csv active-directory


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 2018-04-18
    • 2014-07-20
    • 2017-05-23
    相关资源
    最近更新 更多