2011-08-12 9 views
1
function Get-NaLUNbyMap { 
<# 
.DESCRIPTION 
Gets Lun Information for a particular initiatorgroup name & lunid 
.EXAMPLE 
Get-Inventory -computername server-r2 
.EXAMPLE 
Import-Module NaLUNbyMap 
Get-NaLUNbyMap -igroup "IA" -lunid 1 
#> 
[CmdletBinding()] 
param(
[Parameter(Mandatory=$True,ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$True)] 
[string[]]$igroup, 
[Parameter(Mandatory=$True,ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$True)] 
[string[]]$lunid 
) 
Process 
{ 

$info = (Get-NaLun |Select @{Name="LUN";Expression={$_.path}},@{Name="Size";Expression={[math]::Round([decimal]$_.size/1gb,0)}},@{Name="OnlineStatus";Expression={$_.online}},@{Name="Group";Expression={([string]::Join(",",(Get-NaLun $_.path | get-nalunmap | select -ExpandProperty initiatorgroupname)))}},@{Name="LunID";Expression={Get-NaLun $_.path | get-nalunmap | select -ExpandProperty lunid}} | ?{$_.group -eq $igroup -and $_.lunid -eq $lunid}) 
return $info 
} 
} 

Salut Im incapable de retourner la sortie de cette fonction, quelqu'un peut me s'il vous plaît aider!Retour sortie de la fonction

+0

@JasonMArcher pouvez-vous s'il vous plaît aidez-moi avec http://stackoverflow.com/questions/7104316/unable-to-extract-virtualnetwork-name-using-scvmm-powershell-modules – PowerShell

Répondre

1

C'est un code moche. :(

Voici une version nettoyée. Je pense avoir trouvé votre problème. Vos paramètres sont des tableaux, alors qu'ils devraient être des valeurs uniques en fonction de la façon dont vous les utilisez.

function Get-NaLUNbyMap { 
    <# 
    .DESCRIPTION 
    Gets Lun Information for a particular initiatorgroup name & lunid 
    .EXAMPLE 
    Get-Inventory -computername server-r2 
    .EXAMPLE 
    Import-Module NaLUNbyMap 
    Get-NaLUNbyMap -igroup "IA" -lunid 1 
    #> 
    [CmdletBinding()] 
    param(
     [Parameter(Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] 
     [string]$igroup 
     , 
     [Parameter(Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] 
     [string]$lunid 
    ) 

    process { 
     $Luns = foreach ($Lun in Get-NaLun) { 
      $LunMap = Get-NaLunMap $_.Path 

      New-Object PSObject -Property @{ 
       "LUN"= $_.Path 
       "Size" = [Math]::Round([Decimal]$_.Size/1gb, 0) 
       "OnlineStatus" = $_.Online 
       "Group" = $LunMap | Select-Object -ExpandProperty InitiatorGroupName 
       "LunId" = $LunMap | Select-Object -ExpandProperty LunId 
      } 
     } 
     $Luns | Where-Object {$_.Group -eq $igroup -and $_.LunId -eq $lunid} 
    } 
}