我有一个简单的数据库查询,它返回当前用户的数组
例如
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"。
我做错了什么?
答案 0 :(得分:0)
正如您的评论所示,$SQLQeryResultsSet
不是字符串数组,而是DataTable
。
您可以从每个数据行的第一列中提取单个字符串值,如下所示:
$ExcludedUsers = $SQLQeryResultsSet |ForEach-Object { '{0}' -f $_.Item(0) }
然后在$SQLQeryResultsSet
过滤器scriptblock中使用此新变量代替Where-Object