Spouštět příkazy konzoly na vzdálených počítačích přes síť. WinRM - vzdálená práce s parametry příkazu PowerShell Winrm

Tento článek popisuje, jak provést konzolové příkazy na vzdálených počítačích v síti jsou uvedeny některé velmi užitečné příklady správci systému týmy.

Pro vzdálené spouštění konzolových příkazů používám 2 nástroje: PsExec a WinRM, každý z nich má své výhody.

PsExec

Jedním z vynikajících řešení problému uvedeného v názvu je použití programu PsExec od skvělého Marka Russinoviče.

Program funguje na principu klient-server: klient běží na lokálním počítači, který odesílá příkazy serveru na vzdáleném počítači. Zvláštností tohoto programu je, že serverová část se automaticky nainstaluje bezprostředně před provedením příkazu a poté se odstraní. K provádění příkazů na vzdálených počítačích tedy stačí mít k nim administrátorská práva.

Pokud je PsExec spuštěn jako správce, který je součástí stejné domény jako vzdálený počítač, nemusíte ani zadávat žádné přihlašovací údaje. Jinak je můžete zadat na příkazovém řádku, nebo vás k nim PsExec vyzve. PsExec funguje na operačních systémech od Windows 2000 po 64bitové Windows Server 2008 R2.

Následující funkce jsou v PsExec velmi užitečné:

  • Provedení příkazu na skupině počítačů. Příklad: Následující příkaz vynutí použití nejnovějších zásad skupiny:
    psexec @group.txt gpupdate /force
  • Spouštění příkazů jako systémový účet. Příklad: následující příkaz způsobí vzdálený systém vynutit kontrolu aktualizací:
    psexec \\computer -s wuauclt /detectnow
  • Zkopírování spouštěného programu do vzdáleného počítače před jeho spuštěním. Příklad: Následující příkaz aktualizuje členství ve skupině zabezpečení tohoto počítače Aktivní adresář(přístupový token) bez restartu:
    psexec \\počítač -c -s klist.exe vyčištění

Je těžké přeceňovat užitečnost tohoto programu, pokud používáte skripty a možnosti konzolových příkazů zabudovaných do Windows.

Vzdálená správa Windows

Zpočátku to tak bylo serverová technologie Pro dálkové ovládání hardware, který byl představen v systému Windows Server 2003 R2 jako součást funkce Správa hardwaru, ale společnost Microsoft nedávno vydala balíček Windows Management Framework, který zahrnuje PowerShell 2.0 a WinRM 2.0 a je instalován na klientských operačních systémech jako aktualizace. Podrobnosti naleznete v článku KB968929.

Výhodou WinRM je snadné nasazení v prostředí domény prostřednictvím WSUS jako volitelného upgradu operačního systému a výkon, který poskytuje při použití společně s PowerShell.

Použití WinRM probíhá prostřednictvím 2 příkazů.

winrm.cmd slouží ke konfiguraci nastavení a diagnostice klienta a serveru WinRM.

Aby mohl server WinRM začít přijímat příkazy, musí být spuštěna služba Windows Remote Management a musí být dokončena její počáteční konfigurace. Použijte příkaz

winrm quickconfig na místním počítači, nebo trik s ušima
psexec -s \\název serveru winrm quickconfig přes síť pomocí PsExec jako systémového účtu.

Budete vyzváni k automatickému spuštění služby WinRM a povolení vzdáleného připojení, souhlas;)

Chcete-li se úspěšně připojit k serveru WinRM (to znamená k části serveru, která přijímá příkazy), který není součástí stejné domény jako váš klientský počítač, musíte tento cílový server přidat do „seznamu důvěryhodných“ na klientovi pomocí následujícího příkazu:

winrm nastaví winrm/config/client @(TrustedHosts="název serveru") , kde místo názvu serveru můžete zadat IP adresu nebo * (hvězdička).

Pro uživatele Windows Vista a Windows 7, které neběží jako vestavěný správce (to je obvykle případ), musíte spustit následující příkaz

reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f

Ve výchozím nastavení je limit 5 současných připojení WinRM od klienta, pro zvýšení tohoto počtu spusťte příkaz

winrm s winrm/config/winrs @(MaxShellsPerUser="X")

winrs.exe— klient pro odesílání požadavků na serverovou část. Příklad: Následující příkaz vynutí restartování vzdáleného systému...

winrs -r:servername shutdown /r /t 0

V prostředí domény se při odesílání příkazů používají přihlašovací údaje běžícího uživatele. Chcete-li odesílat příkazy jménem jiného uživatele, použijte přepínače -u:user -p:pass. Příklad: Následující příkaz vymaže místní mezipaměť názvů DNS ve vzdáleném systému

