Basically, need the script to loop through a list of client servers and
Caveat - the commands im trying to run are splunk commands specifically. so, they must run in the splunkuniversalforwader\bin location
I can get the "start" and "stop" to work (I assume because those are windows commands FOR Splunk service ....
However, the set deploy-poll xxx.xxx:port is getting rejected "not a valid command"
$computername = "test_server"
$products = Get-WmiObject -Class win32_product -ComputerName $computername -filter 'Name like "% forwarder%"' | select Caption, InstallLocation
foreach ($product in $products)
{
$installpath = $product.InstallLocation
}
$installpath += "bin\"
Invoke-Command -ComputerName $computername -ScriptBlock {
Set-Location "C:\program files\splunkuniversalforwarder\bin"
& ".\splunk.exe" "stop"
& ".\splunk.exe" "set deploy-poll xxx.xxx.xxx:xxx"
& ".\splunk.exe" "start"
} -ArgumentList $installpath
Your problem is this line:
& ".\splunk.exe" "set deploy-poll xxx.xxx.xxx:xxx"
"set deploy-poll xxx.xxx.xxx:xxx" is being treated as one argument to splunk.exe instead of 3 separate ones. It should work if you change the line to the following:
& ".\splunk.exe" set deploy-poll xxx.xxx.xxx:xxx