簡體   English   中英

PowerShell 使用 CSV 刪除文件

[英]PowerShell using CSV to remove files

我正在嘗試清除超過 30 天的各種用戶目錄中的語音郵件文件。 我想使用 CSV 來定義要針對哪些用戶運行腳本。

$csv = Import-Csv "\\Server\Name\User_Base_test.csv"

foreach ($user in $csv) {
    Get-ChildItem "C:\Users\$user\AppData\Roaming\Zultys\MX Settings\$user.vm\Voice Messages\Deleted\" -Recurse |
        Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-30))} |
        Remove-Item
}

當我運行它時,我收到以下錯誤

Get-ChildItem:找不到路徑 'C:\Users@{USER=jdough}\AppData\Roaming\Zultys\MX Settings@{USER=jdough}.vm\Voice Messages\Deleted\',因為它不存在。

在 C:\Users\jasonm\Desktop\VM_SCRIPT\Clear_Old_Deleted_VM.ps1:3 char:5

  • Get-ChildItem "C:\Users\$user\AppData\Roaming\Zultys\MX Settings\$user.vm\Vo...
 + CategoryInfo: ObjectNotFound: (C:\Users\@{USER...oice Messages\D:String) [Get-ChildItem], ItemNotFoundException + FullyQualifiedErrorId: PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

CSV 文件中有一行讀取 jdough,我們的測試用戶之一。

我已驗證權限並且該位置存在。 關於我缺少什么的任何想法?

閱讀您在錯誤消息中收到的內容,我認為您的 CSV 文件是帶有標題的正確csv ,您所追求的字段是 Z099FB995346F31C749F6E40DB0F395EZ USER .下列出的用戶 SamAccountName 像這樣的東西:

"USER","MaybeThereIsMoreInfo"
"jdough","Nothing worth mentioning here"
"huzzle","Interesting info"

將代碼的第一行更改為

$csv = Import-Csv "\\Server\Name\User_Base_test.csv" | Select-Object -ExpandProperty USER

將為您提供一個$csv變量,其中包含一個僅包含用戶 SamAccountNames 的字符串數組,而不是具有名為USER屬性的對象。

至於代碼的 rest,您可能想要測試文件是否具有早於 30 天(午夜)之前的 LastWriteTime,因此我建議在foreach循環上方創建一個參考日期並與之進行比較,而不是為每個文件一遍又一遍:

# test for files older than 30 days midnight
$refDate = (Get-Date).AddDays(-30).Date

foreach ($user in $csv) {
    Get-ChildItem "C:\Users\$user\AppData\Roaming\Zultys\MX Settings\$user.vm\Voice Messages\Deleted" -File -Recurse |
        Where-Object {($_.LastWriteTime -lt $refDate)} |
        Remove-Item -WhatIf
}

如您所見,我已將-File開關添加到Get-ChildItem cmdlet,以使 function 僅返回 FileInfo 對象,而不返回 DirectoryInfo。

A 還在最終的Remove-Item中添加了-WhatIf開關,因此您可以先進行測試,如果對 WhatIf 在控制台中顯示的信息感到滿意,請移除該開關以實際開始刪除文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM