Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VMWare VMDK映射到Windows驱动器号_Windows_Powershell_Automation_Vmware_Powercli - Fatal编程技术网

VMWare VMDK映射到Windows驱动器号

VMWare VMDK映射到Windows驱动器号,windows,powershell,automation,vmware,powercli,Windows,Powershell,Automation,Vmware,Powercli,这段代码几乎可以工作,它将VWare VMDK映射到windows驱动器。代码不是我的 在其他信息中,它将返回“DD-SERV-01_15.vmdk,对于VMMAIN是驱动器号G:” 脚本将提示输入凭据并继续映射,但出现问题,只有最后一个VM/驱动器保存为输出-我希望有人可以查看并更新/修复代码,以便它保存所有输出,请 谢谢 #获取VMware磁盘使用率 #雨果·皮特斯创作 # http://www.peetersonline.nl #变数 $Decimals=1 $VCServer=“SER

这段代码几乎可以工作,它将VWare VMDK映射到windows驱动器。代码不是我的

在其他信息中,它将返回“DD-SERV-01_15.vmdk,对于VMMAIN是驱动器号G:

脚本将提示输入凭据并继续映射,但出现问题,只有最后一个VM/驱动器保存为输出-我希望有人可以查看并更新/修复代码,以便它保存所有输出,请

谢谢

