Difference between revisions of "Invoke-Command"
Jump to navigation
Jump to search
| (2 intermediate revisions by the same user not shown) | |||
| Line 6: | Line 6: | ||
Invoke-Command -ComputerName "$line" -ScriptBlock { hostname } | Invoke-Command -ComputerName "$line" -ScriptBlock { hostname } | ||
} | } | ||
| + | } | ||
| + | ``` | ||
| + | |||
| + | ``` | ||
| + | foreach($line in Get-Content .\hosts.txt) { | ||
| + | write-output $line | ||
| + | Invoke-Command -ComputerName "$line" -ScriptBlock { sc.exe failure "my service" reset=36000 actions=restart/90000 } | ||
} | } | ||
``` | ``` | ||
| Line 12: | Line 19: | ||
| + | Disk space | ||
| + | ``` | ||
| + | invoke-command -scriptblock {Get-CimInstance -ClassName Win32_LogicalDisk | Select-Object -Property DeviceID,@{'Name' = 'FreeSpace (GB)'; Expression= { [int]($_.FreeSpace / 1GB) }}} <myhost> | ||
| + | ``` | ||
Running command or local script on remote host | Running command or local script on remote host | ||
| Line 34: | Line 45: | ||
Invoke-Command -ComputerName $hostname -ScriptBlock { ipconfig } | Invoke-Command -ComputerName $hostname -ScriptBlock { ipconfig } | ||
} | } | ||
| + | ``` | ||
| + | |||
| + | # DNS | ||
| + | ``` | ||
| + | $ErrorActionPreference = "Stop" | ||
| + | |||
| + | $rsp = Invoke-Command -ComputerName wjp1-dc -ScriptBlock { | ||
| + | $zoneName = "example.com" | ||
| + | $dnsRecords = Get-DnsServerResourceRecord -ZoneName $zoneName -RRType A | ||
| + | foreach ($record in $dnsRecords) { | ||
| + | Write-Output "$($record.HostName).$zoneName" | ||
| + | } | ||
| + | $dnsRecords = Get-DnsServerResourceRecord -ZoneName $zoneName -RRType CName | ||
| + | foreach ($record in $dnsRecords) { | ||
| + | Write-Output "$($record.HostName).$zoneName" | ||
| + | } | ||
| + | } | ||
| + | write-output "$rsp" > rsp.txt | ||
``` | ``` | ||
Latest revision as of 03:03, 19 January 2024
$regex = "foo"
foreach($line in Get-Content .\hosts.txt) {
if($line -match $regex){
write-output $line
Invoke-Command -ComputerName "$line" -ScriptBlock { hostname }
}
}
foreach($line in Get-Content .\hosts.txt) {
write-output $line
Invoke-Command -ComputerName "$line" -ScriptBlock { sc.exe failure "my service" reset=36000 actions=restart/90000 }
}
https://stackoverflow.com/questions/33511772/read-file-line-by-line-in-powershell
Disk space
invoke-command -scriptblock {Get-CimInstance -ClassName Win32_LogicalDisk | Select-Object -Property DeviceID,@{'Name' = 'FreeSpace (GB)'; Expression= { [int]($_.FreeSpace / 1GB) }}} <myhost>
Running command or local script on remote host
curl.exe -L $URL -o C:\tmp\myscript.ps1
$hostname = "myhost"; Invoke-Command -ComputerName $hostname -f C:\tmp\myscript.ps1
Invoke-Command -ComputerName $hostname -ScriptBlock { Get-ChildItem C:\ } -credential $username
Invoke-Command -ComputerName $hostname -f C:\tmp\local-file-on-remote.ps1
Run on array of multiple hosts via foreach
$hostnames = @(
'host1'
'host2'
)
foreach ($hostname in $hostnames) {
Invoke-Command -ComputerName $hostname -ScriptBlock { ipconfig }
}
DNS
$ErrorActionPreference = "Stop"
$rsp = Invoke-Command -ComputerName wjp1-dc -ScriptBlock {
$zoneName = "example.com"
$dnsRecords = Get-DnsServerResourceRecord -ZoneName $zoneName -RRType A
foreach ($record in $dnsRecords) {
Write-Output "$($record.HostName).$zoneName"
}
$dnsRecords = Get-DnsServerResourceRecord -ZoneName $zoneName -RRType CName
foreach ($record in $dnsRecords) {
Write-Output "$($record.HostName).$zoneName"
}
}
write-output "$rsp" > rsp.txt