2014-09-19 79 views
-1

我有點奇怪的問題。或者也許不那麼奇怪。我必須爲PowerShell腳本實施「自定義清理」,以便爲我當前的項目構建一些獨特的配置(其中並不特別重要)。基本上,它拷貝了一堆從發佈目錄中的文件的與此代碼一些臨時目錄:爲什麼我的PowerShell腳本將空行寫入控制檯?

$Paths = Get-ChildItem $ProjectPath -recurse | 
     Where-Object { ($_.PSIsContainer -eq $true) -and 
     (Test-Path($_.Fullname + 'bin\release')) } | 
     Select-Object Fullname 

ForEach ($Path in $Paths) 
{ 
    $CopyPath = $Path.Fullname + '\bin\Temp' 
    $DeletePath = $Path.Fullname + '\bin\Release' 
    New-Item -ItemType directory -path $CopyPath 
    Copy-Item $DeletePath $CopyPath -recurse 
    Remove-Item $DeletePath Recurse 
} 

而且構建把它複製回來後:

ForEach ($Path in $Paths) 
{ 
    $CopiedPath = $Path.Fullname + '\bin\Temp\' 
    $DeletedPath = $Path.Fullname + '\bin\Release\' 
    $Files = Get-ChildItem $CopiedPath -recurse | 
      where-object {-not $_PSIsContainer} 
    ForEach ($File in $Files) 
    { 
     if(-not (Test-Path ($DeletedPath+$File.Name))) 
     { 
      Copy-Item $File.Fullname ($DeletedPath+$File.Name) 
     } 
    } 
    Remove-Item $CopyPath -recurse -force 
} 

這是相當笨重,noobish(對不起,我是PowerShell noob,用消防水帶喝水),但它適用於此目的,我將在稍後清理它。但是,當它執行到臨時目錄的初始副本時,它會在屏幕上寫入很多空白行,這並不理想,因爲我在執行此過程時顯示一條消息,以確保我們的CM不會嚇倒並認爲它打破了,但這條消息被空白的線條吹走了。你知道什麼可能導致這種情況,我怎麼解決這個問題?我使用PowerShell 2.0開箱即用,並且由於此項目的性質,我無法升級或獲得任何外部庫。多謝你們。

+0

'New-Item'返回已創建的新項目的詳細信息。也許你可以用'[void](New-Item -ItemType directory -path $ CopyPath)'將其封裝,這將忽略返回的數據,但仍然創建文件夾。儘管這不應占空行。僅供參考,您沒有對先前存在的物品進行任何測試。在創建新項目或複製以防止錯誤之前,我會推薦諸如'Test-Path'之類的東西。這也是很好的編碼! – Matt 2014-09-19 18:41:48

+0

我同意@Matt你或者需要用'[void]'前綴'New-Item'或者將它管道到'Out-Null'。至於測試現有路徑,由於您在使用後刪除路徑,我並不真正看到現有路徑的測試點。 – TheMadTechnician 2014-09-19 19:18:17

+0

@TheMadTechnician儘管不太可能,如果它已經存在,New-Item-Item類型的目錄-path $ CopyPath將會失敗。儘管如此,腳本仍然應該繼續。 – Matt 2014-09-19 19:25:02

回答

0

如果你正在做的唯一的事情是清理控制檯輸出,那麼你所要做的就是使用管道。你可以用[void]啓動命令,這會排除管道中的所有信息。您還可以將整個事件管理到Out-Null cmdlet中,該命令將捕獲所有輸出,除了沒有輸出的行外。

New-Item cmdlet默認將輸出返回到我的Windows PowerShell版本(4.0)上的控制檯。這在以前的版本中可能不是這樣,但我認爲它是...... Remove-Item通常也不會返回任何輸出。如果我要刺,我會使用上面提到的方法之一,在使用「Item」名詞的行上殺死輸出。

+0

管道到'Out-Null'工作完美 – Jake 2014-09-22 12:28:36

相關問題