2013-02-28 75 views
1

我想通過補丁腳本里面的文件夾進行迭代,找到DBChangesMain和ContentLbl的每一個迭代的結果並存儲到字典或哈希表,然後打印出來的效果我如何做到這一點?存儲輸出到字典中

到目前爲止,我有

$patchscripts = Get-Item "F:\folder\trunk\Source\Database\Patch Scripts" 

foreach ($folders in Get-childitem $patchscripts -recurse -include *.sql) 
{   
    if ($folders -like "*DBChangesMain*") 
    { 

    } 
    if ($folders -like "*ContentLbl*") 
    {  

    }  
} 

Write-Host $DbChanges 
Write-Host $contentlbl 

,如果你有這樣做的更好的方法,請讓我知道,歡呼聲。

+0

什麼應該是你在這裏的哈希表的鍵和值? – Joey 2013-02-28 11:22:02

+0

鍵將是DBChanges或contentlbl,並且該值將是文件夾迭代的結果。我不知道如果我需要一個哈希表,我甚至可以將其存儲到一個數組我只需要遞歸動作的輸出存儲在同一個變量 – Lewis 2013-02-28 11:23:42

+0

我想存儲每個返回的值包含DBchangesmain和contentlbl進入任一相同的變量或兩個變量,我可以在以後在我的powershell腳本中引用 – Lewis 2013-02-28 11:25:38

回答

2

我想您的意見後,我寧願去以下路線:

$patchscripts = 'F:\folder\trunk\Source\Database\Patch Scripts' 
$dbChangesMain = Get-ChildItem $patchScripts -Rec -Inc *DBChangesMain*.sql 
$contentLbl = Get-ChildItem $patchScripts -Rec -Inc *ContentLbl*.sql 

之後,您只需包含SQL文件的名稱匹配兩個數組。

+0

我覺得會有一個更簡單的方法,謝謝。 – Lewis 2013-02-28 11:35:45

+1

通常在PowerShell中,我建議人們遠離明確的迭代構造,比如'for'或'foreach'。通常情況下,使用流水線會有更優雅和可讀的解決方案。大多數時候,我遇到來自接近PowerShell的人的「foreach」,就好像它只是VBScript或C#的語法不同。 – Joey 2013-02-28 11:57:18

+0

我已經做了一些ov c#所以這是我來自哪裏,但我會考慮到這一點,PowerShell似乎很棒,看看我可以拉伸多遠。 – Lewis 2013-02-28 12:24:33