Pokud existuje nástroj příkazového řádku, který by mohl konkurovat robocopy z hlediska užitečnosti, je to PsExec. Nástroj Sysinternals PsExec je stejně všudypřítomný jako v IT admin arzenálu. Tento nástroj umožňuje správcům vzdáleně spouštět příkazy, jako by byly v místním počítači.

Chcete-li pokrýt nástroj PsExec do hloubky, bylo vhodné pokrýt tento vyhledávaný nástroj v Průvodci ATA Ultimate. V této příručce se dozvíte, co je psexec, co je schopen mnoha příkladů, jak tento užitečný nástroj používat.,

obsah

co je PsExec.exe?

Pokud jste v něm noví nebo jste možná neměli potřebu spouštět příkazy a nástroje na vzdálených počítačích, možná nevíte, co je psexec.

PsExec nebo psexec.exe je nástroj příkazového řádku postavený pro Windows. Umožňuje správcům spouštět programy na lokálních a běžněji vzdálených počítačích. Je to bezplatná užitková část sady Sysinternals pstools, kterou postavil Mark Russinovič před mnoha lety.,

byl postaven tak, aby nahradil nástroje, jako je telnet, které vás donutily otevřít porty a zavést zranitelnosti zabezpečení. V současné době máme další možnosti, jako je PowerShell Remoting aInvoke-Command PowerShell cmdlet, ale PsExec má stále své místo.

PsExec umožňuje plnou interaktivitu pro konzolovou aplikaci bez nutnosti instalace jakéhokoli softwaru. Jak uvidíte prostřednictvím tohoto konečného průvodce, PsExec může spustit interaktivní příkazové výzvy, Spustit jako místní systém na vzdálených počítačích, spouštět příkazy na více počítačích najednou a více.,

podporuje všechny verze systému Windows od systému Windows XP. To znamená, že ano, PsExec v systému Windows 10 je také věc. Je to jednoduchý nástroj ke spuštění, který funguje téměř na všechno, ale nezaměňujte jeho jednoduchost s jeho schopnostmi!

prerekvizity

pro spuštění v místním počítači stačí spustit moderní operační systém Windows pro PsExec. Budete však chtít spustit psexec proti vzdáleným počítačům. Chcete-li to provést, budete muset zajistit, aby bylo na místě několik položek.

pokud tyto položky nyní nemáte na svém místě nebo si nejste jisti, nebojte se., V další části se budeme zabývat tím, jak napsat nějaký PowerShell pro testování vzdálených počítačů.

  • moderní počítač se systémem Windows (místní)
  • Sdílení Souborů a Tiskáren otevřete (vzdáleném počítači, TCP port 445)
  • admin$ správní sdílet k dispozici (vzdálený počítač)
  • víte, že místní účet je pověření (vzdálený počítač)

Jak tohoto psaní, PsExec je na v2.2 a bude verze budete se učit v tomto článku.,

instalace PSexec (se vzdáleným nastavením počítače)

technicky, nemusíte instalovat PsExec, protože je to jen nástroj příkazového řádku, ale dostatečně blízko. Vzhledem k tomu, že není nutná žádná instalace, stačí ji stáhnout a extrahovat ze souboru PsTools zip. PsExec není k dispozici jako samostatný nástroj a je součástí sady nástrojů PsTools.

stahování PSExec

soubor ZIP můžete buď extrahovat ručně, nebo zde je šikovný úryvek PowerShell ke stažení a extrahování PsExec ze svého ZIP souboru pstools. Všimněte si, že to odstraní všechny ostatní PsTools nástroje., Mnohé z nich jsou stále užitečné, ale nebudeme pokrývat ty v tomto článku.

konfigurace vzdáleného počítače

jakmile máte stažený PsExec, musíte zajistit, aby byl otevřený jakýkoli vzdálený počítač, na kterém jej spustíte. PsExec má jednoduché požadavky; sdílení souborů a tiskáren povoleno a admin $ administrativní podíl k dispozici.

můžete přejít na všechny vzdálené počítače, otevřít applet brány Windows Firewall, přejít na povolené aplikace a povolit sdílení souborů a tiskáren na všech počítačích, jak vidíte níže.,

