2017-10-20 3 views
0

これは私が実行している状況です。変数出力が重複しています

私はユーザープロファイルを持つ共有フォルダを持っています。いくつかのプロファイルには、以下のようなフォルダがありますusername.text1.v2他のユーザー名はusername.text2.v2です

私は両方のフォルダの違いを区別できるpowershellスクリプトを作成しようとしています...

$ParentDir = Get-ChildItem "\\blah\profiles" | Where-Object {$_.PSIsContainer -eq $True} 

ForEach ($SubDir in $ParentDir) 
{ 
    #$SubDirName = $SubDir.Name 
    If ($SubDir.Name -like "*text1*") 
    { 
     $firstFolder = $SubDir.Name 
    } 
    If ($SubDir.Name -like "*text2*") 
    { 
     $secondFolder = $SubDir.Name 
    } 

    $secondFolder 
} 

コードを出力すると、すべてのフォルダが取得されますが、同じフォルダの重複、トリプル、さらには4倍もあり、ランダムです。一部のフォルダは1つ表示され、他のフォルダは複数表示されます。実際のディレクトリに重複がないので、なぜこのように出力されているのか分かりません。

なぜそれが起こっているのかわからないのですか?前もって感謝します!

+0

削除をして外にそれを置く、それはあなたがいる理由であります2回目のフォルダを複数回取得しています –

+0

ありがとうございますが、格納されている最後の変数のみを出力するため、ループしている必要があるため動作しません。以下の答えは私の問題を解決しました。あなたの応答をありがとう! – Koobah84

答えて

0

ループ内で何が起こっているかを見てみましょう。あなたのループ内で発生します、次のスクリプトを使用して

テキスト3

  • テキスト2
    • テキスト1
    • :のは、以下のフォルダ構造を仮定しましょう

      1. ループ実行、フォルダのテキスト1
        $ firstfolderは文字列 "Text1"を取得します
        $のsecondfolderがinitializiedされていない$ secondfolderが「空」であるとして 出力が何もありません
      2. ループ実行、フォルダのテキスト2
        の$ firstfolderはまだ
        の$ secondfolderは、文字列「テキスト2を取得し、第1のループの実行から文字列「テキスト1」が含まれていますテキスト1 " 出力を実行するテキスト2
      3. ループになり、フォルダテキスト3
        の$ firstfolderはまだ文字列が含まれている『』
        の$ secondfolderはまだ文字列が含まれている第1のループの実行から『テキスト2』第2ループの実行から
        出力は以下となりますbe Text2
      あなたは初期化/あなたの変数をクリアする必要があり、この動作を取り除くために、いくつかの方法がこれを行うには:ループから `$ secondFolder`を印刷

      $firstfolder = "" 
      $secondfolder = $null 
      Clear-Variable -Name $thirdfolder 
      
  • +0

    ありがとう!これはまさに私が必要としていたものです! – Koobah84

    関連する問題