2013-02-10 30 views
1

我想學習一點Powershell,並且已經將Dos中的長歸檔腳本轉換爲Powershell。這一直很成功,但現在我正在探索重寫以下部分的選項,如果來自xml文檔的字段Recursive爲true,get-childitem必須使用-Recurse標誌。 Offcourse它會如果我能到這一句話是好的,什麼想法?:get-childitem中的遞歸標誌爲字符串

if ($parameter.Recursive -eq "true") 
     { $items = Get-ChildItem $parameter.ProcesDir -Recurse | where {!$_.PsisContainer -and $_.CreationTime -lt (get-date).adddays(-$parameter.Retention)}} 
    else 
     { $items = Get-ChildItem $parameter.ProcesDir | where {!$_.PsisContainer -and $_.CreationTime -lt (get-date).adddays(-$parameter.Retention)}} 

回答

2

這裏有一種方法:

$recurse = if($parameter.Recursive -eq "true") {$true} else {$false} 

$items = Get-ChildItem $parameter.ProcesDir -Recurse:$recurse | 
where {!$_.PsisContainer -and $_.CreationTime -lt (get-date).adddays(-$parameter.Retention)} 
+2

你可以通過將它們結合起來'-Recurse:($ parameter.Recursive - eq「true」)'如果你確實需要一行代碼,但是Shay的回答更容易閱讀:) – 2013-02-10 10:17:18

+0

是的,我更喜歡通過一行代碼更容易閱讀。感謝您的建議,雖然:) – 2013-02-10 13:19:22

+0

我同意。稍後當腳本變大時更容易維護。這樣的變量不會花費太多的資源:) – 2013-02-10 13:35:29