4

文字列配列からアイテムを削除しようとしています。これは 5 つのサーバー名の配列であり、配列内の各サーバーに対して再起動機能を実行します。一度に 5 台のサーバーしか再起動できないため、アレイがそれ以上大きくなることはありませんが、同時にサーバーをアレイに追加し続けて、環境内のすべてのサーバーを循環できるようにしたいと考えています。サーバーの再起動が完了したら、そのサーバーをアレイから削除して、別のサーバーをアレイに追加し、それに対して再起動機能を実行できるようにする必要があります。メソッドを試してみました$array.removeが、文字列配列では機能しないというエラーが表示されます。サーバーを再起動せずに元のアレイを再定義しようとしました

"$balancedout = $balancedout -notlike $server".
4

3 に答える 3

5

PowerShell は .Net のようなコードを使用することに注意してください。

したがって、次のように配列を宣言します。

 $a = New-Object System.Collections.ArrayList

これで、この配列にアイテムを追加できます。

 $a.Add("Server1")
 $a.Add("Server2")
 $a.Add("Server3")

配列を印刷すると、次のようになります。

PS C:\Users\Work> $a
Server2
Server1
Server3

$a には Remove メソッドがあります。

 $a.Remove("Server2")

配列を印刷すると、次のようになります。

   PS C:\Users\Work> $a
Server1
Server3
于 2013-07-09T21:32:10.557 に答える
-1

サーバーリスト全体をロードできますArrayListか? それを 5 つの項目の配列に分割し、サーバーの各セットで作業することができます。

$servers = Get-Content serverlist.txt
$setIdx = -1
$sets = @()
for( $i = 0; $i -lt $servers.Count )
{
    if( $i % 5 -eq 0 )
    {
        $setIdx++
        $sets[$setIdx] = @()
    }
    $sets[$setIdx] += $servers[$idx]
}

foreach( $set in $sets )
{
    Restart-Computer $set[0]
    Restart-Computer $set[1]
    Restart-Computer $set[2]
    Restart-Computer $set[3]
    Restart-Computer $set[4]
}
于 2013-07-10T03:46:02.003 に答える