すべてのSQLServerを処理するスクリプトがあります。スクリプトにはいくつかの関数があり、サーバー名、関数名、エラーメッセージを500行x3列の配列に記録するエラールーチンがあります。スクリプトの最後で、この配列をサーバー名の順序に並べ替えます。いくつかの投稿では、配列をsort-object
コマンドレットにパイプするだけでよいと示唆されていますが、これを行うと、配列のすべての要素がに置き換えられsystem.Object[]
ます。NB。関数の前の配列の塗りつぶしは、私の配列がどのように見えるかの単なる例です
$global:ErrorCount = 0
$global:ErrArray = new-object 'object[,]' 500,3
$global:ErrArray[1,00]= "SV000004"
$global:ErrArray[1,01]= "ProcessServers"
$global:ErrArray[1,02]= "The server was not found or was not accessible."
$global:ErrArray[2,00]= "BOSWEB02"
$global:ErrArray[2,01]= "GetDatabases"
$global:ErrArray[2,02]= "Database Status = Shutdown"
$global:ErrArray[3,00]= "SATURN"
$global:ErrArray[3,01]= "GetDatabases"
$global:ErrArray[3,02]= "Database Status = Shutdown"
$global:ErrArray[4,00]= "BOSWEB02"
$global:ErrArray[4,01]= "GetSystemInfo"
$global:ErrArray[4,02]= "Access is denied"
$global:ErrorCount = 4
Function DisplayErrors
{
Write-Host "`nBefore:-`n"
for ( $iLoop=1; $iLoop -le $global:ErrorCount; $iLoop++)
{
"{0,-14} {1,-18} {2,-80}" -f
$global:ErrArray[$iLoop,0], $global:ErrArray[$iLoop,1],
$global:ErrArray[$iLoop,2]
}
$Sorted = $global:ErrArray | Sort-Object @{Expression={$_[0]}}
Write-Host "`nAfter:-`n"
for ( $iLoop=1; $iLoop -le $global:ErrorCount; $iLoop++)
{
"{0,-14} {1,-18} {2,-80}" -f
$Sorted[$iLoop,0], $Sorted[$iLoop,1], $Sorted[$iLoop,2]
}
}
DisplayErrors
出力は次のようになります:-
前:-
SV000004 ProcessServers The server was not found or was not accessible.
BOSWEB02 GetDatabases Database Status = Shutdown
SATURN GetDatabases Database Status = Shutdown
BOSWEB02 GetSystemInfo Access is denied
後:-
System.Object[] System.Object[] System.Object[]
System.Object[] System.Object[] System.Object[]
System.Object[] System.Object[] System.Object[]
System.Object[] System.Object[] System.Object[]
ここで私が間違っていることを誰かに教えてもらえますか?
どうもありがとう :-)