winrs -r:název serveru -u:uživatel -p:pass ipconfig /flushdns

Vzdálená správa Windows pomocí WinRM

Vlastně WinRM(nebo Vzdálená správa Windows) a překládá se jako „dálkové ovládání Okna". WinRM– servis dálkového ovládání pro operační systémy Okna. Od té doby je součástí operačních systémů Průhled A Server 2008, Pro Windows XP A Server 2003 musí být instalován odděleně odtud. WinRM– serverová část aplikace vzdáleného ovládání, ke které je možné se vzdáleně připojit pomocí klienta Windows Remote Shell (WinRS).

WinRM založené na službě Webové služby pro správu (WS-Management) a používá HTTP (port 80) nebo HTTPS (443) a požadavky SOAP k provedení úlohy. Bez ohledu na použitý protokol byl veškerý provoz odeslán WinRM je zašifrováno (pokud tuto možnost výslovně nezakážete). Výchozí ověřovací protokol je Kerberos.

V Windows Server 2008 WinRM nainstalován, ale (z bezpečnostních důvodů) není ve výchozím nastavení povolen. Chcete-li zkontrolovat, zda běží WinRM na našem počítači zadejte do příkazového řádku winrm výčet winrm/config/listener

Pokud není odpověď, pak WinRM nefunguje. Aby bylo možné nastavit WinRM na automatický start a povolit vzdálené připojení k počítači, zadejte příkaz winrm quickconfig nebo winrm qc

Chcete-li zabránit, aby služba WinRM požadovala potvrzení, můžete k hovoru přidat klíč -klid. Zjistěte informace o více doladění Můžete vidět vestavěnou nápovědu WinRM: konfigurace nápovědy winrm

Tak to vypněte WinRM můžete použít tento příkaz:
winrm smazat winrm/config/listener?IPAdress=*+Transport=HTTP

Také všichni potřebná nastavení lze provést pomocí skupinových zásad. K tomu potřebujete:

  • Nastavte službu WinRM na automatický start
  • Povolte připojení k příslušným portům (80 a 443) ve bráně firewall Okna
  • Přizpůsobit prvek skupinová politika Konfigurace počítače\Šablony pro správu\Součásti systému Windows\Vzdálená správa systému Windows\Vzdálená služba Správa Windows\Dovolit automatická instalace posluchači (Konfigurace počítače\Šablony pro správu\Součásti systému Windows\Vzdálená správa systému Windows\Služba WinRM\Povolit automatickou konfiguraci posluchačů). Zde budete muset zadat adresy IP, ze kterých jsou povolena připojení.

Nyní přejdeme k použití. Pro připojení ke vzdálenému počítači používáme utilitu WinRS. WinRS- zkratka pro Vzdálené prostředí Windows(vzdálené prostředí Okna). S WinRS můžeme provádět vzdálené požadavky na běžící počítače WinRM. Mějte však na paměti, že váš stroj musí také běžet WinRM pracovat s WinRS.

Hlavní způsob použití WinRS je provádět příkazy na vzdáleném počítači. Název počítače je určen klíčem -r následovaný příkazem, který se má například provést vítězovér: SRV2 ipconfig / Všechno běží na vzdáleném počítači SRV2 tým ipconfig/Všechno

Výchozí protokol pro komunikaci je http, ale můžete také použít https: winrs -r:https://SRV2 ipconfig /all

Můžete také použít WinRS otevřete interaktivní relaci na vzdáleném počítači: winrs -r:SRV2 cmd.exe

Tato funkce je podobná připojení přes telnet, ale použít WinRS Z bezpečnostního hlediska rozhodně lepší.

Chcete-li používat službu WinRM, musí být všechny počítače členy stejné domény. Pokud tomu tak ve vašem případě není, můžete zkusit snížit úroveň zabezpečení. Chcete-li to provést, zadejte na počítači, ke kterému chceme získat přístup, následující příkazy:

« skutečný")

« »}

