2017-10-20 97 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 
} 

當我輸出代碼時,我得到所有的文件夾,但是有幾個重複,三倍,甚至是同一文件夾的四倍,而且是隨機的。一些文件夾多次顯示一個,其他文件夾顯我不確定爲什麼它以這種方式輸出,因爲實際目錄中沒有任何重複項。

我似乎無法弄清楚爲什麼發生這種情況?先謝謝你!

+0

取下環打印'$ secondFolder'並把它放在外面,這就是爲什麼你獲得第二個文件夾多次 –

+0

謝謝,但這不會工作,因爲它只會輸出最後一個變量存儲,這就是爲什麼它需要在循環中。下面的答案解決了我的問題。儘管謝謝你的迴應! – Koobah84

回答

0

看看你的循環中發生了什麼。讓我們假設以下文件夾結構:

  • 文本1
  • 文本2
  • 文本3

使用腳本按照你的循環會發生:

  1. 循環中運行,文件夾文本1
    $ firstfolder獲取字符串「Text1」
    $ secondfolder不initializied 輸出什麼比$ secondfolder是「空」
  2. 循環中運行,文件夾文本2
    $ firstfolder仍含有從第一循環運行
    $ secondfolder得到字符串「文本2字符串「文本1」 「 輸出將是文本2
  3. 循環中運行,文件夾文本3
    $ firstfolder仍然包含字符串‘’從第一循環運行
    $ secondfolder仍然包含字符串‘從第二循環運行
    輸出文本2’將文本1是Text2

爲了擺脫這種行爲,你應該初始化/清除您的變量,有些方法可以做到這一點:

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

非常感謝!這正是我需要的! – Koobah84