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 
} 
} 

こんにちは、私はこの関数からの出力を返すことができません、いくつかは私を助けてください!関数からの出力を返すことができません

+0

@JasonMArcherができ、あなたがしてくださいhttp://stackoverflow.com/questions/7104316/unable-to-extract-virtualnetwork-name-using-scvmm-powershell-modulesで私を助けてください – PowerShell

答えて

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 { 
     $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} 
    } 
} 
関連する問題