2015-10-12 67 views
0

我有一個在遠程服務器上運行的powershell腳本,它使用自動化任務刪除共享驅動器上存儲的30天以前的文件。我們已經從通常位於共享驅動器的根目錄中的刪除中刪除了具有特定名稱的此文件夾。但是,在其中一個共享驅動器中,此文件夾位於根級別下一個級別,並且有七個此類子文件夾。我想排除這個文件夾與特定名稱刪除所有這些子文件夾中的一個腳本。有沒有辦法做到這一點?這是我目前using-如何從Powershell腳本的整個文件夾樹中刪除特定名稱的文件夾?

Get-Item -Path $Delete_Global_Test -Force -exclude $Keep_this_folder,$Keep_this_folder2|Get-ChildItem -Recurse|Where-Object {!$_.PSIsContainer -and $_.CreationTime -lt $regional_limit}|Remove-Item -Recurse -Force -Verbose

回答

0

加入-Exclude「notthisfolder」的劇本將是我的解決方案

+1

你可以看到,我已經使用 「-exclude $ Keep_this_folder,$ Keep_this_folder2」 這並不對文件夾指定名稱從刪除保存超出根目錄 – alclearner

+0

的-exclude添加到「的Get- ChildItem - 遞歸-Exclude $ A,$而不是在獲取,項目 爲我的作品 –

+0

不是爲我工作:( – alclearner

0

如果你知道的目錄,目錄名不會改變,你爲什麼不只需創建一個輔助路徑變量,向下鑽入該目錄並再次運行腳本?因此,如果這適用於你(你的代碼),爲什麼不創建第二個路徑變量(例如$ Delete_Global_Test2),該變量鑽到更深的目錄並在新行上重新運行相同的命令,但是使用你的第二個路徑變量?

你的腳本將這樣的工作:

Get-Item -Path $Delete_Global_Test -Force -exclude $Keep_this_folder,$Keep_this_folder2|Get-ChildItem -Recurse|Where-Object {!$_.PSIsContainer -and $_.CreationTime -lt $regional_limit}|Remove-Item -Recurse -Force -Verbose 
#Now run again but in a second root path 
Get-Item -Path $Delete_Global_Test2 -Force -exclude $Keep_this_folder,$Keep_this_folder2|Get-ChildItem -Recurse|Where-Object {!$_.PSIsContainer -and $_.CreationTime -lt $regional_limit}|Remove-Item -Recurse -Force -Verbose 

和所有你必須補充的是爲$ Delete_Global_Test2的聲明,這將是相同的$ Delete_Global_Test但附加在原有的附加子目錄。

這是否適合您的目的?

+0

事實上,它已經奏效,這是我腦海中的第一個解決方案。但爲此,我必須在這七個子目錄中提供七個不同的路徑和七個刪除腳本。我在尋找的是一種排除這個文件夾的方法,它在所有七個不同的子文件夾中使用一些命令排除具有相同名稱的文件夾,用於在整個文件夾樹中排除具有特定名稱的項目(確切地說,文件夾)。 – alclearner

+1

我不確定我是否瞭解貴組織的目錄。你能舉一個你的結構的例子嗎? 「七個這樣的子文件夾」是我認爲抓住我的部分。而且,這全是一個腳本;你想說你想把它作爲一個LINE嗎? – Nate

相關問題