WinRM nastaví winrm/config/client @(TrustedHosts= « Název počítače" }

kde ComputerName je vzdálený počítač, ze kterého bude navázáno připojení.

Na počítači, ze kterého se budeme připojovat, zadejte:

WinRM nastaví winrm/config/service/auth @(Basic= « skutečný")

WinRM nastaví winrm/config/client @(TrustedHosts= « »}

WinRM nastaví winrm/config/client @(TrustedHosts="Název počítače" }

kde ComputerName je počítač, který budeme spravovat.

Poté navážeme spojení pomocí příkazu:

vítězové -r:"Název počítače" : –u: Doména\Uživatelské jméno –p: Heslo cmd.exe

kde Doména\Uživatelské jméno je uživatelský účet s právy správce na vzdáleném počítači.

Jsou chvíle, kdy potřebujete spustit příkaz lokálně na serveru (například nakonfigurovat iniciátor iSCSI). K tomu je připojení přes vzdálenou plochu a spouštění cmd nepohodlné, použití Telnetu není bezpečné, nechci na server instalovat ssh démona...

Speciálně pro takové pokročilé případy poskytl Microsoft, počínaje Windows Server 2003 R2, administrátorům nový nástroj pro správu – Windows Remote Management (WinRM), který umožňuje vzdáleně spouštět příkazy pomocí standardní prostředky OS při zajištění správné úrovně zabezpečení.

Nemusíte ani instalovat doplňkové programy a komponenty - vše, co se nazývá, zahrnuje:


Nastavení WinRM
Jako příklad se podívám na proces nastavení WinRM na Windows Server 2008. Tento postup se neliší od nastavení WinRM například na Windows Vista nebo Hyper-V Server.

Nejjednodušší způsob, jak nakonfigurovat WinRM, je použít režim rychlé konfigurace zadáním CMD:
winrm quickconfig
a kladná odpověď („ y") na otázku o vytvoření nového objektu posluchače, který naslouchá na TCP portu 80 a používá protokol HTTP pro komunikaci mezi klientem a serverem.


A je to, server lze spravovat vzdáleně pomocí příkazu:
vítězové -r: <ИМЯ_СЕРВЕРА> <КОМАНДА>
,Kde <ИМЯ_СЕРВЕРА> - název nebo IP adresa serveru, ke kterému se připojuje;
<КОМАНДА> - vzdálený příkaz které je třeba provést.


Pokud klient a server nejsou členy stejné domény, budete muset dodatečně zadat uživatelské jméno, pod kterým bude příkaz spuštěn, a jeho heslo:
vítězové -r: <ИМЯ_СЕРВЕРА> -u: <ИМЯ_ПОЛЬЗОВАТЕЛЯ> -p: <ПАРОЛЬ> <КОМАНДА>

A zároveň, jak radí zobrazená zpráva, přidejte server do seznamu důvěryhodných uzlů nebo použijte spolehlivější protokol pro komunikaci (HTTPS).

Chcete-li přidat hostitele do seznamu důvěryhodných, spusťte na klientovi, ze kterého se plánujete připojit:
winrm set winrm/config/client @(TrustedHosts=" <ИМЯ_УЗЛА1> [,<ИМЯ_УЗЛА2> ]"}


Po konfiguraci můžete získat informace o stávajících posluchačích pomocí příkazu:
winrm výčet winrm/config/listener


Existující posluchače můžete odstranit následovně:
winrm smazat winrm/config/listener?Adresa=*+Transport=HTTPS


Konfigurace WinRM pomocí HTTPS
V některých případech může být nutné vytvořit spolehlivý kanál pro bezpečné odesílání příkazů mezi klientem a serverem. K tomu můžete použít HTTPS.

K vytvoření posluchače s podporou HTTPS však budete potřebovat digitální certifikát, který si můžete vyžádat od důvěryhodné certifikační autority, nebo použít různé nástroje pro vytváření self-signed (self-signed) certifikátů, například Makecert, který je součástí SDK pro Windows. Makecert si můžete stáhnout samostatně zde .

Chcete-li vytvořit certifikát podepsaný svým držitelem, spusťte následující příkaz:
makecert -a sha1 -r -pe -n "CN= <ИМЯ_СЕРВЕРА> " -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localmachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 -m 12 <ФАЙЛ_СЕРТИФИКАТА>
, Kde <ИМЯ_СЕРВЕРА> odpovídá jménu, které klient použije při připojení k serveru;
<ФАЙЛ_СЕРТИФИКАТА> - cesta k souboru, kam bude uložen certifikát s veřejným klíčem.


Certifikát se soukromým klíčem bude vytvořen a umístěn do úložiště certifikátů místní počítač. Přidejte jej ke svým důvěryhodným kořenovým certifikátům:
certutil -addstore kořenový adresář cert.cer


Nyní procházejte úložiště certifikátů, najděte tam požadovaný certifikát a zapište si jeho otisk (Cert Hash):
certutil -store my


Nakonec můžete začít vytvářet HTTPS listener. Zadejte příkaz:
winrm vytvořit winrm/config/Listener?Adresa=*+Transport=HTTPS @(Hostname=" <ИМЯ_УЗЛА> ";CertificateThumbprint=" <ХЭШ_СЕРТИФИКАТА> ";Port=" <ПОРТ> "}
,Kde <ИМЯ_УЗЛА> - jméno, které je zadáno při přístupu na server
<ХЭШ_СЕРТИФИКАТА>- Otisk palce, který jste se naučili v předchozím kroku (bez mezer).
<ПОРТ> - port, ke kterému se klient připojí (standardně TCP 443).


Pokud je na serveru povoleno Windows firewall, nezapomeňte přidat pravidlo:
netsh advfirewall firewall add rule name="allow WinRM on 4443" protocol=TCP dir=in localport=4443 action=allow

Pokud používáte certifikáty s vlastním podpisem, budete je muset přidat k důvěryhodným kořenovým certifikátům na klientovi.

Po dokončení všech kroků budete konečně moci provádět příkazy na dálku.

Jednou jsem měl problémy s WinRM na dvou serverech.

1.SETSPN
Na jednom byl problém, že SPN protokolu HTTP/<имя сервера>byli registrováni pro některé "vlevo" účet uživatel.

Našel jsem tyto příspěvky s příkazem
setspn -F -Q */<имя сервера>

Potom jsem je smazal pomocí příkazů
setspn -D http/<имя сервера>.<имя домена> <имя домена>\<левая учётная запись>
setspn -D http/<имя сервера> <имя домена>\<левая учётная запись>

Poté enable-psremoting -force úspěšně dokončeno.

2. JAZYKOVÝ BALÍČEK
A na druhém serveru byl pravděpodobně záludný problém s firewallem Nelze zkontrolovat stav brány firewall, prohledal jsem spoustu stránek a intuitivně jsem objevil řešení na základě odpovědi týkající se nainstalovaného jazykového balíčku.

WinRm QuickConfig
Služba WinRM již na tomto počítači běží.
WSManFault
Zpráva
Chyba poskytovatele
WSManFault
Zpráva = Nelze zkontrolovat stav brány firewall.

Číslo chyby: -2147024894 0x80070002
Systém nemůže nalézt uvedený soubor.

Odpověď uvedla, že tato chyba lze vyléčit odstraněním dalšího jazykového balíčku.
Ale udělal jsem to jinak. Mám anglický operační systém s dodatečným ruským jazykovým balíčkem. Právě jsem změnil jazyk rozhraní na ruštinu.
Ovládací panely, místní a jazykové možnosti, jazyky a klávesnice změnily jazyk rozhraní z angličtiny na ruštinu.
Odhlásil jsem se a znovu se přihlásil. Otevřel PowerShell a zopakoval WinRm QuickConfig

PS C:\Windows\system32> winrm qc

Služba WinRM není nakonfigurována tak, aby umožňovala vzdálené ovládání počítače.
Je třeba provést následující změny:

Vytvořte naslouchací proces WinRM na HTTP://*, abyste mohli přijímat požadavky WS-Man na jakékoli z IP adres tohoto počítače.

Udělej změny? y

Služba WinRM byla aktualizována pro vzdálenou správu.

Vytvořil naslouchací proces WinRM na HTTP://* pro přijímání požadavků WS-Man na kterékoli z IP adres tohoto počítače.

Bylo to úspěšné, ale stále to nestačí.

Při pokusu o vzdálené spuštění příkazů na tomto serveru z jiného počítače se objevila chyba Access Denied.

Nová PSSession: [<имя сервера>] Připojování ke vzdálenému serveru<имя сервера>se nezdařilo s následující chybovou zprávou: Přístup byl odepřen. Další informace naleznete v tématu nápovědy about_Remote_Troubleshooting.

Poté jsem zopakoval Enable-PsRemoting

PS C:\Windows\system32>Povolit-PsRemoting

Rychlé nastavení WinRM
Spuštěním příkazu "Set-WSManQuickConfig" jej povolíte tento počítač vzdálené ovládání pomocí služby WinRM.
Nezbytné akce.
1. Spusťte nebo restartujte (pokud již běží) službu WinRM.
2. Změna typu služby WinRM na "autostart".
3. Vytvořte posluchač pro přijímání požadavků na libovolné IP adrese.
4. Nakonfigurujte výjimky brány firewall pro provoz služby WS-Management (pouze protokol http).

Pokračovat?

(výchozí hodnota je "Y"):a
Služba WinRM je již nakonfigurována k přijímání požadavků v počítači.
Služba WinRM je již nakonfigurována tak, aby umožňovala vzdálené ovládání počítače.

potvrzení
Opravdu chcete provést tuto akci?
Provedení operace "Zaregistrovat konfiguraci relace" na cílovém objektu "Konfigurace relace".
"Microsoft.PowerShell32" nebyl nalezen. Bude proveden příkaz "Register-PSSessionConfiguration Microsoft.PowerShell32"
-processorarchitecture x86 -force" k vytvoření konfigurace relace "Microsoft.PowerShell32". Služba WinRM bude
restartován."
[A] Ano - A [A] Ano pro všechny - A [N] Ne - N [L] Ne pro všechny - L [S] Pozastavit - S [?] Nápověda
(výchozí hodnota je "Y"):a

Poté už WinRM na tomto serveru fungoval jak má.

Vzdálená správa systému Windows je služba vzdálené správy systému Windows. Pod tímto obecným názvem se skrývají dva nástroje, které uživateli umožňují. Na rozdíl od předchozích dvou Nástroje Windows( a ), které vám umožnily vidět, co se děje na vzdáleném počítači na vaší obrazovce, a manipulovat se vzdáleným počítačem pomocí myši a klávesnice, tyto dva nástroje se od nich radikálně liší. Nástroje zahrnuté ve službě Windows Remote Management vám umožňují ovládat počítač pouze pomocí příkazů. Tyto příkazy se spouštějí buď z příkazového řádku, nebo z prostředí Windows Power Shell. Jedinou odpovědí na ovládání je odpověď shellu na provedení příkazu. Z velké části slepě posíláte příkazy vzdálenému počítači a dostáváte jednoslabičné odpovědi o tom, zda to bylo dokončeno nebo ne. Minimální vybavení. Ale pro správu počítače je to právě to.

Aktivace vzdálené správy systému Windows

Pod Vzdálenou správou Windows jsou skryty dva příkazy, které umožňují spouštět příkazy na vzdáleném počítači. Tyto příkazy, jak již bylo zmíněno, patří do dvou různých shellů: Windows Command Prompt a Windows Power Shell. Myslím, že příkaz zná každý Řetězec Windows. Power Shell je nástroj, který má nahradit zastaralý příkazový řádek. Na první pohled jsou si tyto nástroje velmi podobné. Ale ve skutečnosti je Power Shell vyšší příkazový řádek, která již velmi dlouhou dobu neprošla velkými změnami. Právě v souvislosti s tím za něj byla připravena náhrada.

Abyste mohli vzdáleně ovládat svůj počítač pomocí Windows Vzdálená správa, cílový počítač musí být správně nakonfigurován. Chcete-li to provést, musíte na cílovém počítači spustit příkaz (v okně příkazového řádku systému Windows):

winrm quickconfig

Tento příkaz povoluje a konfiguruje zpožděný automatický start služby Windows Vzdálená správa (mimochodem, můžete také použít nástroj Služby) a také konfiguruje příslušné výjimky, které jsou nezbytné pro správné fungování těchto nástrojů.

Ale provedení tohoto příkazu nestačí. Aby bylo možné vzdálená připojení, musí cílový počítač důvěřovat počítači, ze kterého bude vzdálené ovládání prováděno. Záležitost je snazší, pokud jsou oba tyto počítače ve stejné doméně - v tomto případě jsou oba počítače vzájemně důvěryhodné. Pokud ne, pak je potřeba přidat vzdálený počítač do seznamu důvěryhodných počítačů, ať už podle názvu, nebo podle názvu počítače (což je v kontextu Globální sítě docela vážně komplikované).

winrm set winrm/config/client @(TrustedHosts="název nebo IP adresa vzdáleného počítače")

Tento příkaz musí být použit na vzdáleném počítači, kde je uvedena adresa počítače, ze kterého budou příkazy odesílány k provedení.

Vzdálené ovládání pomocí vzdálené správy Windows

Konečně je čas seznámit se se samotnými příkazy dálkového ovládání. V prostředí příkazového řádku je to možné pomocí příkazu

vítězové

a v prostředí Power Shell - příkaz

Syntaxi těchto příkazů můžete vidět v samotných prostředích, pokud k těmto příkazům zavoláte nápovědu. Uvedu pouze obecný pohled na tyto příkazy:

icm computer_name (libovolný příkaz)
winrs -r: Název_počítače -u: Uživatelské_jméno Libovolný_příkaz

Doufám, že to chápete název_počítače, Uživatelské jméno A libovolný_příkaz musí být nahrazeny proměnnými, které odpovídají vašim přáním. A zde je třeba vzít v úvahu skutečnost, že tento stejný příkaz musí patřit do shellu, ve kterém se dálkové ovládání odehrává.