如何使用powershell查找其路径在文本文件中不存在的文件

如何使用powershell查找其路径在文本文件中不存在的文件,powershell,directory,text-files,file-exists,Powershell,Directory,Text Files,File Exists,我需要检查并返回文件系统中存在的文件,但这些文件没有列在给定的文本文件中。例如,我的文本文件(sample.txt)将包含如下路径: \\SharedDrive\Data\DevS\Common\app_name\subfolder1\Archive\Archive1.vbproj \\SharedDrive\Data\DevS\NotCommon\app_name\subfolder1\user\WebApp.vbproj \\SharedDrive\Data\DevS\UnCommon\ap

我需要检查并返回文件系统中存在的文件,但这些文件没有列在给定的文本文件中。例如,我的文本文件(sample.txt)将包含如下路径:

\\SharedDrive\Data\DevS\Common\app_name\subfolder1\Archive\Archive1.vbproj
\\SharedDrive\Data\DevS\NotCommon\app_name\subfolder1\user\WebApp.vbproj
\\SharedDrive\Data\DevS\UnCommon\app_name\subfolder1\Manager\Managerial.vbproj
碰巧有一些VB项目文件存在于驱动器上,但不在列表中,我想将其与其完整路径一起返回。例如:

\\SharedDrive\Data\DevS\Common\app_name\subfolder2\Windows\SharedArchive.vbproj
\\SharedDrive\Data\DevS\NotCommon\app_name2\subfolder1\user2\WebApp2.vbproj
我试过这个:

$log = "e:\pshell\notExists.log"

Get-Content "e:\pshell\Sample.txt" | Where-Object {
#Keep only paths that does not exists
!(Test-Path $_)
} | Set-Content $log
但这恰恰相反。

试试这个:

$baseDir = "\\SharedDrive\Data\DevS"
$log = "..."

$paths = Get-Content sample.txt

Get-ChildItem $baseDir -Recurse -Filter *.vbproj | ? {
  -not $_.PSIsContainer -and $paths -notcontains $_.FullName
} | % { $_.FullName } | Set-Content $log

嗯。。。不,你的代码完全按照你说的做。为了安全起见,您可能需要将
测试路径$\u
更改为
测试路径-LiteralPath$\u
。@AnsgarWiechers:此代码实际上返回的文件是列表的一部分,但在驱动器上不存在。但我想换一种方式——列表中不存在但驱动器上存在的文件。代码返回基本目录下的所有文件夹。我只想返回列表中不存在的vb项目文件名(sample.txt)以及驱动器上的文件名。