我有以下powershell脚本:
$hostNames = "10.130.68.77, 172.29.207.33, ###, gcsl-blg7v=10.130.68.77, ndtv23v0675=172.29.207.33"
$iplist = $hostNames.Split(', ###, ')[0]
$dnsiplist = $hostNames.Split(', ###, ')[1]
Write-Host "COMPLETE LIST: $hostNames"
Write-Host "IP LIST: $iplist"
Write-Host "DNS-IP LIST: $dnsiplist"
输出:
COMPLETE LIST: 10.130.68.77, 172.29.207.33, ###, gcsl-blg7v=10.130.68.77, ndtv23v0675=172.29.207.33
IP LIST: 10.130.68.77
DNS-IP LIST:
我希望拆分“,###,”,以便我可以获得以下所需的输出:
COMPLETE LIST: 10.130.68.77, 172.29.207.33, ###, gcsl-blg7v=10.130.68.77, ndtv23v0675=172.29.207.33
IP LIST: 10.130.68.77, 172.29.207.33
DNS-IP LIST: gcsl-blg7v=10.130.68.77, ndtv23v0675=172.29.207.33
请让我知道我该怎么办?
.Split
默认使用 public string[] Split(params char[] separator);
重载,在您的示例中,这意味着 ', ###, '
首先转换为字符数组 [char[]] ', ###, '
并按每个字符进行分割。您需要帮助 PowerShell 使用正确的重载:public string[] Split(string[] separator, StringSplitOptions options);
:
$hostNames = '10.130.68.77, 172.29.207.33, ###, gcsl-blg7v=10.130.68.77, ndtv23v0675=172.29.207.33'
$iplist, $dnsiplist = $hostNames.Split([string[]] ', ###, ', [System.StringSplitOptions]::None)
Write-Host "COMPLETE LIST: $hostNames"
Write-Host "IP LIST: $iplist"
Write-Host "DNS-IP LIST: $dnsiplist"
请注意,此问题仅发生在 Windows PowerShell (.NET Framework) 中,在 PowerShell 7+ 中
$hostNames.Split(', ###, ')
可以正常工作。