【发布时间】:2018-01-01 15:36:15
【问题描述】:
我正在尝试将 Excel 文件导入 PowerShell,然后将其另存为 XML 文件。我有一个 Excel 文件和一个 XML 模板。我所做的如下:
# define XML configuration template
$config = "C:\Users\mustafaal\Desktop\StajyerMustafaAl\Gorev\XMLTemplate_v2.ps1"
Import-Csv C:\Users\mustafaal\Desktop\StajyerMustafaAl\Gorev\VariablesDeneme.csv | ForEach-Object {
$xml = "C:\Users\mustafaal\Desktop\StajyerMustafaAl\Gorev\MySampleConfig" + $_.UserName + ".xml"
Write-Host $_.username
Write-Host $xml
[xml]$x = (&$config) -f $_.UserName, $_.SwitchIP, $_.SwitchPort, $_.MACAddress
$x.Save($xml)
}
所以基本上我正在尝试为 Excel 文件中的每个用户名保存 XML 文件。
我收到此错误:
格式化字符串时出错:输入字符串的格式不正确。 在 C:\Users\mustafaal\Desktop\StajyerMustafaAl\Gorev\deneme1.ps1:14 char:1 + [xml]$x = (&$config) -f $_.UserName, $_.SwitchIP, $_.SwitchPort, $_.MACAddressXML 模板示例:
<AttributeList>
<RuleAttribute displayValue="Ethernet (15)" value="15" operator="EQUALS" name="NAS-Port-Type" type="Radius:IETF"/>
<RuleAttribute displayValue="Login-User (1), Framed-User (2), Authenticate-Only (8)" value="1,2,8" operator="BELONGS_TO" name="Service-Type" type="Radius:IETF"/>
<RuleAttribute displayValue={1} value={1} operator="EQUALS" name="NAS-IP-Address" type="Radius:IETF"/>
<RuleAttribute displayValue={2} value={2} operator="EQUALS" name="NAS-Port-Id" type="Radius:IETF"/>
<RuleAttribute displayValue={3} value={3} operator="EQUALS_IGNORE_CASE" name="Calling-Station-Id" type="Radius:IETF"/>
<RuleAttribute displayValue="TEIDOM\"{0} value="TEIDOM\"{0} operator="EQUALS_IGNORE_CASE" name="User-Name" type="Radius:IETF"/>
</AttributeList>
CSV 样本:
用户名、交换机IP、交换机端口、MAC地址 AHMETO,10.101.254.104,7,288023041d83 艾哈迈特,10.101.254.136,4,480fcf4a6719基本上,我需要将 XML 文件中的 {} 替换为 CSV 文件中的变量,但出现字符串格式错误。
编辑:好的,现在我找到了问题所在,还有其他带有{} 的代码,我把它们加倍了,但现在我得到了一个新错误:
键入“System.Xml.XmlDocument”。错误:“'ahmett' 是一个意外的标记。需要空格。第 5 行,第 84 位。
【问题讨论】:
-
XMLTemplate_v2.ps1的内容是什么?(&$config)执行该脚本,因此它需要输出一个模板字符串供-f操作。 -
我加了一段
标签: xml excel powershell