【发布时间】: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