1

私は PowerShell を初めて使用し、すでに大きな課題に直面しています。目標は、csv ファイルを読み取ることです。ファイルの各行は、次のようなバインド パラメータを持つ文字列になります。

"Web サイト 1"、"116.167.74.172:443:www.xyz.com
116.167.74.174:443:www.xyz.com"

"Website2",":80:www.xyz.com 116.167.74.172:80:"

"Web サイト 3"、"116.167.75.155:443: 116.167.75.163:443:"

"Website4",":80:"

使用するコマンドは次のとおりです。

New-WebBinding -Name "Default Web Site" -IPAddress "*" -Port 80 -HostHeader TestSite

問題は、1 つの文字列を読み取ってIPPort、およびHostHeaderの 3 つのパラメーターに分割する方法です。3 つのパラメーターすべてを指定していない場合でも、

4

1 に答える 1

0

これを簡単にするために、名前付きキャプチャ グループで正規表現を使用できます。IPアドレスがある場合は、常にポートをIPアドレスの右側に置くことをお勧めします. 次に、ファイルの特定の行が現在 $strLine にあると仮定して、次のようにします。

$pattern = '"[^"]+","(?<ip_address>(?:\d{1,3}\.){3}\d{1,3})?:?(?<port>\d{1,5})?:?(?<hostheader>.*)?'  
$strLine -match $pattern  
$ipaddress = if ($matches.ContainsKey('ip_address')) { $matches['ip_address'] } else { "*" }  
$port = if ($matches.ContainsKey('port')) { $matches['port'] } else { "80" }  
$hostheader = if ($matches.ContainsKey('hostheader')) { $matches['hostheader'] } else { "TestSite" }  

New-WebBinding -Name "Default Web Site" -IPAddress $ipaddress -Port $port -HostHeader $hostheader 
于 2012-12-14T22:50:46.443 に答える