what would be the fastest way in powershell or batch to search for the existance of a file

Posted on 2014-07-23
Last Modified: 2014-07-24
what would be the fastest way to search the entire computer for a known file and make a log of what computers have the file?
basically search c:\*.* recursive for somefile.exe

I need to see if this file being used on our network because it needs to be removed.  Thanks!
Question by:bbimis
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
  • 3
  • +1
LVL 14

Expert Comment

by:Justin Yeung
ID: 40214729
do you mean search the entire network of all the computers that contain certain .exe file and create a log of what is found and not?
LVL 67

Assisted Solution

sirbounty earned 250 total points
ID: 40214731
Good info here:

# Usage:
# $directory = "\\SERVER\SHARE"
# $searchterms = "filname[*].ext"
# PS> $Results = Search $directory $searchterms

[reflection.assembly]::loadwithpartialname("Microsoft.VisualBasic") | Out-Null

Function Search {
  # Parameters $Path and $SearchString
  param ([Parameter(Mandatory=$true, ValueFromPipeline = $true)][string]$Path,
  try {
    #.NET FindInFiles Method to Look for file
    # BENEFITS : Possibly running as background job (haven't looked into it yet)

  } catch { $_ }


Open in new window


Author Comment

ID: 40214773
something more on the lines of this
$creds = Get-Credential
Get-Content C:\office.txt | ForEach-Object `
    $compname = $_
    If (Test-Connection $compname -Count 1 -Quiet)
      $files = get-childitem c:\ -recurse | ? {$ -eq "blah.exe"}

 	  write-host there are $files.count matching that name on computer $compname

 	  foreach ($file in $files){
 		$directory = $
 		$fulldirectorypath = $
 		$fullfilepath = $file.fullname
		$info1 = $ 
        $info2 = "The directory path is $fulldirectorypath "
        $info3 = "Computer ID is: $compname "
        Write-Host $info3
		"---------------------------" | Out-File c:\blah.txt -Append
		$info1|Out-File c:\blah.txt -Append
 		$info2|Out-File c:\blah.txt -Append 
		$info3|Out-File c:\blah.txt -Append
		"*******End of Data*************" | Out-File blah.txt -Append

Open in new window

Ransomware: The New Cyber Threat & How to Stop It

This infographic explains ransomware, type of malware that blocks access to your files or your systems and holds them hostage until a ransom is paid. It also examines the different types of ransomware and explains what you can do to thwart this sinister online threat.  

LVL 14

Expert Comment

by:Justin Yeung
ID: 40214798
ok, so how would you get the source? from AD search with specified name? or from an OU?
or from a txt file?

and the output, what info would you need?

what would you like to do with the file that found? delete it ? move it somewhere and rename it?

Author Comment

ID: 40214917
Well we have found a file that is causing errors on our system. i would simply like to generate a list and make 100% certain that i have scanned each computer on the network with the supplied list (i pull it form active directory).  
i would like the file to be in cvs or excel so i could look at each computer in a grid and see if it has the file and also where on the system it is.

Thanks for the help!
LVL 70

Expert Comment

ID: 40214938
Ok, so you have a text list with computer names we can process. No issue with that.

Get-ChildItem is not suited well, unless execute locally. It needs to create and manage a lot of objects, so a lot of overhead there. You do not really need the file info, only path and name, and that can be retrieved with the above routine.
a) it is processing one machine at a time, waiting for completion
b) stops as soon as there is an error like missing privileges.

Author Comment

ID: 40214965
so can you help me with a solution that will scan all of them even if it errors?
LVL 70

Expert Comment

ID: 40215025
Sadly I cannot see anything different than either running Get-ChildItem with an UNC path  - slow, involving a lot of resources, ... -  or remote execute that cmdlet. However, that requires to have PowerShell Remoting enabled on all boxes, and set up correctly so you can access it. Not something you can be sure about.

The traditional approach is to write a logon script running the scan in background locally, writing back results to a central file, and not running if it has been running already.
LVL 70

Expert Comment

ID: 40215030
Are you able to narrow down the directories to search for?
LVL 14

Accepted Solution

Justin Yeung earned 250 total points
ID: 40215601
I agree with Qlemo, if you want  a script to scan the network will take ages to finish (it really do 1 by 1).....specially you are talking about scanning all machines on the network (I don't know how much machine you have but it is not fun even with 100 machines)

either setup a powershell script to run via GPO as logon script or enable powershell remoting (I personally disagree enabling PS remoting on workstation)

Author Closing Comment

ID: 40216659
i used this method and worked fine after a few tweaks for my enviroment.  Thanks!

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Windows 10 came with  a lot of built in applications, Some organisations leave them there, some will control them using GPO's. This Article is useful for those who do not want to have any applications in their image (example:me).
There are many software programs on offer that will claim to magically speed up your computer. The best advice I can give you is to avoid them like the plague, because they will often cause far more problems than they solve. Try some of these "do it…
In this video, we discuss why the need for additional vertical screen space has become more important in recent years, namely, due to the transition in the marketplace of 4x3 computer screens to 16x9 and 16x10 screens (so-called widescreen format). …
This Micro Tutorial will give you a basic overview of Windows Live Photo Gallery and show you various editing filters and touches to photos you can apply. This will be demonstrated using Windows Live Photo Gallery on Windows 7 operating system.

752 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question