Jak spouštět příkazy na vzdálených PC pomocí PowerShellu?

Jak spouštět příkazy na vzdálených PC pomocí PowerShellu?

Pokud administrujete počítače v rámci větší počítačové infrastruktury, tak jste již určitě potřebovali řešit, jak spustit na vzdáleném počítači příkaz.

Pro tuto možnost Windows mají k dispozici WinRM (Windows Remote Management Service).

Ve výchozím nastavení je tato služba vypnuta. Stav této služby můžete zjistit příkazem.

get-service winrm | fl
nebo
get-service winrm

Když vidíme, že je služba vypnuta, tak tuto službu zapnete tímto příkazem:

Enable-PSRemoting -Force

PowerShell WinRM používá TCP porty HTTP (5985) a HTTPS (5986) pro síťovou komunikaci. V případě, že máte vyšší restrikce na datové síti, tak je zapotřebí tyto porty na firewallu povolit.

Set-Item wsman:\localhost\Client\TrustedHosts -value 10.0.2.10

nebo

Set-Item wsman:\localhost\Client\TrustedHosts *

Po nastavení důvěry je nutné službu WinRM restartovat. To provedeme příkazem

Restart-Service WinRM

Nyní můžeme vyzkoušet, zda je komunikace dostupná.

Pokud je vše v pořádku, můžeme se začít vzdáleně spouštět příkazy.

Příkazy buďto můžeme spouštět jednorázové, kdy se naváže spojení, vykoná se příkaz a pak se spojení ukončí.

Invoke-Command -ComputerName 10.0.2.10 -ScriptBlock { Get-ChildItem C:\ } -credential Administrator

Pomocí příkazu

Enter-PSSession COMPUTER
můžeme vzdáleně otevřít PowerShell konzoli a spouště příkazy, jako bychom je spouštěli na lokálním počítači.

Pro ukončení spojení napíšeme
Exit nebo Exit-PSSession

Tento způsob vzdálené správy je velmi zajímavý. Protože PowerShell je opravdu mocný pomocník, tak lze bez nadsázky říci, že s tímto přístupem máte vzdálený počítač zcela k dispozici. Což může být zároveň také bezpečnostním rizikem. Právě proto je tato služba ve výchozím stavu vypnutá. Každopádně v případě, že máme dobře nastavené zabezpečení, tak vám tato služba může velmi dobře posloužit.