Isso deve ser feito no powershell:
Get-ChildItem .\*.vb | Select-String A | Select-Object path -unique | Where-Object{!(Select-String -InputObject $_ -Pattern B)}
Para incluir subpastas:
Get-ChildItem .\*.vb -Recurse | Select-String A | Select-Object path -unique | Where-Object{!(Select-String -InputObject $_ -Pattern B)}
Não estou certo de que o seu exemplo específico seja diferente do meu modelo, mas usando seus termos de pesquisa específicos, tente isto:
Get-ChildItem .\*.vb -Recurse | Select-String HttpDelete | Select-Object path -unique | Where-Object{!(Select-String -InputObject (Get-Content $_.Path) -Pattern securityEntityPermission)}