jam051
jam051

Reputation: 31

Test-Path PowerShell Issue

I am trying to search several servers to see if a specific Registry key exists.

It looks like the code below is working, but as I start to add the final part of the key, it stops "finding" stuff. I can start to add a*, then ab* as the last key, but as soon as I get to the third character or even the full string that I know is there, it comes back False saying it did not find it.

$servers = Get-Content c:\input.txt | `
   Select-Object @{l='ComputerName';e={$_}},@{l='KeyExist';e={Test-Path "HKLM:\System\CurrentControlSet\services\*abcdefg*" }}
$servers | Format-Table -AutoSize

Upvotes: 2

Views: 577

Answers (2)

Mathias R. Jessen
Mathias R. Jessen

Reputation: 174435

Your problem is that you run Test-Path against the local computer for each remote server name. Unfortunately Test-Path doesn't support querying remote registries.

You could use WMI:

$RegProv = [wmiclass]"\\$servername\root\default:StdRegProv"
if($RegProv.EnumKey(2147483650,"System\CurrentControlSet\services").sNames -like 'abc*'){
    # key starting with abc exists
}

Wrap it in your calculated property like this:

@{Name='KeyExists';Expression={[bool](([wmiclass]"\\$_\root\default:StdRegProv").EnumKey(2147483650,"System\CurrentControlSet\services").sNames -like 'abc*')}}

Upvotes: 1

Ranadip Dutta
Ranadip Dutta

Reputation: 9123

You can check the remote registry like this :

So for each server it will get the registry value and it will store the value in the arraylist and will display the final result.

Presently in your code, you are basically checking locally only.

   #####Get Registry Value #### 
$main = "LocalMachine"
$path= "registry key path"
$servers = Get-Content c:\input.txt #-- Get all the servers
$arr=New-Object System.Collections.ArrayList

foreach ($Server in $servers)  
{ 

$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($main, $Server) 
$regKey= $reg.OpenSubKey($path) 
$Value = $regkey.GetValue($key) 
$arr.Add($Value)
}
$arr

Note: Change the placeholders accordingly

Upvotes: 0

Related Questions