gpt4 book ai didi

xml - 在 Powershell 中使用 XML 填充变量

转载 作者:数据小太阳 更新时间:2023-10-29 02:22:15 28 4
gpt4 key购买 nike

我需要说明一下,我在 Powershell 中编程的时间很短,有些基础知识我目前处理得不好。

所以我要做的是将数据预先输入到 XML 文件中以使用这些数据并将 $var 填充到 powershell 中,然后使用这些 var 更改 Active Directory 属性。对于更改 AD 属性,我很好,但是通过调用 XML 文件来填充我的 var 的自动化过程根本不起作用。我想我没有使用 got 方法,这就是我寻求帮助的原因。

这是我的 XML 文件(我只声明了两个站点)

<Location>
<Site>
<City>Alma</City>
<Street>333 Pont Champlain Street</Street>
<POBox></POBox>
<State>Ontario</State>
<Zip>G1Q 1Q9</Zip>
<Country>CA</Country>
<OfficePhone>+1 555-555-2211</OfficePhone>
</Site>

<Site>
<City>Dolbeau</City>
<Street>2525 Avenue du Pinpont</Street>
<POBox></POBox>
<State>Quebec</State>
<Zip>G2Q 2Q9</Zip>
<Country>CA</Country>
<OfficePhone>+1 555-555-3000</OfficePhone>
</Site>
</Location>

我想使用变量名称 $Destination 来“匹配”location.site.city。如果 $destination 匹配城市,则填充 var

$Newcity = location.site.city
$NewStreet = location.site.street
$NewState = location.site.state

等等等等

这是我执行的脚本部分,但无法获得我想要的结果。

$var1 = ""
$Street = ""
$Destination = "Alma"

[xml]$SiteAttribute = Get-Content SitesAttributes.xml

foreach( $City in $SiteAttribute.location.Site){
$var1 = $site.city
If ($var1 -match $Destination){
$NewStreet = $Site.Street
$NewCity = $Site.city
$NewPoBox = $site.POBox
$NewState = $site.State
$Newzip = $Site.zip
$NewCountry = $Site.country
$NewPhone = $Site.OfficePhone
}
}

然后我将使用这些 var 通过其他 Powershell 命令更改我的 AD 属性

##Normal AD module come with W2k8
Import-Module ActiveDirectory

Set-ADUser $username -server $dc -StreetAddress $NewStreet -City $NewCity -State $NewState -PostalCode $NewZip -OfficePhone $NewPhone -Country $NewCountry

但是我所有的尝试都失败了,因为我认为我的 Foreach 语句后跟我的 If 语句不足以完成我想要执行的过程。有什么建议吗?

谢谢约翰

最佳答案

这是使用 Select-XmlWhere-Object 过滤站点的另一个选项,以及一种 splatting 技术,使用具有与 cmdlet 参数名称对应的键的哈希表.

SelectNodes() 方法相比,此方法的优势在于 XML 区分大小写,如果您在文件不同。

访问this page有关 splatting 的更多信息。

[xml]$xml = Get-Content SitesAttributes.xml
$site = $xml | Select-Xml -XPath "//Location/Site" | Where-Object {$_.Node.City -match 'alma'}

$params = @{
StreetAddress = $site.Node.Street
City = $site.Node.city
State = $site.Node.State
PostalCode = $site.Node.zip
Country = $site.Node.country
OfficePhone = $site.Node.OfficePhone
}

Import-Module ActiveDirectory
Set-ADUser $username -server $dc @params

关于xml - 在 Powershell 中使用 XML 填充变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14459581/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com