Seach for folder on multiple computers powershell.

I have the following powershell...

Get-ChildItem -path "C:\Test\Hub" -filter "initiated.txt" -recurse | Select-Object CreationTime, LastWriteTime, @{Name="Result";Expression={($_.Directory -Replace ([regex]::Escape("C:\Test\Hub"),""))}}, @{Name="RunTime";Expression={"{0:N0}" -f ($_.LastWriteTime - $_.CreationTime).TotalSeconds}}| Where-Object {$_.RunTime -gt 0}  | Sort-Object "CreationTime"

Open in new window


And need to do three things, I would ideally like to do this in the one statement as I want to pipe the output of the command to a graph generator cmdlet - but I will take what I can get!...

1) For each 'Result' value found (will be a folder name) I want to search 4 remote machine paths ('MAC1','MAC2','MAC3','MAC4') to see if the folder exists on these machines - it will exist on one of them and return the appropriate machine name to the piped output of the cmdlet.

2) The 'RunTime' is being output I guess as a formatted number i.e. 20,000. I would like to have this as a straight integer with no comma delimeter. I have tried...

@{Name="RunTime";Expression={"{0:N0}" -f [integer]::($_.LastWriteTime - $_.CreationTime).TotalSeconds}}

Open in new window


to no avail.

3) At the moment the code searches for 'initiated.txt' files, but I can see the requirements changing to include files of type '*.alo'. Is there a way I can add this as a search option in the statement and populate a new column with something like ALO/TXT to differentiate? This is the least important option at the moment.

Any help greatly appreciated.
Blowfelt82Asked:
Who is Participating?
 
Meir RivkinConnect With a Mentor Full stack Software EngineerCommented:
cls
'MAC1','MAC2','MAC3','MAC4' | %{
$path = "\\$_\C$\Test\Hub"
Get-ChildItem $path -include ('initiated.alo', 'initiated.txt') -recurse | Select-Object CreationTime, LastWriteTime, @{Name="Result";Expression={($_.Directory -Replace ([regex]::Escape("$path"),""))}}, @{Name="ALO/TEXT";Expression={$_.Extension}},@{Name="RunTime";Expression={"{0}" -f ($_.LastWriteTime - $_.CreationTime).TotalSeconds}}| Where-Object {$_.RunTime -gt 0}  | Sort-Object CreationTime 
}

Open in new window

0
 
Blowfelt82Author Commented:
Thats a great idea searching from the remote directories as a starting point! Great Answer
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.