Hi,
I am unable to get Hostname, Canonical_Name, LUN, Console_Name as shows blank in the output csv file and below is the error
Please help...
Error:
Get-View : Cannot validate argument on parameter 'VIObject'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.
At D:\RDM_Attach\New\50_Export_RDM_node1.ps1:14 char:18
+ $esx = Get-View $vm1name.Runtime.Host
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Get-View], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,VMware.VimAutomation.ViCore.Cmdlets.Commands.DotNetInterop.GetVIView
Get-ScsiLun : Cannot validate argument on parameter 'VmHost'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.
At D:\RDM_Attach\New\50_Export_RDM_node1.ps1:23 char:29
+ $lun = Get-ScsiLun -VmHost ($esx).Name -CanonicalName $VirtualDisk.C ...
+ ~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Get-ScsiLun], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,VMware.VimAutomation.ViCore.Cmdlets.Commands.Host.GetScsiLun
You cannot call a method on a null-valued expression.
At D:\RDM_Attach\New\50_Export_RDM_node1.ps1:24 char:2
+ $VirtualDisk.LUN = $lun.RuntimeName.SubString($lun.RuntimeName.LastI ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Get-View : Cannot validate argument on parameter 'VIObject'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.
At D:\RDM_Attach\New\50_Export_RDM_node1.ps1:14 char:18
+ $esx = Get-View $vm1name.Runtime.Host
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Get-View], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,VMware.VimAutomation.ViCore.Cmdlets.Commands.DotNetInterop.GetVIView
Get-ScsiLun : Cannot validate argument on parameter 'VmHost'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.
At D:\RDM_Attach\New\50_Export_RDM_node1.ps1:23 char:29
+ $lun = Get-ScsiLun -VmHost ($esx).Name -CanonicalName $VirtualDisk.C ...
+ ~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Get-ScsiLun], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,VMware.VimAutomation.ViCore.Cmdlets.Commands.Host.GetScsiLun
You cannot call a method on a null-valued expression.
At D:\RDM_Attach\New\50_Export_RDM_node1.ps1:24 char:2
+ $VirtualDisk.LUN = $lun.RuntimeName.SubString($lun.RuntimeName.LastI ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
| Canonical_Name | LUN | Console_Name |
Try like this
$out_csvpath = '.\diskmappings_node123.csv'
$vmview = Get-View -ViewType VirtualMachine -Filter @{'Name' = $vm1name }
$DiskInfo = @()
foreach ($VirtualSCSIController in ($VMView.Config.Hardware.Device | where { $_.DeviceInfo.Label -match "SCSI Controller" }))
{
foreach ($VirtualDiskDevice in ($VMView.Config.Hardware.Device | where { $_.ControllerKey -eq $VirtualSCSIController.Key -and $_.Backing -is [VMware.Vim.VirtualDiskRawDiskMappingVer1BackingInfo] }))
{
$VirtualDisk = "" | Select VM, VM_Host, Disk_Size, Disk_Name, SCSI_Control, SCSI_ID, Disk_File, Disk_Type, Canonical_Name, LUN, Console_Name
$VirtualDisk.VM = $vmview.name
$esx = Get-View -Id $vmview.Runtime.Host
$VirtualDisk.VM_Host = ($esx).Name
$VirtualDisk.SCSI_Control = $VirtualSCSIController.DeviceInfo.Label
$VirtualDisk.Disk_Name = $VirtualDiskDevice.DeviceInfo.Label
$VirtualDisk.Disk_Type = $VirtualDiskDevice.backing
$VirtualDisk.SCSI_ID = $VirtualDiskDevice.UnitNumber
$VirtualDisk.Disk_File = $VirtualDiskDevice.Backing.FileName
$VirtualDisk.Disk_Size = $VirtualDiskDevice.CapacityInKB * 1KB / 1GB
$VirtualDisk.Canonical_Name = ($esx.Config.StorageDevice.ScsiLun | where { $_.Uuid -eq $VirtualDiskDevice.Backing.LunUuid }).CanonicalName
$lun = Get-ScsiLun -VmHost ($esx).Name -CanonicalName $VirtualDisk.Canonical_Name
$VirtualDisk.LUN = $lun.RuntimeName.SubString($lun.RuntimeName.LastIndexof("L") + 1)
$VirtualDisk.Console_Name = ($esx.Config.StorageDevice.ScsiLun | where { $_.Uuid -eq $VirtualDiskDevice.Backing.LunUuid }).ConsoleDeviceName
$DiskInfo += $VirtualDisk
}
}
$DiskInfo | Export-Csv -Path $out_csvpath -Delimiter "," -NoTypeInformation
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Try like this
$out_csvpath = '.\diskmappings_node123.csv'
$vmview = Get-View -ViewType VirtualMachine -Filter @{'Name' = $vm1name }
$DiskInfo = @()
foreach ($VirtualSCSIController in ($VMView.Config.Hardware.Device | where { $_.DeviceInfo.Label -match "SCSI Controller" }))
{
foreach ($VirtualDiskDevice in ($VMView.Config.Hardware.Device | where { $_.ControllerKey -eq $VirtualSCSIController.Key -and $_.Backing -is [VMware.Vim.VirtualDiskRawDiskMappingVer1BackingInfo] }))
{
$VirtualDisk = "" | Select VM, VM_Host, Disk_Size, Disk_Name, SCSI_Control, SCSI_ID, Disk_File, Disk_Type, Canonical_Name, LUN, Console_Name
$VirtualDisk.VM = $vmview.name
$esx = Get-View -Id $vmview.Runtime.Host
$VirtualDisk.VM_Host = ($esx).Name
$VirtualDisk.SCSI_Control = $VirtualSCSIController.DeviceInfo.Label
$VirtualDisk.Disk_Name = $VirtualDiskDevice.DeviceInfo.Label
$VirtualDisk.Disk_Type = $VirtualDiskDevice.backing
$VirtualDisk.SCSI_ID = $VirtualDiskDevice.UnitNumber
$VirtualDisk.Disk_File = $VirtualDiskDevice.Backing.FileName
$VirtualDisk.Disk_Size = $VirtualDiskDevice.CapacityInKB * 1KB / 1GB
$VirtualDisk.Canonical_Name = ($esx.Config.StorageDevice.ScsiLun | where { $_.Uuid -eq $VirtualDiskDevice.Backing.LunUuid }).CanonicalName
$lun = Get-ScsiLun -VmHost ($esx).Name -CanonicalName $VirtualDisk.Canonical_Name
$VirtualDisk.LUN = $lun.RuntimeName.SubString($lun.RuntimeName.LastIndexof("L") + 1)
$VirtualDisk.Console_Name = ($esx.Config.StorageDevice.ScsiLun | where { $_.Uuid -eq $VirtualDiskDevice.Backing.LunUuid }).ConsoleDeviceName
$DiskInfo += $VirtualDisk
}
}
$DiskInfo | Export-Csv -Path $out_csvpath -Delimiter "," -NoTypeInformation
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
LucD,
ConsoleDeviceName shows blank and I dont see any error in the output.
I don't see a ConsoleDeviceName property in there.
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
LucD,
$VirtualDisk.Console_Name = ($esx.Config.StorageDevice.ScsiLun | where { $_.Uuid -eq $VirtualDiskDevice.Backing.LunUuid }).ConsoleDeviceName
Not sure, why I am seeing the blank for this
Is this producing anything?
Can you check with
$esx.Config.StorageDevice.ScsiLun | where { $_.Uuid -eq $VirtualDiskDevice.Backing.LunUuid }
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
I see output for console name as VMware.Vim.HostScsiDisk
LucD,
I was able to fix by adding as below
$VirtualDisk.Console_Name = ($esx.Config.StorageDevice.ScsiLun | where { $_.Uuid -eq $VirtualDiskDevice.Backing.LunUuid }).DeviceName
Thanks for your help ![]()
