Below script lists installed certificates on remote computers having 'Token" in the subject stream. This works fine using Invoke-Command but I need to use Invoke-WMImethod as we don’t have PS enabled on lot of computers in domain. I have tried to replace the Invoke-command with Invoke-WMImethod in below script, but when I run it fails with this message - "A parameter cannot be found that matches parameter name ‘ScriptBlock’. I don’t know what am I missing here or I am making incorrect use of the remoting command. Would appreciate if someone can take a look in Forum and suggest to fix it.
Input file
$Servers = Get-Content “C:\Users\Downloads\servers.txt”
$ErrorActionPreference = ‘Stop’
$Array = @()
$cred = Get-Credential
Looping each server
foreach($Server in $Servers)
{
Write-Host Processing $Server -ForegroundColor yellow
Try
{
Checking hostname of a server provided in input file
$hostname = ([System.Net.Dns]::GetHostByName(“$Server”)).hostname
Querying for certificates
$Certs = Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList “gpupdate.exe /force” -ComputerName $Server -Credential $cred -ScriptBlock{ Get-Childitem Cert:\LocalMachine\Root } | Where-Object {$_.Subject -Match “Token-CA”}
}
Catch
{
$_.Exception.Message
Continue
}
If($hostname -and $Certs)
{
Foreach($Cert in $Certs)
{
Adding certificate properties and server name to object
$Object = New-Object PSObject
$Object | Add-Member Noteproperty “Server name” -Value $hostname
$Object | Add-Member Noteproperty “Certificate Subject” -Value $cert.Subject
$Object | Add-Member Noteproperty “Certificate expiration date” -Value $cert.notafter
$Object | Add-Member Noteproperty “Certificate thumbprint” -Value $cert.thumbprint
Adding object to an array
$Array += $Object
}
}
Else
{
Write-Warning “Something went wrong”
}
}
If($Array)
{
To export to CSV
$Array | Export-Csv -Path C:\Users\Downloads\results.csv -Force -NoTypeInformation
}