Powershell 删除名称不在 SQL 输出中的子文件夹

Powershell 删除名称不在 SQL 输出中的子文件夹

尝试删除名称不是 SQL 输出一部分的子文件夹。尝试了以下方法,但 -exclude 似乎没有排除任何内容。我是否遗漏了某些显而易见的东西?

$SQL = Invoke-Sqlcmd -Query "SELECT id FROM files" -Database dbname -ServerInstance .\SQLEXPRESS
Get-ChildItem -Path C:\temp\files -Exclude $SQL | Remove-Item -Force -Recurse

答案1

$Query = "SELECT id FROM files"

$SqlParams = @{
    Query          = $Query
    Database       = 'dbname'
    ServerInstance = '.\SQLEXPRESS'
}

$ValuesFromSqlTable = Invoke-Sqlcmd @SqlParams

Get-ChildItem -Path C:\temp\files | Where-Object {$PSITEM.Name -notin $ValuesFromSqlTable} | Remove-Item -Force -Recurse

这就是我将如何做这样的事情。正如 Lee 提到的,您需要使用 Where-Object 来过滤搜索。

相关内容