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