$FichierModifié = $Modele -replace "< NOM_ECOLE >" $_.NOM_ECOLE -replace "< ADDR_FW_LAN >", $_.ADDR_FW_LAN -replace "< ADDR_POOL_DHCP_LAN >", $_.ADDR_POOL_DHCP_LAN -replace "< ADDR_FW_WAN >", $_.ADDR_FW_WAN -replace "< ADDR_MASK_WAN >", $_.ADDR_MASK_WAN -replace "< ADDR_GW_WAN >", $_.ADDR_GW_WAN -replace "< MAC_FW >", $_.MAC_FW -replace "< PPPOE_USERNAME >", $_.PPPOE_USERNAME -replace "< PPPOE_PASSWORD >", $_.PPPOE_PASSWORD
我想让这一行更具可读性。我尝试了很多我在这里找到的解决方案,但没有什么对我有用。
$Modele.Replace("<NOM_ECOLE>", $_.NOM_ECOLE).
Replace("<ADDR_FW_LAN>", $_.ADDR_FW_LAN).
上面的代码给我一个错误,如
&#34;&#34;是无效的令牌
与`
相同,而不是.
。
答案 0 :(得分:6)
使其更具可读性的最简单方法是添加空格。将每个-replace "foo","bar"
放在自己的行上。您需要在每个结尾处进行反向操作,以告诉PowerShell它应该全部解析为一行。
$FichierModifié = $Modele `
-replace "< NOM_ECOLE >" $_.NOM_ECOLE `
-replace "< ADDR_FW_LAN >", $_.ADDR_FW_LAN `
-replace "< ADDR_POOL_DHCP_LAN >", $_.ADDR_POOL_DHCP_LAN `
-replace "< ADDR_FW_WAN >", $_.ADDR_FW_WAN `
-replace "< ADDR_MASK_WAN >", $_.ADDR_MASK_WAN `
-replace "< ADDR_GW_WAN >", $_.ADDR_GW_WAN `
-replace "< MAC_FW >", $_.MAC_FW `
-replace "< PPPOE_USERNAME >", $_.PPPOE_USERNAME `
-replace "< PPPOE_PASSWORD >", $_.PPPOE_PASSWORD
如果您想要更进一步,请将替换放在数组中并替换为循环。如果您在许多地方进行类似的替换,这将非常有用。
$replacements = @(
@{src="< NOM_ECOLE >"; target = $_.NOM_ECOLE}
@{src="< ADDR_FW_LAN >"; target = $_.ADDR_FW_LAN}
@{src="< ADDR_POOL_DHCP_LAN >"; target = $_.ADDR_POOL_DHCP_LAN}
@{src="< ADDR_FW_WAN >"; target = $_.ADDR_FW_WAN}
@{src="< ADDR_MASK_WAN >"; target = $_.ADDR_MASK_WAN}
@{src="< ADDR_GW_WAN >"; target = $_.ADDR_GW_WAN}
@{src="< MAC_FW >"; target = $_.MAC_FW}
@{src="< PPPOE_USERNAME >"; target = $_.PPPOE_USERNAME}
@{src="< PPPOE_PASSWORD >"; target = $_.PPPOE_PASSWORD}
)
$FichierModifié = $Modele
foreach ($x in $replacements) {
$FichierModifié = $FichierModifié -replace $x.src, $x.target
}