2013-01-25 17 views
6

Ich muss die angehängten Speichertypen von jedem Server in unserer Umgebung sammeln: Mehrere hundert W2K3/W2K8 Server.Wie kann der Speichertyp (SAN/NAS/lokale Festplatte) mithilfe von PowerShell remote bestimmt werden?

würde ein Skript sehr nützlich sein, um festzustellen, ob der angeschlossene Speicher SAN/SAN mirrored/NAS/local oder eine Kombination davon ist. Das Problem ist, dass ich keine wirklich gute Lösung gefunden habe.

ich über ein Skript dachte, und die beste kann ich herausfinden, wäre so etwas wie die folgenden Möglichkeiten:

  • Wenn der Server SAN, Veritas Storage Foundation verwendet immer installiert ist, so würde ich danach suchen mit gwmi win32_product. Dies ist sehr langsam und liefert keine Informationen, wenn der Speicher SAN oder SAN gespiegelt ist.
  • Wenn der angeschlossene Speicher NAS ist, muss es ein iSCSI-Ziel-IP sein, und ich würde die irgendwie suchen.

Ich glaube wirklich nicht, dass diese Methoden akzeptabel sind. Könnten Sie mir bitte helfen, einen besseren Weg zu finden, um die angehängten Speichertypen irgendwie zu bestimmen?

Vielen Dank

+0

Haben Sie PS2.0 auf den W2k3-Servern? –

+0

DiskPart verwenden? ex diskpart, wählen disk 1, detail disk: typ ist iSCSI für SAN disk –

+0

Haben Sie herausgefunden, wie dies * lokal * zu tun? (Das ist eine Remoting-Frage oder eine Systeminformationsfrage?) – Richard

Antwort

0

Sie wahrscheinlich die Informationen in einer der folgenden WMI-Klassen finden konnte:

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

Dann ... so etwas wie:

Get-AdComputer Server* | Foreach-Object { Get-WmiObject -Class Win32_DiskDrive -ComputerName $_.Name } 
1

ich einen Artikel über den Zugriff auf den VDS-Dienst in Powershell gefunden. Getting More Information About You Cluster LUN’s

Massiert der Code ein Bit-Typ zu erhalten. Funktioniert sogar auf 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))" 
     } 

    } 
}