如何使用PowerShell远程确定存储类型(SAN/NAS/本地磁盘)?

如何使用PowerShell远程确定存储类型(SAN/NAS/本地磁盘)?,powershell,storage,nas,san,Powershell,Storage,Nas,San,我必须收集环境中每台服务器的连接存储类型:数百台W2K3/W2K8服务器 脚本对于确定连接的存储是SAN/SAN镜像/NAS/local还是它们的组合非常有用。问题是我没有找到任何好的解决办法 我在考虑一个脚本,我能想出的最好办法是做如下的事情: 如果服务器使用 SAN ,ValITAS存储基础总是被安装,所以我会用GWMI Wi32产品搜索它。这非常慢,而且如果存储是SAN或SAN镜像的,则无法提供信息 如果连接的存储是NAS,则必须有ISCSI目标ip,我会以某种方式进行搜索 但我真的不

我必须收集环境中每台服务器的连接存储类型:数百台W2K3/W2K8服务器

脚本对于确定连接的存储是
SAN/SAN镜像/NAS/local
还是它们的组合非常有用。问题是我没有找到任何好的解决办法

我在考虑一个脚本,我能想出的最好办法是做如下的事情:

  • 如果服务器使用<代码> SAN <代码>,ValITAS存储基础总是被安装,所以我会用GWMI Wi32产品搜索它。这非常慢,而且如果存储是SAN或SAN镜像的,则无法提供信息
  • 如果连接的存储是
    NAS
    ,则必须有ISCSI目标ip,我会以某种方式进行搜索
但我真的不认为这些方法是可以接受的。您能帮我找到一种更好的方法来确定连接的存储类型吗


非常感谢

您可能可以在以下WMI类之一中找到该信息:

Win32_逻辑磁盘

Win32\u卷

Win32_磁盘驱动器

然后。。。做一些类似于:

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

我在powershell中找到了一篇关于访问VDS服务的文章

对代码进行了一些修改以获得类型。甚至在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) )"
        }

    }
}

W2k3服务器上是否有PS2.0?是否使用diskpart?ex diskpart,选择disk 1,详细信息disk:type将为iSCSI for SAN disk您已经找到如何在本地执行此操作的方法了吗?(Ie.这是一个远程问题还是一个系统信息问题?)这必须是一个系统信息问题,因为他解释了他是如何计划的(搜索VrITAS存储基础等),然后要求改进的方法来检测存储类型。