2016-03-02 90 views
0

我有一個變量叫樓宇自控字符串:$backendSubnet基於可變

這個變量目前包含4個,當我做$backendSubnet.Count返回「」

條目這個數字會改變每個腳本運行的時間。我需要做的,它會自動跳出(基於條目數),在這種情況下有4什麼 - 在另一個cmdlet來使用,見.....

-Subnet $backendSubnet1,$backendSubnet2,$backendSubnet3,$backendSubnet2 

我需要自動化打破了這一點像上面這樣排列。

我曾嘗試以下,位我覺得我是在錯誤的軌道上:

$max = $backendSubnet.Count -1;0..$max | % {$backendSubnetArray += $backendSubnet[$_]} 
+0

看來該cmdlet接受'-Subnet'參數的數組。我會認爲'-Subnet $ backendSubnet'可以工作。 – Cobster

+0

不,這裏有太多的條目(總共4個子網),需要像我上面的例子一樣用逗號分隔它們。 –

+0

@MarcKean不,你不知道。以逗號分隔的變量列表也是一個數組。這與傳遞原始數組沒有區別。如果'$ backendSubnet'包含您不想傳遞的子網:使用'Where-Object'過濾器將它們從數組中移除。 –

回答

0

我建議初始化一個新的陣列預定義的大小,然後從$backendSubnet N個元素複製到新數組。然後沖洗並重復。

for ($i = 0; $i -lt $backendSubnet.Count; $i += $numToCopy) 
{ 
    $numToCopy = [Math]::Min($backendSubnet.Count - $i, $max) 
    $subset = new-object object[] $numToCopy 
    [Array]::Copy($backendSubnet, $i, $subset, 0, $numToCopy) 

    SomeCmdlet -Subnet $subset 
} 
+0

來建立一個在上面運行時,$ numToCopy是空白的,$ backendSubnet.Count等於4 –