尝试删除名称不是 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 来过滤搜索。