I wanted to get a list of which LUNs on my NetApp filer were mapped to each igroup. This script is not very efficient but it gets the job done in the format I wanted it in.
Using Windows PowerShell with the NetApp Data ONTap Module loaded and already connected to the filer I wanted to report against (using Connect-NaController) fist off I got a list of igroups and saved them into an array, i.e.
$igroups = Get-Naigroup
Then I created an object with the properties I wanted to collect using the following syntax
$output = “” | Select igroup, LUNid, Path
Then for each object in the $igroups array I had collected I ran Get-NaLUNbyigroup for each of the LUN ids 0 through to 255. I used the –ErrorAction:SilentlyContinue common parameter to hide the error messages for the LUN ids not mapped to the igroup. I collected the information I wanted in the $output object and then outputted the contents of this object. The commands looked like
Foreach ($igroup in $igroups) {
for ($lunid=0; $lunid -le 255; $lunid++) {
$output.igroup = $igroup.InitiatorGroupName
$output.LUNid = $lunid
$output.Path = get-nalunbyigroup $igroup.InitiatorGroupName $lunid -ErrorAction:SilentlyContinue
$output
}
}
Hi, i have optimized your Script. I hope you find it needfull.
$naluns = Get-NaLun
$output = “” | Select igroup, LUNid, Path
Foreach ($nalun in $naluns)
{
$lunmap = Get-NaLunMap $nalun
$output.igroup = $lunmap.InitiatorGroupName
$output.LUNid = $lunmap.LunId
$output.Path = $lunmap.Path
$output
}
Here is a oneliner: 🙂
Get-NaLun | Get-NaLunMap | select Name,LunID, Path | ft -AutoSize