6

私たちの環境では、各サーバーに接続されているストレージの種類を収集する必要があります。数百の W2K3/W2K8 サーバーです。

スクリプトは、接続されているストレージがSAN / SAN mirrored / NAS / local、またはこれらの組み合わせであるかどうかを判断するのに非常に役立ちます。問題は、私が本当に良い解決策を見つけられなかったことです。

私はスクリプトについて考えていましたが、私が理解できる最善の方法は、次のようなことです。

  • サーバーが を使用している場合SAN、Veritas Storage Foundation が常にインストールされているので、gwmi win32_product で検索します。これは非常に遅く、ストレージが SAN である場合、または SAN ミラーリングされている場合、これは情報を提供しません。
  • 接続されたストレージが の場合NAS、ISCSI ターゲット IP が存在する必要があり、それを何らかの方法で検索します。

私は本当にこれらの方法が受け入れられるとは思わない。接続されているストレージの種類を何らかの形で判断するためのより良い方法を見つけるのを手伝ってくれませんか?

どうもありがとうございました

4

2 に答える 2

2

powershell での VDS サービスへのアクセスに関する記事を見つけました。クラスタ LUN に関する詳細情報の取得

タイプを取得するためにコードを少しマッサージしました。2003年でも動作します。

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Storage.Vds") | Out-Null
$oVdsServiceLoader = New-Object Microsoft.Storage.Vds.ServiceLoader
$oVdsService = $oVdsServiceLoader.LoadService($null) 
$oVdsService.WaitForServiceReady() 
$oVdsService.Reenumerate() 
$cDisks = ($oVdsService.Providers |% {$_.Packs}) |% {$_.Disks}
$cPacks = $oVdsService.Providers |% {$_.Packs}

foreach($oPack in $cPacks)
{
    If($oPack.Status -eq "Online")
    {
        foreach($oDisk in $oPack.Disks)
        {
            Write-Host "$($oDisk.FriendlyName) ( $($oDisk.BusType) )"
        }


        foreach($oVolume in $oPack.Volumes)
        {
            Write-Host "`t$($oVolume.AccessPaths) ( $($oVolume.Label) )"
        }

    }
}
于 2013-09-12T19:18:25.313 に答える
1

おそらく、次の WMI クラスのいずれかで情報を見つけることができます。

Win32_LogicalDisk http://msdn.microsoft.com/en-us/library/windows/desktop/aa394173(v=vs.85).aspx

Win32_Volume http://msdn.microsoft.com/en-us/library/windows/desktop/aa394515(v=vs.85).aspx

Win32_DiskDrive http://msdn.microsoft.com/en-us/library/windows/desktop/aa394132(v=vs.85).aspx

次に...次のようにします:

Get-AdComputer Server* | Foreach-Object { Get-WmiObject -Class Win32_DiskDrive -ComputerName $_.Name }
于 2013-03-04T07:16:19.763 に答える