簡體   English   中英

PowerShell刪除與用戶名數組不匹配的文件

[英]PowerShell to delete files not matching an array of user names

我有一個簡單的數據庫查詢,該查詢返回當前用戶的數組,例如ABB016
ACQ002
AGU003
AHM007

我想刪除特定文件夾中名稱在該數組中找不到的文件結尾(BaseName)左側的所有文件。

下面的代碼是我目前擁有的,但是此刻它會刪除此目錄中的所有文件

# Find files that do not have the same basename as current users' name and delete
Get-ChildItem -path $DirectoryWithFiles -rec *.* | Where-Object {
      $SQLQeryResultsSet -NotContains $_.BaseName } | 
   Remove-Item -WhatIf

如果發生以下情況該怎么辦:對目標“ ABB016.pdf”執行“刪除文件”操作。

如果發生以下情況該怎么辦:在目標“ ACQ002.pdf”上執行“刪除文件”操作。

如果發生以下情況該怎么辦:對目標“ AGU003.pdf”執行“刪除文件”操作。

我究竟做錯了什么?

如您的注釋所示, $SQLQeryResultsSet不是字符串數組,而是DataTable

您可以像這樣從每個數據行的第一列中提取單個字符串值:

$ExcludedUsers = $SQLQeryResultsSet |ForEach-Object { '{0}' -f $_.Item(0) }

然后使用此新變量代替Where-Object過濾器$SQLQeryResultsSet中的$SQLQeryResultsSet

暫無
暫無

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

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