#获取VMware磁盘使用率
#雨果·皮特斯创作
# http://www.peetersonline.nl
#变数
$Decimals=1
$VCServer=“SERVERNAME”
#剧本
#连接到VC
写入连接到虚拟中心的进度“收集信息”-Id 0
$VC=连接VIServer$VCServer
#创建输出集合
$myCol=@()
#列出数据存储(数据存储名称)
写入进度“收集信息”“列出数据存储”-Id 0
$Datastores=获取数据存储|排序名称
#列出虚拟机
写入进度“收集信息”“列出虚拟机和磁盘文件”-Id 0
$VMSummaries=@()
ForEach($vm-in(Get-vm))
{
$VMView=$VM |获取视图
ForEach($VMView.Config.Hardware.Device |其中{$\ DeviceInfo.Label-匹配“SCSI控制器”})中的VirtualSCSIController($VMView.Config.Hardware.Device |)
{
ForEach($VirtualDiskDevice-in($VMView.Config.Hardware.Device |其中{$\控制器键-eq$virtualscisController.Key}))
{
$VMSummary=“”|选择虚拟机、主机名、电源状态、磁盘文件、磁盘名称、磁盘大小、SCSIController、SCSITarget
$VMSummary.VM=$VM.Name
$VMSummary.HostName=$VMView.Guest.HostName
$VMSummary.PowerState=$VM.PowerState
$VMSummary.DiskFile=$VirtualDiskDevice.Backing.FileName
$VMSummary.DiskName=$VirtualDiskDevice.DeviceInfo.Label
$VMSummary.DiskSize=$VirtualDiskDevice.CapacityInKB*1KB
$VMSummary.SCSIController=$VirtualSCSIController.BusNumber
$VMSummary.SCSITarget=$VirtualDiskDevice.UnitNumber
$VMSummary+=$VMSummary
}
}
清除变量VMView-ErrorAction SilentlyContinue
}
#循环访问数据存储
ForEach($数据存储中的数据存储)
{
#列出数据存储中的vmdk文件(vmdk名称)
写入进度“收集信息”(“正在处理数据存储{0}”-f$Datastore.Name)-Id 0
$DSView=$Datastore |获取视图
$fileQueryFlags=新对象VMware.Vim.fileQueryFlags
$fileQueryFlags.FileSize=$true
$fileQueryFlags.FileType=$true
$fileQueryFlags.Modification=$true
$searchSpec=新对象VMware.Vim.HostDatastoreBrowserSearchSpec
$searchSpec.details=$fileQueryFlags
$searchSpec.sortFoldersFirst=$true
$dsBrowser=获取视图$DSView.browser
$rootPath=“[”+$DSView.summary.Name+“]”
$searchResult=$dsBrowser.searchdatastores子文件夹($rootPath,$searchSpec)
ForEach($result in$searchResult)
{
ForEach($result.File |?{$\.Path类似“*.vmdk”}排序路径)中的vmdk
{
写入“收集信息”的进度(“处理VMDK{0}”-f$VMDK.Path)-Id 1
写主机“======================================================================================================================================================================”
#使用vmdk(vm名称)查找vm
$VMRef=($VMSummaries |?{$\.DiskFile-match$Datastore.Name-和$\.DiskFile-match$vmdk.Path})
“VMDK{0}属于VM{1}”-f$VMDK.Path$VMRef.VM
如果($VMRef.Powerstate-等式“PoweredOn”)
{
写入主机“VM已通电”-ForegroundColor“黄色”
$Partitions=Get WmiObject-Class Win32\u DiskPartition-ComputerName$VMRef.HostName
如果($?)
{
$Disks=Get WmiObject-Class Win32_DiskDrive-ComputerName$VMRef.HostName
$LogicalDisks=Get WmiObject-Class Win32_LogicalDisk-ComputerName$VMRef.HostName
$DiskToPartition=Get wmioobject-Class Win32\u DiskDriveToDiskPartition-ComputerName$VMRef.HostName
$LogicalDiskToPartition=获取WmiObject-类Win32_LogicalDiskToPartition-计算机名$VMRef.HostName
写入主机“读取分区和磁盘信息”-ForegroundColor“黄色”
#根据SCSI ID匹配磁盘
$DiskMatch=$Disks |?{($\.SCSIPort-1)-eq$VMRef.SCSIController-和$\.SCSITargetID-eq$VMRef.SCSITarget}
如果($DiskMatch-eq$null){写入警告“无匹配项!”}
其他的
{
写入主机“找到匹配项:”-ForegroundColor“黄色”
$DiskMatch
#查找此磁盘上的分区
$PartitionsOnDisk=($DiskToPartition |?{$\.Antecedent-eq$DiskMatch.\uu PATH})
If($PartitionsOnDisk-eq$null){写入警告“无分区!”}
其他的
{
ForEach($PartitionsOnDisk中的$PartitionOnDisk)
{
写入主机“磁盘包含分区”-ForegroundColor“黄色”
$PartitionOnDisk.Dependent
$PartitionMatches=$Partitions |?{$\.\uu路径-eq$PartitionOnDisk.Dependent}
ForEach($PartitionMatches中的$PartitionMatches)
{
$LogicalDiskRefs=$LogicalDiskToPartition |?{$\.Antecedent-eq$PartitionMatch.\uuuu路径}
If($LogicalDiskRefs-eq$null)
{
写入警告“无逻辑磁盘!”
}
其他的
{
ForEach($LogicalDiskRefs中的$LogicalDiskRefs)
{
$LogicalDiskMatches=$LogicalDisks |?{$\uu.\uu路径-eq$LogicalDiskRef.Dependent}
ForEach($LogicalDiskMatch中的$LogicalDiskMatch)
{
写入主机“匹配逻辑磁盘”:-ForegroundColor“黄色”
$LogicalDiskMatch
#创建输出对象
$myObj=”“|选择数据存储、DSSizeGB、DSFreeGB、DSPercentFree、DiskFile、VM、硬盘、DriveLetter、DiskSizeGB、DiskFreeGB、PercFree
#列出数据存储名称
$myObj.Datastore=$Datastore.Name
#确定数据存储大小(GB)
$myObj.DSSizeGB=[Math]::四舍五入($Datastore.CapacityMB*1MB/1GB),$Decimals)
$myObj.DSFreeGB=[Math]::四舍五入($Datastore.FreeSpaceMB*1MB/1GB),$Decimals)
#确定数据存储可用空间(DS可用百分比)
$myObj.DSPercentFree=[Math]::Round((100*($Datastore.FreeSpaceMB/$Datastore.Capacity
$myCol | Export-Csv -Append -NoTypeInformation 'C:\TEMP\VMwareDiskUsage.csv'