我有一個函數,可以根據輸入將文件的文件路徑寫入文本文件。這聽起來令人困惑,但我不知道一個更好的方式把它,所以這裏的功能:使Powershell功能/任務在後臺運行
Function writeAllPaths([string]$fromFolder,[string]$filter,[string]$printfile) {
Get-ChildItem -Path $fromFolder -Recurse $filter | Select-Object -Property FullName > $printfile
}
第一個參數是你的文件夾開始從搜索。
第二個參數,過濾器。例如* .zip將列出所有的zip文件。 第三個參數,你必須提供文本文件將在哪裏結束。
使用範例:writeAllPaths c:\ *.zip c:\allZips.txt
的事情是,當我做到這一點,PowerShell的不會直到把它完成接受命令。這不是很有成效。有沒有辦法在啓動時在後臺運行這個運行。最好在完成後給出一點信息。我可以打開該公司在過程中間所創建的任何文件...
此外,我在Windows 7上,所以我猜,我有PowerShell 2.0中
是啊,我不知道這件事:p
編輯:
我用啓動工作,如建議,具體如下:
Function writeAllPaths([string]$fromFolder,[string]$filter,[string]$printfile) {
Start-Job -ScriptBlock {Get-ChildItem -Path $fromFolder -Recurse $filter | Select-Object -Property FullName > $printfile}
}
但是,不創建的文件。舊功能確實創建了一個文件。
EDIT2:最好在我的Powershell配置文件中有這個功能。這樣,我可以隨時執行它,而不必每次啓動Powershell時都加載特定的ps1文件。在PowerShell配置
更多信息,可以發現here 您可以通過鍵入召喚自己的個人資料:notepad $profile
假設我想在我的Powershell中使用此函數簡介? – KdgDev 2009-11-07 14:58:09
我更新了這個帖子。請注意添加了-AsJob參數。 – 2009-11-07 17:57:10
我應該「只需在個人資料中添加此功能定義並設置好」。但是第三條最後一條線呢?有一個對WriteAllPaths.ps1的引用,它不存在。另外,如果我只是將此代碼粘貼到我的配置文件中,最後3行的效果如何。它們不包含在函數中,但直接存在於配置文件中。所以每次Powershell啓動時,它都會嘗試執行它們。 – KdgDev 2009-11-08 18:52:51