Všimněte si, že sdílení souborů a tiskáren je známé bezpečnostní riziko, takže se ujistěte, že je povolen pouze soukromý profil brány firewall.

Umožňující Sdílení Souborů a tiskáren v bráně Windows Firewall

Nebo můžete navštívit každý počítač a spustit netsh nástroj otevřít pomocí:

> netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=Yes

Nebo můžete použít PowerShell je Set-NetFirewallRule cmdlet, aby to udělal.,

PS51> Set-NetFirewallRule -DisplayGroup "File And Printer Sharing" -Enabled True -Profile Private

Pokud byste raději navštívit každý počítač, máte PowerShell Remoting k dispozici a jste v doméně Active Directory, můžete také otevřít brány firewall na mnoha počítačích najednou pomocí Invoke-Command rutiny.

použití PsExec

než můžete spustit, musíte chodit. Pokud jste nikdy nepoužívali PsExec dříve, jste v léčbě! Nezapomeňte si nejprve přečíst tuto sekci, abyste si namočili nohy, abyste se naučili základy, než skočíte do hlubokého konce později v tomto článku.,

při prvním spuštění PsExec na novém systému se okamžitě zobrazí Licenční smlouva PsExec. Budete muset kliknout na tlačítko Souhlasit, abyste jej mohli začít používat.

PSExec licenční smlouvu (EULA)

Pokud chcete, aby se zabránilo licenční smlouva zobrazena, můžete tiše přijmout to pomocí /accepteula spínače, jak je znázorněno níže.,

> psexec /accepteula

naučíte pár triků na umlčení této EULA i na místních a vzdálených počítačích později v článku.

hledání nápovědy

při zkoumání PsExec byste neměli používat žádný přepínač vůbec. Když jednoduše spustíte psexec bez přepínačů, vrátí všechny možnosti a stručné vysvětlení toho, co každý dělá. Všechny možnosti jsou v níže uvedené tabulce pro vaše pohodlí.,

