2012-06-04 97 views
1

我正在嘗試使用Powershell從網絡文件夾中獲取文件名。我對Get-ChildItems的理解(請糾正我,如果我錯了)是cmdlet試圖下載整個對象,在這種情況下,這是一系列產品安裝程序,大小範圍從每個文件25MB到315MB 。使用Powershell從網絡文件夾中獲取文件名

我的腳本的目的是爲用戶創建一個菜單,供他們選擇要下載的文件。一切正常,但需要30分鐘以上才能填充菜單,這顯然是不可接受的。

我想我可能需要合併一些.NET類來完成這項工作,但如果我可以純粹使用Powershell,那將會很好。任何想法或建議,將不勝感激。

$source = Get-ChildItem "\\networkdrive\Release\Installs\2012.1.2.3\" 
+3

請顯示您的代碼。 –

+2

相關:http://stackoverflow.com/questions/7196937/how-to-speed-up-powershell-get-childitem-over-unc – SirPentor

+1

如果你只需要這些文件的名稱而沒有其他屬性,那麼你可以在Get-ChildItem上使用「-name」參數。我不積極,但可能會更快。 – David

回答

2

我發現了另一種方式來做到這一點,但它確實使用.NET類,所以嚴格地說,它並不能完全回答我自己的問題。但是,它確實完成了工作,所以它是:

$source = [System.IO.Directory]::GetFiles("\\networkdrive\Release\Installs\2012.1.2.3", "*.exe") 
1
$source = Get-ChildItem "\\networkdrive\Release\Installs\2012.1.2.3\" | Where-Object{-Not $_.PsIsContainer} 

這將得到公正的文件,但我不認爲有很多可以做的,它需要的時間。從理論上講,您可以在共享所在的服務器上遠程運行它。那會更快。不知道這是否是你的環境中的一個選項,但不是。

相關問題