我必须在我们的环境中收集每个服务器的附加存储类型:数百个W2K3 / W2K8服务器。
脚本对于确定附加存储是SAN / SAN mirrored / NAS / local
还是这些存储的组合非常有用。问题是我还没有找到任何好的解决方案。
我在想一个剧本,我能想到的最好的东西会做如下的事情:
SAN
,则始终会安装Veritas Storage Foundation,因此我将使用gwmi win32_product进行搜索。这非常慢,如果存储是SAN或SAN镜像,则不提供信息。NAS
,则必须有一个ISCSI目标IP,我会以某种方式搜索它。我真的不认为这些方法是可以接受的。你能帮我找一个更好的方法来确定附加的存储类型吗?
非常感谢
答案 0 :(得分:2)
我发现了一篇关于在PowerShell中访问VDS服务的文章。 Getting More Information About You Cluster LUN’s
按一下代码来获取类型。即使在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) )"
}
}
}
答案 1 :(得分: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 }