2015-12-08 124 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