2014-01-18 82 views
0

我有一個函數,用於測試一個或多個路徑是否有效以及它們是否存在。現在我創建了一個包含多個數組的自定義PSObject,並希望函數返回該對象。但它似乎只返回一個數組而不是原始的自定義對象。 Powershell ISE的調試器顯示在對象存在的函數中。我做錯了什麼?Powershell v2不返回函數的對象

這是我的代碼

function Validate-Path 
{ 
    [CmdletBinding(SupportsShouldProcess=$true)] 
    Param 
    (
    [Parameter(Mandatory = $true)] 
    [Array]$Inputpaths 
    ) 
     $Ispathvalid=test-path $Inputpaths -IsValid 
     [email protected]() 
     [email protected]() 

     $counter=0 
     foreach ($item in $Ispathvalid) 
     { 
      if($Ispathvalid[$counter] -eq $true) 
      { 
       $Validpaths+=$Inputpaths[$counter] 
      } 
      else 
      { 
       $Invalidpaths+=$Inputpaths[$counter] 
      } 
      $counter++ 

     } 

     $Doespathexist=test-path $Validpaths 
     $Testvalue=$true 
     [email protected]() 
     [email protected]() 
     $counter=0 
     foreach ($item in $Validpaths) 
     { 
      if($Doespathexist[$counter] -eq $true) 
      { 
       $Existingpaths+=$Validpaths[$counter] 
      } 
      else 
      { 
       $NonExistingpaths+=$Validpaths[$counter] 
      } 
      $counter++ 

     } 

     $object = New-Object PSObject 
     $object | Add-Member -MemberType NoteProperty -Name Existingpaths -Value $Existingpaths 
     $object | Add-Member -MemberType NoteProperty -Name NonExistingpaths -Value $NonExistingpaths 
     $object | Add-Member -MemberType NoteProperty -Name Validpaths -Value $Validpaths 
     $object | Add-Member -MemberType NoteProperty -Name Invalidpaths -Value $Invalidpaths 

     return $object 
} 
+0

代碼爲我工作。你的系統上'$ PSVersionTable'的輸出是什麼。 –

+0

也適用於我。你能告訴你如何調用它,併產生輸出嗎? –

回答

0

使用PSCustomObject,而不是PSObject

改變這一行:

$object = New-Object PSObject 

要這樣:

$object = New-Object -TypeName PSCustomObject; 
+0

這應該沒什麼區別,因爲'PSObject'只是'PSCustomObject'的縮寫。 –