2015-12-08 168 views
0

我試圖用PowerShell來導入以下數據:導入多個IP地址

Name     AllowedIPAddresses        Enabled 
activeDirectoryAll {AA.BB.28.1,AA.BB.28.2,AA.BB.124.1,AA.BB.124.2} TRUE 
CIMHttpServer  {AA.BB.134.77}         TRUE 
CIMHttpsServer  {AA.BB.134.77}         TRUE 
CIMSLP    {AA.BB.21.128/26}        TRUE 
cmmds    {All}           FALSE 
dhcp     {All}           FALSE 

當我導入AllowedIPAddresses到一個數組用命令

$Srcdata = Import-Csv -Path $SrcFWFile 

該數據具有以下類型:

AllowedIPAddresses NoteProperty System.String AllowedIPAddresses={All} 

但是日期需要是這種類型:

AllowedIPAddresses NoteProperty System.Object[] AllowedIPAddresses=System.Object[] 

如何操作此列,這樣我可以一個System.Object中插入這些爲多個IP地址?

+0

是您的輸入文件逗號分隔? – DarkLite1

回答

1

刪除大括號,並在分裂逗號的字符串:

Import-Csv -Path $SrcFWFile | Select-Object -Property *,@{n='AllowedIPAddresses';e={$_.AllowedIPAddresses -replace '^\{|\}$' -split ','}} -Exclude AllowedIPAddresses 
+0

Powerhell的這一部分總是讓我惱火。我希望有一種更簡單的方法來操作對象數組的一個值。儘管對'import-csv'很好。也可以只使用'.Trim(「{}」)'代替正則表達式 – Matt

+0

@馬特它不應該太複雜的自定義函數'更新,Property'接受管道inpute並有兩個額外的參數來包裝這樣的:屬性名稱(字符串)和操作(scriptblock)。 –

+1

我知道....這似乎是應該已經存在的東西。 – Matt