Switch Vysvětlení
Samostatné procesory, na které aplikace může běžet s čárkami, kde 1 je nejnižší číslované CPU. Chcete-li například spustit aplikaci na CPU 2 a CPU 4, Zadejte: „-a 2,4“
– c zkopírujte zadaný program do vzdáleného systému pro spuštění. Pokud tuto možnost vynecháte, musí být aplikace v systémové cestě ve vzdáleném systému.,
– d nečekejte na ukončení procesu (neinteraktivní).
-e nenačte profil zadaného účtu.
-F zkopírujte zadaný program, i když soubor již existuje ve vzdáleném systému.
-i spusťte program tak, aby interagoval s pracovní plochou zadané relace ve vzdáleném systému. Pokud není zadána žádná relace, proces běží v relaci konzoly. Někteří hlásili nejlepší výsledky vždy pomocí přepínače-s s-i kvůli nesrozumitelnému systému windows.,
h Pokud cílový systém je windows Vista nebo vyšší, má proc
-l Spustit proces jako omezený uživatel (proužky Administrators a umožňuje pouze oprávnění přiřazena skupina Uživatelů). V systému Windows Vista proces běží s nízkou integritou.
-N určuje časový limit v sekundách připojení ke vzdáleným počítačům.
-p určuje volitelné heslo pro uživatelské jméno. Pokud to vynecháte, budete vyzváni k zadání skrytého hesla.,
-r určuje název vzdálené služby pro vytváření nebo interakci. s.
-s spusťte vzdálený proces v systémovém účtu.
-u určuje volitelné uživatelské jméno pro přihlášení do počítače.
-v zkopírujte zadaný soubor pouze v případě, že má vyšší číslo verze nebo je novější než ten ve vzdáleném systému.
-w Nastavte pracovní adresář procesu (relativní
-x Zobrazení uživatelského ROZHRANÍ na Winlogon secure desktop (místní systém).,
-arm určuje, že vzdálený počítač je architektury ARM.
-priorita určuje-low, – belownormal, – abovenormal, – high nebo
– realtime spusťte proces s jinou prioritou. Použijte
-pozadí spustit při nízké paměti a i / o prioritě na Vista.
computer Direct PsExec pro spuštění aplikace na zadaném počítači nebo počítačích., Pokud vynecháte název počítače PsExec spouští aplikace na místní systém, a pokud zadáte zástupné znaky (\*), PsExec spouští
@file PsExec se spustit příkaz na každém z počítače uvedené v souboru.
-acceptteula tento příznak potlačuje zobrazení licenčního dialogu.
– nobanner nezobrazujte spouštěcí banner a zprávu o autorských právech.,

Běžecké Jednoduché Dálkové ovládání

Na jeho nejzákladnější, PsExec vyžaduje dva parametry: název počítače a příkaz spustit. Pokud máte příkaz spustit na vzdáleném počítači, který nevyžaduje žádné argumenty, jako hostname, můžete jednoduše přidat po název počítače.

Všimněte si, že pokud nezadáte úplnou cestu k souboru, příkaz ke spuštění musí být v uživatelské nebo systémové cestě., Také, pokud máte program s mezerami v názvu, můžete program vždy uzavřít do prostorů, jako je „moje aplikace.exe“.

> psexec \\REMOTECOMPUTER hostname

níže vidíte, že pro provedení příkazu hostname v počítači CONTOSODC1 definujete jeho UNC cestu následovanou příkazem. PSExec se pak bezpečně připojí ke vzdálenému počítači, provede příkaz a vrátí výstup. V tomto případě příkaz hostname vrátil název hostitele počítače, kterým je CONTOSODC1.,

Pokud příkaz není cmd nebo jiné konzole, PsExec se rychle opustit vzdálené relace a vrátí návratový kód vzdáleného procesu vráceny.

Poznámka: chybový nebo výstupní kód vrácený z psexec nepochází ze samotného PsExec. Místo toho vychází z příkazu, který psexec provedl na vzdáleném počítači.,

Successful psexec remote command execution

How PsExec Works on Remote Computers

PsExec goes through a few steps to execute programs on remote computers.

  1. Create a PSEXESVC.exe file in C:\Windows.
  2. Create and start a Windows service on the remote computer called PsExec.
  3. Execute the program under a parent process of psexesvc.exe.
  4. When complete, the PsExec Windows service will be stopped and removed.,

pokud proces nefunguje 100% správně, možná budete muset službu ručně odstranit pomocí příkazu sc.

spuštění jednoduchého lokálního příkazu

přestože je PsExec nejlépe známý pro spouštění příkazů na vzdálených počítačích, můžete také spouštět příkazy lokálně.

příkazy můžete spouštět lokálně tím, že jednoduše neposkytnete název počítače, jako je níže.

> psexec <local command or EXE file>

proč byste to dělali? Jedním z důvodů by bylo spuštění příkazů jako místní systémový účet., Pomocí přepínače -s můžete spustit libovolný příkaz jako systém lokálně nebo vzdáleně, jak se dozvíte více o později.

podívejte se na krátké video níže. Všimněte si, že stačí zadat přepínač -s spolu s příkazovým tlumočníkem spustitelným pro psexec pro spuštění nové příkazové relace jako NT AUTHORITY \ SYSTEM.,

Běžecké Psexec jako SYSTÉM.

PsExec Příkazy (Stále Více Pokročilé)

Jakmile máte základy dolů, pak můžete začít dozvědět se více pokročilé techniky v psexec. PsExec může udělat mnohem víc, než jen spustit jeden příkaz na jednom počítači.

spuštění příkazů na více počítačích

PsExec není omezeno pouze na spouštění příkazů na jednom vzdáleném počítači najednou., Tento nástroj má také podporu pro kopírování programů a spouštění příkazů na více počítačích najednou.

můžete spustit PsExec na více počítačích najednou několika různými způsoby.

názvy počítačů oddělených čárkami

typicky při spuštění příkazu na jednom vzdáleném počítači zadáte název jednoho počítače jako \\REMOTECOMPUTER. Můžete také zadat více počítačů oddělených čárkami, jako je níže.,

> psexec \\REMOTECOMPUTER1,REMOTECOMPUTER2,REMOTECOMPUTER3

Všechny Počítače v Doméně Active Directory

Pokud používáte PsExec na Active Directory doméně počítače a chtěli byste, aby výbuch z provedení příkazu na všech počítačích v dané doméně, použijte zástupný znak.

PsExec prohledá celou vaši doménu Active Directory a pokusí se spustit příkaz na každém počítači. Níže je příklad syntaxe, jak PsExec se pokusí připojit ke každému počítači v doméně vykonávající počítač je součástí a spustit hostname příkaz.,

Všimněte si, že pokud použijete hvězdičku pro vyhledání všech počítačů v doméně, zatímco místní počítač je součástí pracovní skupiny, obdržíte chybovou A system error has occurred: 6118.

Pomocí zástupných sil PsExec v podstatě spusťte příkaz net view /all nejprve najít všechny počítače v doméně. Jedná se o zastaralý způsob, jak najít informace o počítači kvůli jeho závislosti na Netbiosu.

čtení ze souboru

dalším způsobem, jak můžete spouštět příkazy na více počítačích najednou, je použití textového souboru., Pomocí syntaxe @<filename.txt> bude PsExec číst každý řádek v textovém souboru, jako by to byl název počítače. Poté bude každý počítač zpracovávat individuálně.

níže vidíte příklad použití PowerShell k vytvoření textového souboru názvů počítačů oddělených řádkem a jeho použití jako vstup pro psexec.

PS51> (Get-AdComputer -Filter *).Name | Out-File computers.txtPS51> psexec @computers.txt hostname

Kopírování místní programy ke vzdálenému počítači

Pomocí -c spínače, psexec bude kopírovat všechny místní program ke vzdálenému počítači před popravou.,

možná máte EXE v místním počítači v C:\Tools složku a chtěli byste ji spustit na vzdáleném počítači. Můžete tak učinit pomocí následující syntaxe:

> psexec \\REMOTECOMPUTER -c C:\Tools\program.exe

Při použití -c přepnout a nemusíte zadat spustitelný soubor, PsExec bude ještě zkopírujte soubor, ale budete se chybová zpráva systém nemůže najít zadaný soubor. K tomu dochází, protože PsExec se vždy pokusí spustit soubor, který zkopírujete.,

Pokud potřebujete kopírovat soubory do vzdálených počítačů před použitím PsExec, použijteCopy-Item PowerShell cmdlet.

spuštění vzdálených procesů pod alternativními pověřeními

dalším populárním případem použití PsExec je spuštění příkazů pod alternativními účty. Ve výchozím nastavení se PsExec pokusí připojit ke vzdálenému počítači pod vaším aktuálně přihlášeným účtem. Přesněji řečeno, bude vydávat svůj účet na vzdáleném počítači.,

Pomocí -u volitelné -p přepínač umožňuje připojit ke vzdálenému počítači s alternativní uživatelský účet. PsExec pak zašifruje uživatelské jméno i heslo a odešle je do vzdáleného počítače k ověření.

například, pokud jste v pracovní skupině, budete vždy muset zadat uživatelské jméno pro ověření vzdáleného počítače jako.

> psexec \\REMOTECOMPUTER hostname -u localadmin -p $$word

Pokud jsou oba počítače jsou členem Active Directory, ujistěte se, že předmluva uživatelský účet s názvem domény.,

> psexec \\REMOTECOMPUTER hostname -u contoso.local\domainadmin -p $$word

Všimněte si, že pokud nechcete používat -u spínače, psexec zosobňuje váš přihlášený účet na vzdáleném počítači. Nebude mít přístup k žádným síťovým zdrojům.

spuštěné procesy jako místní systémový účet

jednou z nejužitečnějších funkcí spuštění PsExec pod alternativním účtem je použití přepínače -s. Tento přepínač umožňuje PsExec (a vaše vzdáleně spuštěná aplikace) běžet pod vzdáleným (nebo místním) místním systémovým účtem počítače.,

oznámení níže jsem nezahrnul název vzdáleného počítače. PsExec bude stejně rád běžet i na místním počítači. V tomto případě jsem pomocí -s možnost říct PsExec zahájit místní příkazový řádek jako MÍSTNÍ SYSTÉMOVÝ účet.,

Běžecké psexec jako MÍSTNÍ SYSTÉM

spustit příkazový řádek jako MÍSTNÍ SYSTÉM na vzdáleném počítači, přidat název počítače na odkaz níže:

> psexec -s \\REMOTECOMPUTER cmd

Spouštění GUI Aplikací na Dálku

Další užitečné PsExec je přepínač -i. Ve výchozím nastavení PsExec neumožňuje vzdáleně provedenému příkazu vyvolat všechna okna ve vzdáleném počítači., To je užitečné, protože pokud provádíte příkazy vzdáleně, obrazovku stejně neuvidíte.

ale možná budete muset vyvolat programy pro své uživatele. Vy osobně nebudete používat aplikaci, ale koncový uživatel bude. V takovém případě použijte přepínač -i.

možná budete muset vyvolat okno poznámkového bloku na vzdáleném počítači. To není problém. Spusťte poznámkový blok.exe s přepínačem -i a PsExec otevře Poznámkový blok.,

> psexec -i \\REMOTECOMPUTER notepad
Běžecké psexec v interaktivním režimu

ujistěte se, že také použít -d spínač k odpojení, když se interaktivní okno je vychován. Ve výchozím nastavení bude PsExec čekat na dokončení procesu, který provedl. Pokud je vzdálený proces (v tomto případě Poznámkový blok) stále spuštěn, PsExec nikdy nevrátí kontrolu.,

pomocí přepínače-d s -i řekne PsExec, aby nečekal na dokončení vzdáleného procesu. Místo toho se vám po spuštění vzdáleného procesu odpojí a vrátí ovládání.

přesměrování výstupu

Psexec se bude spoléhat na jakýkoli výstup odeslaný ze vzdáleného procesu do místní relace. Obvykle se tento výstup dostane přímo do místní konzoly. Pokud byste ji však chtěli přesměrovat, můžete tak učinit pomocí typických operátorů přesměrování.,

například, pokud chcete spustit příkaz, a umlčet všechny výstup, můžete přesměrovat výstup a chyby na hodnotu null pomocí ^> nul ^2^&1.

všimněte si, že speciální znaky jsou unikl s kloboukem. (^).

PsExec Use Cases

jakmile se naučíte používat psexec, nevyhnutelně narazíte na různé specifické případy použití. V této části se dozvíte některé případy použití v reálném světě a příklady pomocí psexec.,

spuštění vzdáleného příkazového řádku (psexec cmd)

jedním z nejčastějších případů použití je spuštění PsExec jako interaktivního příkazového řádku. PsExec nespouští příkazy jen vzdáleně. Může také odeslat příkazový výstup zpět do konzoly. Z tohoto důvodu může vytvořit skvělý telnet (pokud ho někdo stále používá) nebo možná PowerShell Enter-PSSession výměna.

Chcete-li spustit vzdálený příkaz, zadejte název vzdáleného počítače a spusťte aplikaci cmd. Cmd je interpret příkazů Windows., Vzhledem k tomu, že PsExec podporuje interaktivní použití, rád vrátí blikající kurzor a výzvu.

> psexec \\REMOTEPC cmd
Otevření příkazový řádek na vzdáleném počítači,

V tomto bodě, svět je vaše ústřice. Příkazy můžete spouštět v místním počítači pomocí tohoto příkazového řádku“ vnořené “ a budou provedeny na vzdáleném počítači.

Chcete-li ukončit příkazový řádek, zadejteexit., PsExec zastaví proces cmd na vzdáleném počítači a vrátí zaostření do místního počítače.

nepoužívejte Ctrl-C k uzavření interaktivní relace cmd. Vždy používejte exit. Pokud používáte Ctrl-C, relace psexec zůstane spuštěna na vzdáleném počítači.

instalace softwaru na dálku

PsExec můžete použít jako nástroj pro nasazení softwaru poor-man. Možná máte instalační program MSI, který musíte spustit na jednom nebo více vzdálených počítačích s názvem setup.msi., Tento instalační program musí být zkopírován do vzdálených počítačů a poté proveden pomocí msiexec.nástroj exe s několika přepínači.

níže je příklad toho, jak můžete použít PsExec pro vzdálené nasazení softwaru. Tento příklad kopíruje nastavení.msi do vzdáleného počítače pak spustí instalační program MSI interaktivně jako systémový účet.

> psexec.exe \\REMOTECOMPUTER –i –s "msiexec.exe /i setup.msi" -c setup.msi

Přijetí smlouvy EULA bez /accepteula přepínač

Jak již bylo zmíněno, poprvé PsExec spouští, budete muset přijmout EULA., Můžete použít přepínač /accepteula, ale můžete jej také „uvést“ do registru.

při prvním spuštění vytvoří PsExec klíč registru na HKCU \ Software \ Sysinternals \ PsExec. Namísto tohoto klíče registru vytvoří hodnotu registru nazvanou EulaAccepted s hodnotou DWORD 1.

pomocí své oblíbené metody pro úpravu registru ve vzdálených počítačích stačí vytvořit tento klíč / hodnotu v počítačích, na kterých chcete spustit PsExec. Po vytvoření není třeba spouštět /accepteula!,

Sňatek PowerShell a PsExec

před PowerShell, vše, co jsme měli, bylo PsExec. Teď máme možnosti. PowerShell může nahradit PsExec v mnoha situacích, ale doplnit jej v jiných.

Stavební Názvy počítačů s PowerShell

Namísto použití \\* najít všechny počítače v doméně, můžete použít PowerShell místo. Pomocí PowerShell, můžete nejen vybrat určité počítače, ale nemusíte používat firewall náchylné net view /all chování.,

pomocí PowerShell můžete vytvořit řetězec obsahující všechna jména počítačů oddělená čárkou. Pak můžete předat tento řetězec PsExec, který bude vesele zpracovávat každý z nich, jako jste zadali každý z nich ručně.

níže vidíte příklad použitíGet-AdComputer cmdlet části modulu ActiveDirectory PowerShell.

PS51> psexec "\\$((Get-AdComputer -Filter *).Name -join ',')" hostname

Umožňuje PowerShell Remoting Vzdáleně

Pokud máte vzdálené počítače byste raději používat PowerShell Remoting s místo PsExec, můžete použít PsExec je povolit.,

spuštěním Enable-PSRemoting nebo winrm.dávkový soubor cmd na vzdálených počítačích můžete rychle zapnout PowerShell Remoting v mnoha počítačích najednou.

níže vidíte příklad volání winrm.dávkový soubor cmd na vzdáleném počítači běžícím jako systémový účet. Protože výstup z tohoto příkazu není potřeba, je umlčen 2>&1> $null.

$computerName = 'REMOTECOMPUTER'psexec "\\$Computername" -s c:\windows\system32\winrm.cmd quickconfig -quiet 2&>&1> $null 

PsExec Chybové Zprávy

je To stojí za zmínku, opět předem, že většina chyb kódy, vidíte vrátil z PsExec jsou z dálkového procesu; není z PsExec., Ale je užitečné mít pochopení těchto chybových kódů a toho, co by mohly znamenat.

Pokud chcete odkaz na všechny chybové kódy systému Windows, doporučuji zkontrolovat tento vyčerpávající seznam chybových kódů systému Windows.

níže je uveden seznam běžných chybových kódů, které můžete vidět vrácené společností PsExec.

Chybový Kód Vysvětlení
-2146232576 Typicky se vrátil do Windows Update, když dojde k chybě.,
0 příkaz byl úspěšně proveden
1 nesprávná funkce. Nastal problém. To je o tom.
1603 fatální chyba během instalace. To je obvykle vráceno msiexec.
2 systém nemůže najít zadaný soubor
4 systém nemůže otevřít soubor.
5 přístup je odepřen.
6 rukojeť je neplatná.,
6118 seznam serverů této pracovní skupiny není v současné době k dispozici

Svůj Názor