2017-03-21 1 views
0

人。 シンプルなPowerShellスクリプトを書いており、値を返すという奇妙な動作があります。私は$リソースの値をチェックすると返された配列には、多くの "True"値が含まれています

function get-ResourcesForCsv { 
    param([string]$Container) 

    $Groups = Get-ADGroup -filter * -SearchBase $Container | 
      select-object Name | where-object { $_.Name -notlike "*`$All*" } 
    $Resources = @()  
    foreach($Group in $Groups) { 
     $Group.Name -match "((\w+)_)(.+)(_([RW]))"  
     $Resource = @{ 
      Name = $Matches[3] 
      Access = $Matches[5] 
      Group = $Group.Name 
     } 
     $Resources += New-Object PSObject -Property $Resource 
    } 
    write-host $Resources # Here's ok 
    $Resources 
} 

function get-ResourcesForHtml { 
    param([string]$Container) 
    $Temp = get-ResourcesForCsv $Container 
    write-host $Resources # Here's things goes terrible 
    ... 
} 

- 私は$温度をチェックするとき、それは、大丈夫だ - サイズが2倍、および配列は、初めに「真」が多く含まれています。

P.S.私のひどい英語のため申し訳ありませんが((

答えて

1

あなたが任意の変数には、この試合の結果を代入していない私はそのはそう、あなたの正規表現に一致する場合は、$リソースに追加することを前提としています。

if($Group.Name -match "((\w+)_)(.+)(_([RW]))") 
{ 
     $Resource = @{ 
      Name = $Matches[3] 
      Access = $Matches[5] 
      Group = $Group.Name 
     } 
     $Resources += New-Object PSObject -Property $Resource 
} 

あなたが割り当てられました正規表現にマッチするから結果を含む変数$Tempに機能get-ResourcesForCsvから変数に割り当てるか、とにかく扱いされていないコマンドレットのすべてのリターン

注:私の組織

+0

ああでテスト... 私の主な言語はС++であり、この動作は非常に非合理で奇妙に見えます。私の目を開いてくれてありがとう。 –

関連する問題