Indítsa el a Távoli asztalt. Távoli asztali hozzáférés

Volt egy feladat, hogy végre kell hajtani néhány műveletet parancs sor egy másik számítógépen természetesen menjen a felhasználóhoz, hogy futtassa a parancssort és hajtsa be a parancsokat - nem a mi módszerünk, el kell indítanunk a távoli számítógép parancssorát anélkül, hogy felállnánk a székből, és végre kell hajtanunk a szükséges műveleteket a parancson vonal. Természetesen egy ilyen művelet végrehajtható távoli kapcsolati programokkal, de ez nem mindig kényelmes, és Önnek és a felhasználónak (kliens-szervernek) hasonló programra van szüksége. Egy másik számítógép parancssorához való csatlakozás folyamata sokkal egyszerűbben hajtható végre a paranccsal PSEXEC.

psexec egy parancssori segédprogram, amely képes interaktívan meghívni egy parancssori felületet távoli Windows rendszereken, és különböző parancsokat távolról futtatni.

Ez a segédprogram csak a rendszergazda számítógépére van telepítve. A telepítéshez le kell tölteni, itt a link A Microsoft hivatalos oldala . Az archívum letöltése után ki kell csomagolnia, a kicsomagolt mappában keresse meg a PsExec.exe fájlt. Kattintson rá kétszer, megjelenik egy ablak a licencszerződéssel, kattintson a " Egyetért".

Elemezzük a parancs szintaxisát:

psexec [\\számítógép[,számítógép2[,...] | @file][-u felhasználó [-p jelszó]][-n s][-l][-s|-e][-x][-i [munkamenet]][-c [-f|-v]] [-w könyvtár][-d][-<приоритет>][-a n,n,... ] program [érvek]

egy számítógép Utasítja a PsExec-et, hogy futtassa az alkalmazást a megadott számítógépen vagy számítógépeken. Ha a számítógép neve nincs megadva, a PsExec a helyi rendszeren futtatja az alkalmazást; ha a számítógép neve csillag (\\*), akkor a PsExec az aktuális tartomány összes számítógépén futtatja az alkalmazást.

@fájl Utasítja a PsExec-et, hogy futtassa az alkalmazást a megadott szövegfájlban felsorolt ​​összes számítógépen.

-a A processzorok, amelyeken az alkalmazás futtatható, vesszővel vannak elválasztva, a processzorok pedig 1-től kezdődően vannak számozva. Például az alkalmazás második és negyedik processzoron való futtatásához írja be a "-a 2,4" parancsot.

-c A megadott program a távoli rendszerre másolásra kerül végrehajtásra. Ha ez a paraméter nincs beállítva, akkor az alkalmazásnak a távoli rendszer rendszermappájában kell lennie.

-d Megadja, hogy ne várja meg az alkalmazás befejezését. Ezt a beállítást csak nem interaktív alkalmazások futtatásakor szabad használni.

-e A megadott fiókprofil nincs betöltve.

-f A megadott program a távoli rendszerre másolódik, még akkor is, ha a fájl már létezik a távoli rendszeren.

-én A futtatott program hozzáfér a távoli rendszer megadott szekciójának asztalához. Ha a munkamenet nincs beállítva, akkor a folyamat konzolmunkamenetben fut.

-l Amikor a folyamat elindul, a felhasználó korlátozott jogokat kap (az Adminisztrátorok csoport jogai visszavonásra kerülnek, és a felhasználó csak a Felhasználók csoporthoz rendelt jogokat kapja meg). Windows Vista rendszerben a folyamat ezzel kezdődik alacsony szint megbízhatóság.

-n Lehetővé teszi a távoli számítógépek csatlakozási késleltetésének beállítását (másodpercben).

-o Lehetővé teszi egy opcionális jelszó megadását a felhasználónévhez. Ha ezt a paramétert kihagyja, akkor a rendszer felszólítja a jelszó megadására, és a jelszó nem jelenik meg a képernyőn.

-s A távoli folyamat a rendszerfiókból fut.

-u Lehetővé teszi egy opcionális felhasználónév megadását a távoli rendszerbe való bejelentkezéshez.

-v A megadott fájl csak akkor másolódik a távoli rendszerre a meglévő helyett, ha a verziószáma magasabb vagy újabb.

-w Lehetővé teszi egy munkakönyvtár (a távoli rendszeren belüli elérési út) meghatározását a folyamathoz.

-x Megjeleníti a felhasználói felületet a Winlogon asztalon (csak helyi rendszeren).

-prioritás(prioritás) Lehetővé teszi a folyamat különböző prioritásainak beállítását: -alacsony (alacsony), -normál alatti (átlag alatti), -normál feletti (átlag feletti), -magas (magas) vagy -valós idejű (valós idejű).

program A futtatandó program neve.

érvekÁtadandó argumentumok (vegye figyelembe, hogy a fájl elérési útjait helyi útvonalként kell megadni a célrendszeren).

Példák a csapatmunkára PSEXEC:

1) Egy másik számítógép parancssorának elindításához be kell írnia
psexec \\<имя компьюетра>cmd

például:
psexec \\WIN782 cmd



ezt követően megadhatja a szükséges parancsokat.

2) Egy program (ebben a példában test.exe) távoli számítógépen való futtatásához végre kell hajtania a parancsot (ez a parancs átmásolja a test.exe programot a távoli rendszerre, és interaktívan végrehajtja).

psexec \\<имя компьютера>-c test.exe

például:
psexec \\WIN782-c test.exe

3) Ha egy ilyen program már telepítve van a távoli rendszeren, és nincs a rendszerkönyvtárban, adja meg a program teljes elérési útját

psexec \\WIN782 c:\temp\test.exe

A Windows korábbi kiszolgálóverzióiban a rendszergazdáknak Terminálszolgáltatásokat kellett használniuk a szerver távoli kezelésére. Ennek a megoldásnak az volt a hátránya, hogy a terminálszolgáltatásokat akkor is telepíteni kellett, ha a rendszergazdának csak egy távoli kapcsolatra volt szüksége a rutin adminisztrációs feladatok elvégzéséhez. A Windows XP és a Windows Server 2003 szabványos Távoli asztal adminisztrációs mechanizmussal vagy egyszerűen Távoli asztallal rendelkezik, amely lehetővé teszi a távoli csatlakozást és a szükséges kiszolgálókezelési műveletek végrehajtását. Ez a mechanizmus a terminálszolgáltatásokon alapul, és két egyidejű távoli kapcsolatot támogat (Windows XP esetén egy). A rendszergazda bármely munkaállomásról felügyelheti a Windows Server 2003 rendszert futtató összes kiszolgálót, ha távolról csatlakozik hozzájuk.

jegyzet
A Remote Desktop for Administration mechanizmus lényegében megegyezik a Windows 2000 terminálszolgáltatások által támogatott távoli adminisztrációs móddal. A Windows Server 2003 rendszerben a távoli adminisztrációs feladat elkülönül a terminálszolgáltatásoktól, és külön mechanizmusként valósítják meg. A távoli adminisztrációs mechanizmus és a Terminal Services szétválasztása lehetővé tette a szerver terhelésének minimálisra csökkentését olyan helyzetben, amikor csak egy másik számítógépről kell kezelni a szervert.

A Windows XP és a Windows Server 2003 távsegítség szolgáltatással is rendelkezik, amely lehetővé teszi a felhasználó számára, hogy hozzáférjen a számítógépéhez, és segítséget kapjon nehéz helyzetek(lásd a következő részt).

jegyzet
Alapértelmezés szerint a Távoli asztal és a Távsegítség szolgáltatás le van tiltva.

Ezen túlmenően, ha az Internet Information Services (IIS) részeként egy Windows XP vagy Windows Server 2003 rendszert futtató számítógépre telepítve van egy webszerver, akkor ezen a számítógépen keresztül távolról hozzáférhet bármely olyan Windows XP vagy Windows Server 2003 rendszerhez, amely a ugyanazon a helyi hálózaton, bármely operációs rendszeren futó webböngészőből (Internet Explorer 4.0 és újabb). Ez a funkció lehetővé teszi például, hogy egy Windows 95 rendszert futtató, alacsony fogyasztású számítógépen elindítson egy böngészőt, és egy távoli Windows Server 2003 rendszer nevének megadásával, amely valamilyen nagy teljesítményű processzoron alapul, dolgozzon rajta teljes képernyős mód.
Minden távoli hozzáférési munkamenet titkosítva van, hogy megakadályozza az adatokhoz és a rendszerekhez való jogosulatlan hozzáférést: a használt RDP-protokoll az RC4 algoritmussal titkosítva van.

Távoli hozzáférési engedély

A távelérési mód vezérléséhez (ne keverje össze a telefonos kapcsolaton keresztüli távoli eléréssel!) Használja a Rendszer tulajdonságai ablak Távoli fülét (Távoli használat) (10.9. ábra). (Az ablak gyors eléréséhez használja a billentyűket +.)
Ha engedélyezni szeretné, hogy más számítógépekről érkező felhasználók hozzáférhessenek a rendszerhez, jelölje be a Felhasználók távoli csatlakozásának engedélyezése ehhez a számítógéphez jelölőnégyzetet. A Távoli felhasználók kiválasztása gombra kattintva kifejezetten megadhatja, hogy mely felhasználók számára engedélyezett a távoli hozzáférés (10.10. ábra): ezek a felhasználók bekerülnek a helyi Távoli asztali felhasználók csoportba. Alapértelmezés szerint csak a rendszergazdáknak van távoli hozzáférése a számítógéphez.
Nem használhat fiókokat jelszó nélkül távoli hozzáféréshez. Ha vannak ilyen bejegyzések a számítógépen, akkor amikor bejelöli a Felhasználók távoli csatlakozásának engedélyezése ehhez a számítógéphez jelölőnégyzetet, egy figyelmeztetés jelenik meg, amint az az ábrán látható. 10.11.

Rizs. 10.9. Távoli asztal és Távsegítség vezérlőablak

Rizs. 10.10. Az ebben az ablakban megadott felhasználók távoli hozzáférést kapnak a számítógép asztalához


Rizs. 10.11. Emlékeztető, hogy a jelszó nélküli fiókok nem használhatók a számítógép távoli elérésére

A Remote Desktop Connection segédprogram távelérési munkamenet inicializálására szolgál (a Start | Minden program | Kellékek | Kommunikáció almenüből vagy a parancssorból az mstsc paranccsal indítható el). Adja meg a távoli számítógép nevét vagy IP-címét, majd kattintson a Csatlakozás gombra (10.12. ábra) – és néhány pillanat múlva megjelenik egy ablak, amely a távoli rendszerbe való bejelentkezésre szólít fel!

Figyelem

Rizs. 10.11. Emlékeztető, hogy a jelszó nélküli fiókok nem használhatók a számítógép távoli elérésére

Távoli hozzáférési munkamenet indítása és konfigurálása

A Remote Desktop Connection segédprogram távelérési munkamenet inicializálására szolgál (a Start | Minden program | Kellékek | Kommunikáció almenüből vagy a parancssorból az mstsc paranccsal indítható el). Adja meg a távoli számítógép nevét vagy IP-címét, majd kattintson a Csatlakozás gombra (10.12. ábra) – és néhány pillanat múlva megjelenik egy ablak, amely a távoli rendszerbe való bejelentkezésre szólít fel!



Rizs. 10.12. Ebből az ablakból munkamenetet kezdeményezhet egy távoli számítógéppel

Figyelem

Windows XP rendszereken a Remote Desktop használatával történő bejelentkezés „kirúgja” az aktuális felhasználót a rendszerből anélkül, hogy az aktuális munkamenetet bezárná. Ha egy távoli felhasználó egy már regisztrált felhasználó nevével jelentkezik be, akkor a munkakörnyezetet - megnyitott ablakok, futó programok - ez a felhasználó kapja meg, aki viszont újra bejelentkezhet és megnyomhatja az "idegenet". Csak a Távsegítség használata esetén lehetséges, hogy két felhasználó dolgozzon egyidejűleg ugyanabban a munkamenetben. Ez nem történik meg a Windows Server 2003 rendszerben, mert két munkamenetet tesz lehetővé a távoli adminisztrációhoz. Ha azonban az mstsc /console parancsot használjuk, akkor ugyanazt a működési módot kaphatjuk meg, mint a Windows XP-ben - vagyis "push"-val.
A Távoli asztali kapcsolat ablakban kattintson a Beállítások gombra, és alaposan tekintse át a távoli kapcsolat beállításait meghatározó összes fület. Beállíthatja például a képernyő méretét, a színmélységet (legfeljebb 24 bit), a csatlakozási sebességet stb. Ügyeljen a Helyi erőforrások fülre (10.13. ábra).

Rizs. 10.13. A helyi eszközök átrendelését vezérlő lap

Alapértelmezés szerint a távoli számítógépről érkező hang a helyi számítógépre kerül átirányításra, és a távoli számítógépen végzett munka közben nyomtathat a helyi nyomtatóra. Ha bejelöli a Lemezmeghajtók jelölőnégyzetet, akkor mindkét rendszer lemezét egyszerre használhatja. Ez nagyon kényelmes például fájlok másolásakor: „egy csuklómozdulattal” a Windows Intéző ablakában (ahol mindkét számítógép lemeze megjelenik), bármilyen információt átmásolhat egy távoli számítógépről a helyi lemezre. .
Az Experience (Tapasztalat) fül (10.14. ábra) lehetővé teszi a távoli elérési munkamenet hozzáigazítását a csatlakozási paraméterekhez: letilthat néhány grafikus funkciót a kis sebességű csatornáknál, és engedélyezheti az összes funkciót, ha helyi hálózaton keresztül csatlakozik.

Rizs. 10.14. Távoli elérési paraméterek konfigurálása a kommunikációs csatorna sebességétől függően

Ha a munkamenet ablakát teljes képernyőről rögzített méretű képernyőre szeretné váltani, és fordítva, használja a billentyűket ++

A Windows Server 2003 rendszerek a Távoli asztalok beépülő modult használják a terminálszolgáltatások eléréséhez. Használható számítógépek távoli elérésére is. ábrán. A 10.15. ábra egy példát mutat két távoli számítógéphez (Távoli kiszolgálóhoz és Tartományvezérlőhöz) történő egyidejű csatlakozásra. Minden munkamenet előre létre van hozva és konfigurálva (lásd: Snap-In Root and Remote Access Session Tree), amely után könnyen elindítható a kurzorra mutatva a listában. Könnyedén válthat a különböző munkamenetek között.


Rizs. 10.15. Távoli asztalok beépülő ablaka két egyidejű távoli hozzáférési munkamenettel

Kilépés egy munkamenetből

Amikor egy számítógép távoli elérési munkamenetében dolgozik, a rendszergazdának három lehetősége van a munkamenet befejezésére (minden esetben meg kell nyitnia a Start menüt (Start), és rá kell kattintania a Leállítás gombra (Munka vége)):

  • kikapcsolhatja a számítógépet a Leállítás opció kiválasztásával a Windows leállítása ablakban;
  • a Kijelentkezés opció kiválasztásával kijelentkezhet a rendszerből;
  • az aktuális munkamenetet a Leválasztás opció kiválasztásával fejezheti be - ebben az esetben a korábban használt néven a számítógéphez való újracsatlakozáskor a rendszergazda ugyanazt a munkakörnyezetet kapja (nyitott ablakok és futó programok), amelyet a kapcsolat bontásakor „elhagyott”. az ülés.

Távoli hozzáférés az interneten keresztül

A számítógép interneten keresztüli eléréséhez írja be a http:// címet a böngésző címmezőjébe.<имя_cepвepa>/TSWeb , ahol a kiszolgáló_neve a webszerver DNS-neve (telepített IIS-sel rendelkező számítógép) vagy annak IP-címe.


Rizs. 10.16. Internet csatlakozási ablak távoli számítógép

A szerverhez való csatlakozás után megjelenik a Remote Desktop Web Connection weboldal (10.16. ábra), ahol a Szerver mezőben meg kell adni annak a számítógépnek a nevét vagy címét, amelyhez csatlakozni kíván, majd kattintson a Connect gombra. Kérjük, vegye figyelembe, hogy a webszerver és a célszámítógép neve eltérhet: azaz egy számítógépen keresztül "bejelentkezik" a hálózatba, de bármelyik másikhoz csatlakozik.

Figyelem
A leírt mód működéséhez a Remote Desktop Web Connection összetevőt telepíteni kell a kiszolgálóra a WWW (World Wide Web Service) szolgáltatás részeként.

Amikor először követi ezt az eljárást, a kiszolgáló letölti az ActiveX összetevőt, amelyet telepítenie kell a helyi számítógépére. Az ablaka az ábrán látható. 10.17. Kattintson az Igen gombra.


Rizs. 10.17. Figyelmeztetés ActiveX-összetevő helyi számítógépre történő telepítésével kapcsolatban

Ezt követően létrejön a kapcsolat a kiválasztott (cél)számítógéppel, és megjelenik a hagyományos regisztrációs ablak. ábrán. 10.18 például megjelenik egy Internet Explorer böngészőablak, amely egy távoli számítógépen lévő munkamenetet jelenít meg. Felhívjuk figyelmét, hogy a cím ablakban megjelenik egy számítógép IP-címe (amelyen keresztül beléptünk a hálózatba), és a kapcsolat létrejön egy másik számítógéppel - annak címe a képernyő alján látható. Emlékezzünk vissza, hogy ilyen kép minden olyan operációs rendszerben elérhető, amelyen az Internet Explorer 4.0 vagy újabb verziója telepítve van. Teljes képernyős módban a böngésző panelek egyáltalán nem jelennek meg, és csak a távoli számítógép asztalát fogjuk látni.

Rizs. 10.17. Figyelmeztetés ActiveX-összetevő helyi számítógépre történő telepítésével kapcsolatban

Ezt követően létrejön a kapcsolat a kiválasztott (cél)számítógéppel, és megjelenik a hagyományos regisztrációs ablak. ábrán. 10.18 például megjelenik egy Internet Explorer böngészőablak, amely egy távoli számítógépen lévő munkamenetet jelenít meg. Felhívjuk figyelmét, hogy a cím ablakban megjelenik egy számítógép IP-címe (amelyen keresztül beléptünk a hálózatba), és a kapcsolat létrejön egy másik számítógéppel - annak címe a képernyő alján látható. Emlékezzünk vissza, hogy ilyen kép minden olyan operációs rendszerben elérhető, amelyen az Internet Explorer 4.0 vagy újabb verziója telepítve van. Teljes képernyős módban a böngésző panelek egyáltalán nem jelennek meg, és csak a távoli számítógép asztalát fogjuk látni.



A rendszergazdák egyik legnépszerűbb feladata egy parancs futtatása egy távoli számítógépen, amire szükség lehet egy program vagy segédprogram telepítéséhez, bármilyen beállítás módosításához stb. Ritkán beszélünk csak egy számítógépről, gyakrabban van szükség parancsra több munkaállomáson vagy szerveren fut.

Mivel ez a probléma népszerű, sokféleképpen lehet megoldani. Kezdve a csoportházirendekkel (amelyekben bejelentkezési vagy indítási szkripteket használhat erre a célra), és a következővel végződik erős rendszerek kezelés, például a System Center Essentials vagy a System Center Configuration Manager. Ebben a cikkben azonban olyan módszereket szeretnék megvizsgálni, amelyek azonnal elérhetők a parancssorból vagy a parancsfájl-fájlokból, és nem igényelnek ügynökök és egyéb felhajtások előzetes telepítését. Vannak azonban bizonyos előfeltételek. Például rendszergazdai jogosultságokkal kell rendelkeznie azon a számítógépen, amelyen a parancsot futtatni kívánja (kivéve a "proxy" forgatókönyvet, de erről később).

Az egyik kedvenc módja ennek a feladatnak a Mark Russinovich által írt PsExec.exe parancssori segédprogram, amelyet szabadon letölthet a Windows SysInternals webhelyéről. A cikk végén találsz rá egy linket. Nem igényel telepítést a rendszerre, egyszerűen átmásolhatja a %path% környezeti változóban található mappák egyikébe, és bármelyik parancssori shellből meghívhatja: Cmd vagy PowerShell.

A PsExec használata nagyon egyszerű. Például az ipconfig /flushdns fő gépen való futtatásához egyszerűen futtassa a következő parancsot:

psexec \\main ipconfig /flushdns

Az ipconfig parancs a fő számítógépen fog futni az Ön hitelesítő adataival. Amikor az ipconfig befejeződik, az összes szöveges kimenet a számítógépre kerül, valamint a parancs kilépési kódja (hibakód) visszaküldésre kerül. Ha a parancs sikeres volt, akkor 0 lesz.

Természetesen a PsExec lehetőségei ezzel nem értek véget. A segédprogram paraméterek nélküli meghívásával további elérhető lehetőségeket láthat. Ezek közül csak néhányra fogok összpontosítani.

A -d kapcsoló azt mondja a PsExec-nek, hogy nem kell megvárni a parancs végrehajtását, hanem csak le kell futtatni és elfelejteni. Ebben az esetben nem kapunk kimeneti adatokat a konzol segédprogramtól, de másokat futtathatunk anélkül, hogy megvárnánk az előző parancs befejezését. Ez nagyon hasznos, ha például egy programtelepítőt több számítógépen kell futtatnia.

A PsExec alapértelmezés szerint lopakodó módban hajtja végre a parancsokat, vagyis nem jelennek meg ablakok vagy párbeszédablak azon a rendszeren, ahol a parancsot végrehajtják. Ez a viselkedés azonban megváltoztatható az -i kapcsolóval. Utána megadható, hogy hány munkamenetben jelenjenek meg az ablakok, vagy nem adható meg, ekkor a felület megjelenik a konzol munkamenetben.

Tehát egy ablak megjelenítése a verzióinformációkkal operációs rendszer a fő gépen a PsExec-et a következőképpen kell futtatnia:

psexec -i \\main winver.exe

Ha egy parancsot egyszerre több számítógépen szeretne végrehajtani, akkor szüksége lesz a nevük kiolvasására egy listás szövegfájlból.

psexec @c:\comps.txt systeminfo.exe

Nos, a PsExec egyik leghasznosabb funkciója a bemenet/kimenet interaktív átirányítása a számítógépek között, ami lehetővé teszi például, hogy távoli szerveren futtassuk a cmd.exe fájlt, és parancsokat adjunk neki, és eredményeket kapjunk a helyi szerveren. számítógép.

Hogyan működik a Psexec?

Minden zseniális egyszerű. A PsExec.exe végrehajtható fájl erőforrásai közé tartozik egy másik végrehajtható fájl, a PSEXESVC, amely egy Windows szolgáltatás. A parancs végrehajtása előtt a PsExec kicsomagolja ezt az erőforrást a távoli számítógép egy rejtett adminisztratív megosztott mappájába, a következő fájlba: \\ComputerName\Admin$\system32\psexesvc.exe. Ha a -c kapcsolóval jelezte, hogy a végrehajtható fájlokat erre a rendszerre szeretné átmásolni, akkor azok is ebbe a mappába kerülnek.

Az előkészítő lépések befejezése után a PsExec telepíti és elindítja a szolgáltatást a Windows Service Management API-k segítségével. A PSEXESVC elindulása után több csatorna jön létre közte és a PsExec között az adatok (beviteli parancsok, eredmények stb.) átviteléhez. Ha elkészült, a PsExec leállítja a szolgáltatást, és eltávolítja a célszámítógépről.

Windows Management Instrumentation (WMI)

Ennek a népszerű feladatnak a megvalósításának következő módja, amelyről beszélni szeretnék, a Windows Management Instrumentation használata. A WMI a Windows 2000 óta minden Microsoft operációs rendszerben jelen van, sőt Windows 9x-re is külön csomagból telepíthető. A WMI alapértelmezés szerint engedélyezve van, és nem igényel további konfigurációt. Használatához elegendő adminisztrátori jogosultság, és a tűzfalon engedélyezett DCOM protokoll. A WMI rengeteg lehetőséget kínál a rendszerek kezelésére, de ezek közül jelenleg csak egy érdekel minket.

A folyamatok elindításához szükségünk van a Win32_Process osztály Create metódusára. Elég könnyű használni. A PowerShellben ez a következőképpen történik:

$Computer = "fő"
$Command = "cmd.exe /c systeminfo.exe >
("\\$Computer\root\cimv2:Win32_Process").create ($Command)

Itt megadtam a cmd.exe fájlt indítandó folyamatként, és már át is adtam argumentumként kívánt parancsot. Ez akkor szükséges, ha a távoli számítógép környezeti változóit vagy a beépített cmd.exe utasításokat, például a ">"-t kell használnia a kimenet fájlba való átirányításához. A Create metódus nem várja meg a folyamat befejeződését, és nem ad vissza eredményt, hanem elmondja nekünk az azonosítóját - ProcessID.

Ha olyan számítógépet használ, amelyen még nincs telepítve a PowerShell, akkor ezt a WMI-módszert VBScript-szkriptből is meghívhatja. Például így:

1. lista – Folyamat indítása WMI-vel (VBScript)

Számítógép = "PC3"
Parancs = "cmd.exe /c systeminfo.exe > \\server\share\%computername%.txt"
Set objWMIService = GetObject("winmgmts:\" & Computer & "\root\cimv2:Win32_Process")
Eredmény = objWMIService.Create("calc.exe", Null, Null, intProcessID)

De sokkal egyszerűbb a wmic.exe parancssori segédprogram használata, amely meglehetősen kényelmes felületet biztosít a WMI-vel való munkavégzéshez, és a Windows XP-től kezdődő operációs rendszerekben megtalálható. Ebben például egy számológép futtatásához a fő számítógépen csak futtassa a következő parancsot:

wmic /node:fő folyamathívás Create calc.exe

Természetesen a WMI képességei nem korlátozódnak csupán a folyamatok elindítására. Ha többet szeretne megtudni erről a technológiáról, javasoljuk, hogy olvassa el Konstantin Leontiev WMI-ről szóló cikkeit, amelyekre mutató hivatkozásokat a cikk végén talál.

WSH Remote Scripting

Igen, furcsa módon a Windows Script Host képes szkriptek futtatására más számítógépeken is. Igaz, ez a funkció nem kapott nagy népszerűséget, és valószínűleg annak köszönhető, hogy túl sok előkészítő tevékenységet igényel, és cserébe nagyon kevés lehetőséget biztosít. De mindenképpen beszélek erről a módszerről, mert jól jöhet.

Tehát a szkript futtatásához egy másik számítógépen WSH használatával, a következőket kell tennünk:

Rendszergazdai jogok a távoli számítógépen. Ez magától értetődő, és szinte minden más, ebben a cikkben felsorolt ​​indítási módhoz szükséges. Engedélyezze a WSH Remote Scripting-et úgy, hogy a Remote karakterlánc értékét "1"-re állítja a rendszerleíró adatbázisban a HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings beállításkulcs wscript –regserver parancsában. Ha tűzfalat használnak a számítógépeken, akkor engedélyeznie kell a hozzáférést. a DCOM-hoz. Sőt, ezt nem csak a felügyelt számítógépen kell megtenni, hanem azon is, amelyről a szkriptet futtatni kívánja. A Service Pack 2 vagy újabb szervizcsomaggal rendelkező Windows XP rendszereken módosítania kell a DCOM biztonsági beállításait. Ezt a csoportházirend segítségével lehet megtenni. A Számítógép konfigurációja \ Windows beállítások \ Biztonsági beállítások \ Helyi házirendek \ Biztonsági beállítások alatt állítsa be az engedélyeket a következők szerint: DCOM: A gépi hozzáférés korlátozásai a biztonsági leíró nyelv (SDDL) szintaxisában
Adja meg a Névtelen bejelentkezést, és a Mindenki csoportok a Helyi hozzáférés engedélyezése és Távoli elérés engedélyezése DCOM: Machine Launch Restrictions in Security Descriptor Definition Language (SDDL) szintaxis
Engedélyek megadása a rendszergazdáknak: Helyi indítás engedélyezése, Távoli indítás engedélyezése, Helyi aktiválás engedélyezése, Távoli aktiválás engedélyezése
Mindenki csoport – Helyi indítás engedélyezése, Helyi aktiválás engedélyezése

Nos, mindezen eljárások után megpróbálhatja futtatni a szkriptet egy másik számítógépen.

Egy példaszkript, amely ezt a technológiát használja:

2. lista – WSH távoli szkriptelés (VBScript)

Set objController = CreateObject("WshController")
Set objRemoteScript = objController.CreateScript("C:\test.vbs", "PC5")WScript.ConnectObject objRemoteScript, "távoli_"
objRemoteScript.Execute
Do While objRemoteScript.Status 1
WScript.Sleep 1000
hurok
MsgBox "Szkript kész"
Sub remote_Error
Dim objError
Állítsa be: objError = objRemoteScript.Error
WScript.Echo "Error - Line: " & objError.Line & _
", Char: " & objError.Character & vbCrLf & _
"Leírás: " & objError.Description
WScript kilépés -1
vége al

A második sorában a CreateScript függvény paramétereiként a távoli számítógépen végrehajtandó parancsfájl elérési útja és a számítógép tényleges neve látható.

Feladat ütemező

A Task Scheduler a parancssorból vezérelhető két segédprogrammal - at.exe és schtasks.exe. Mindkét segédprogram lehetővé teszi egy távoli számítógép nevének megadását a feladat létrehozásához, és így lehetővé teszi a probléma megoldását. De részletesen csak a schtasks.exe-t fogjuk figyelembe venni, mivel sokkal több funkciót kínál.

Bár a parancsok végrehajtása más számítógépeken nem az ütemező fő célja, ennek ellenére sok érdekes forgatókönyv megvalósítását teszi lehetővé. Használható például a telepítés engedélyezésére szoftver az ebédszünetben. Vagy ha a felhasználók vacsoráznak más idő, az indítás a számítógép bizonyos tétlensége után is végrehajtható.

schtasks /create /s server6.td.local /tn install /tr \\main\data\install.cmd /sc egyszer /st 13:00 /ru rendszer

Fontos megérteni, hogy a feladat melyik fiók nevében kerül végrehajtásra. Ebben a példában a /ru paramétert a rendszerváltozóhoz adtam meg, ezért a számítógépfiók telepítésének befejezéséhez olvasási hozzáférésre lesz szüksége a hálózati mappához a programterjesztési készlettel.

Egy másik hasznos megoldás szerintem az, ha beütemezünk néhány műveletet a napi végrehajtásra, és csak akkor töröljük a feladatot, ha megerősítik a sikert. Ez azt jelenti, hogy létrehozhat egy egyszerű kötegfájlt, amely először lefuttatja a program telepítőjét, megvárja, amíg befejeződik, és ellenőrzi, hogy a program telepítése sikeres-e. Ha igen, akkor eltávolítja a feladatot az ütemezőből az adott számítógépen. Példa egy ilyen fájlra:

3. lista – A program telepítése, majd a feladat törlése (Windows Batch)

msiexec /qn /package \\server\share\subinacl.msi
ha létezik "c:\program files\Windows Resource Kits\Tools\subinacl.exe" (
subinacl /tn Telepítés_Subinacl /f
)

WinRM (WS Management)

A WinRM a nyílt szabványú DMTF (Distributed Management Task Force) Microsoft általi megvalósítása, amely lehetővé teszi a rendszerek webszolgáltatások segítségével történő kezelését. Nem fogok belemenni a technológia eszközébe, csak röviden leírom, mi szükséges a használatához.

A WinRM 1-es és újabb verziója a Windows Vista és a Windows Server 2008 rendszerrel kezdődő operációs rendszerek része. Windows XP és Windows Server 2003 esetén a WinRM külön csomagként telepíthető (lásd a hivatkozásokat).

Ahhoz, hogy gyorsan beállíthassa a számítógépet a szabványos portokon keresztüli csatlakozásokhoz, és lehetővé tegye az adminisztrátori fiókokhoz való csatlakozást, csak futtassa a parancsot:

winrm gyorskonfig

Ahhoz, hogy a winrm ne kérjen megerősítést, hozzáadhatja a -quiet kapcsolót a híváshoz. A finomhangolással kapcsolatos további információkért lásd a beépített winrm súgót:

winrm help config

Ha a felügyelt számítógépen webszerver fut, a WinRM semmilyen módon nem zavarja azt, annak ellenére, hogy alapértelmezés szerint szabványos HTTP-portokat használ. Csak a kifejezetten neki szánt kapcsolatokat fogja el.

Természetesen nem kell manuálisan futtatnia ezt a parancsot minden kezelni kívánt számítógépen. Az összes szükséges beállítás könnyen elvégezhető a csoportházirendekkel. Ehhez szüksége van:

Konfigurálja a WinRM (Windows Remote Management) szolgáltatást úgy, hogy automatikusan elinduljon. Konfigurálja a Számítógép konfigurációja \ Felügyeleti sablonok \ Windows-összetevők \ Windows távfelügyelet (WinRM) \ WinRM szolgáltatás \ A figyelők GPO-elemének automatikus konfigurálása. Itt meg kell adnia az IP-címek azon tartományait, amelyekről a kapcsolatok engedélyezettek. Természetesen a megfelelő portokon (alapértelmezés szerint 80) is engedélyeznie kell a kapcsolatokat a Windows tűzfalban.

Függetlenül attól, hogy HTTP (80) vagy HTTPS (443) portot használunk, a WinRM által továbbított forgalom titkosított (hacsak természetesen nem tiltja le ezt az opciót). Az alapértelmezett hitelesítési protokoll a Kerberos.

De elég a beállításokról, jobb, ha közvetlenül a használathoz megy. Bár a winrm segédprogram lehetővé teszi a WinRM szolgáltatás konfigurálását, valamint például WMI-lekérdezések végrehajtását, minket jobban érdekel egy másik - a winrs. Az RS betűk itt Remote Shell-t jelentenek. A WinRS nagyon hasonló a PsExechez, bár a WinRM technológiát használja. A számítógép nevét az -r kapcsolóval adjuk meg, majd a végrehajtandó parancsot. Íme néhány példa:

winrs -r:Core ver.exe

Mivel a winrs már használja a cmd.exe-t távoli shellként, könnyen elérheti a távoli környezeti változókat parancsokban, vagy használhat más beépített cmd.exe parancsokat:

winrs -r:Core "dir c:\temp > c:\temp\list.txt"

A PsExechez hasonlóan a winrs segédprogram is lehetővé teszi interaktív munkamenet megnyitását egy távoli számítógépen:

winrs -r:main cmd.exe

Ez a funkció hasonló a telnet munkamenethez, de biztonsági szempontból a winrs használata határozottan jobb, mint a telnet és még a PsExec is. Függetlenül attól, hogy HTTP (80) vagy HTTPS (443) portot használunk, a WinRM által továbbított forgalom titkosított (hacsak természetesen nem tiltja le ezt az opciót). Az alapértelmezett hitelesítési protokoll a Kerberos.

Windows PowerShell 2.0 távvezérlés

Bár a Windows PowerShell második verziója a cikk írásakor még béta tesztelés alatt áll, a terepen való képességeiről távoli végrehajtás csapatokról mindenképpen érdemes most beszélni. Kipróbálhatja saját maga az előnézeti verzió letöltésével (lásd a hivatkozásokat), vagy a Windows 7 vagy a Windows Server 2008 R2 béta verziójának részeként.

A PowerShell Remoting infrastruktúra a WinRM 2.0-s verzióján alapul, ezért örökli ennek a technológiának az összes előnyét, például a továbbított adatok titkosítását és a szabványos HTTP/HTTPS-portokon való működés képességét. De a Windows PowerShell nyelv gazdagságának és az objektumokkal való munkaképességének köszönhetően még több lehetőséghez jutunk. A Ebben a pillanatban A WinRM2.0 szintén béta állapotban van, és csak Windows Vista és Windows 2008 rendszereken tölthető le. A PowerShell 2.0-val együtt a Windows 7 és a Windows Server 2008R2 rendszerekbe is beépítik.

Frissítés: Mire a cikk megjelent az ItBand.ru oldalon, a PowerShell 2.0 és a WinRM 2.0 végleges verziói már minden támogatott platformon elérhetők. A Windows Server 2008R2-ben és a Windows 7-ben már a rendszer szerves részeként szerepelnek, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008 esetén pedig minden szükséges összetevő beszerezhető a Windows Management Framework nevű csomagként.

Mielőtt teljes mértékben kihasználná ezeket az előnyöket, a PowerShell Remoting szolgáltatást engedélyezni kell mind a kezelőn, mind a felügyelt számítógépeken. Ez egyszerűen megtehető az Enable-PSRemoting parancsmag (Windows PowerShell parancs) futtatásával. Ezen túlmenően, ha hozzáadja a -Force kulcsot, akkor a rendszer nem kér megerősítést. Ez a parancsmag szükség esetén meghívja a winrs quickconfig-ot, és kivételeket hoz létre a Windows tűzfalban, így nincs szükség további teendőkre.

Ezután könnyen végrehajthat parancsokat más számítógépeken az Invoke-Command parancsmag (vagy annak icm álneve) használatával:

Invoke-Command -ComputerName Main -ScriptBlock (netsh interfész dump > c:\ipconfig.txt)

Természetesen a parancs előre elhelyezhető egy változóban, és a -ComputerName paraméternél ne egy, hanem egyszerre több számítógép nevét adjuk meg. A következő sorrend lehetővé teszi, hogy egyszerre három számítógépről jelenítse meg az Explorer.exe fájl verzióját.

$Command = ((get-item c:\Windows\explorer.exe).VersionInfo.FileVersion)
Invoke-Command -ComputerName Main, Server7, Replika -ScriptBlock $Command

Amint látható, egyszerre több parancsot is átadhat egy blokkban, ezek végrehajtásának eredményeit több számítógépen egy változóban helyezheti el, majd a Windows PowerShell objektumkezelési képességeinek segítségével feldolgozhatja azokat a munkaállomáson.

A PowerShell Remoting lehetőségei azonban csak most kezdődnek. Az Enter-PSSession parancsmag segítségével interaktív Windows PowerShell-munkamenetbe léphet be egy távoli számítógépen. Kiléphet egy ilyen munkamenetből az Exit-PSSession parancsmag segítségével, vagy egyszerűen kiléphet.

A New-PSSession parancsmag munkameneteket hoz létre a távoli számítógépeken, amelyekre mutató mutatókat el lehet helyezni egy változóba, majd argumentumként átadja az Invoke-Command parancsnak, hogy egyszerre több számítógépen, állandó környezetben parancsokat hajtson végre. A képernyőképen láthat egy példát, ahol a c:\computers.txt listából egyszerre több számítógépen is végrehajtok egy parancssort.

Proxykezelés

Ez a módszer eltér a fentiektől, és teljesen más feladatokat szolgál, de nem kevésbé releváns. Ha a felhatalmazás átruházása nem lehetséges, vagy túl sok erőt biztosít, akkor lehetővé teszi a normál felhasználó számára, hogy végrehajtson bizonyos parancsokat, amelyek rendszergazdai jogosultságokat igényelnek anélkül, hogy bármilyen módon további jogosultságokat adnának, vagy veszélyeztetnék a rendszergazdai jelszót.

Leggyakrabban az emberek az ilyen problémákat olyan segédprogramokkal oldják meg, mint a cpau.exe (lásd a hivatkozásokat), amelyek titkosított rendszergazdai jelszóval hoznak létre egy fájlt, amely lehetővé teszi egy bizonyos program futtatását. A probléma azonban az, hogy bár a jelszó titkosítva van, a segédprogramnak vissza kell fejtenie azt a program futtatása előtt. Ennek megfelelően a felhasználó használhat egy segédprogramot, amely megismétli a jelszó visszafejtési algoritmusát, és kiderítheti azt, hogy aztán más programokat indítson el, vagy további jogosultságokat szerezzen. A gyakorlatban ez természetesen meglehetősen nehéz a hétköznapi felhasználók számára, akik nem rendelkeznek speciális ismeretekkel, de ennek ellenére teljesen lehetséges. Még egyszer tisztázom, hogy ez nem egy adott segédprogram problémája, hanem általában ennek a megközelítésnek a problémája.

Úgy is tűnhet, hogy a runas segédprogram /savecred opciója alkalmas a probléma megoldására. De itt még két probléma is van. Először is, mint a fent leírt esetben, a jelszó a felhasználó számítógépén tárolódik, és ezért visszafejthető, bár a runas esetében ehhez helyi rendszergazdai jogokra lesz szükség. Másodszor, a runas elmenti a hitelesítő adatokat anélkül, hogy egy adott parancshoz kapcsolná őket, és ezért a felhasználó nem csak azt a parancsot, amelyhez hozzáférést kívánt adni, emelt jogokkal futtathatja, hanem bármely más parancsot is.

Ezeknek a problémáknak a elkerülésére, de egy adott parancs végrehajtásának lehetővé tétele érdekében egy „proxy-nak” nevezett technika használható.

A következőképpen működik. Egy magas jogosultságokkal rendelkező szkript folyamatosan fut a számítógépen. Például a mi esetünkben egy olyan fiókból indul el, amely rendszergazdai jogokkal rendelkezik a fájlszerveren. A felhasználó jelére egy előre meghatározott parancsot hajt végre. Ebben a példában zárja be a hálózaton keresztül megnyitott összes fájlt.

A rendszer rendszerezéséhez elhelyezzük a szerveren például a c:\scripts\ mappában a Server.cmd és az Action.cmd kötegfájlokat.

4. lista – Server.cmd (Windows köteg)

set trigger=c:\commandShare\trigger.txt
set action=c:\scripts\action.cmd
állítsa be a log=c:\scripts\log.txt fájlt
:Rajt
ha létezik %trigger% start %action% & echo %time% %date%>>%log% & del %trigger%
sleep.exe 5
kezdeni kell

5. lista – Action.cmd (Windows köteg)

for /f "skip=4 tokens=1" %%a in ('net files') do net files %%a /close
kijárat

A Server.cmd jelre vár a felhasználótól (fájl létrehozása a bizonyos hely), és miután megkapta, futtassa a fájlt parancsokkal - Action.cmd. Természetesen a felhasználóknak nem szabad hozzáférniük ehhez a mappához. A Server.cmd automatikus indítása a számítógép indításakor egyszerűen létrehozható az ütemezőben:

schtasks /create /ru domain\administrator /rp /sc onstart /tn ProxyScript /tr c:\scripts\server.cmd

A /ru paraméter után megjelenik az a fiók, amelyen a szkript lefut (esetünkben rendszergazdai jogosultságokkal rendelkezik a szerveren), mivel a jelszó nincs megadva az /rp paraméter után - ezt kérik a rendszer létrehozásakor feladat. A /sc opció lehetővé teszi annak megadását, hogy a szkript mikor fusson, esetünkben amikor a számítógép be van kapcsolva. Nos, a / tn és / tr lehetővé teszi a feladat és a végrehajtható fájl nevének megadását.

Most, hogy a felhasználó jelezze a szkriptet, létrehozunk egy c:\commandShare mappát, és elérhetővé tesszük a hálózaton. Csak a parancsot futtató felhasználóknak kell írási hozzáféréssel rendelkezniük ehhez a mappához.

Ezt követően elég lesz a Run.cmd fájlt a felhasználó asztalára helyezni.

6. lista – Run.cmd (Windows Batch)

echo teszt > \\server\commandShare\trigger.txt

Amikor végrehajtja, a felhasználó nevében létrejön a \\server\commandShare\trigger.txt fájl. A Server.cmd szkript, miután észrevette, lefuttatja az Action.cmd fájlt a jogosultságaival, hozzáad egy bejegyzést a c:\scripts\log.txt fájlhoz az aktuális időpontról, majd törli a trigger.txt fájlt, hogy ne a parancs végrehajtásához a következő felhasználói jelig.

A Server.cmd parancsfájl a Sleep.exe segédprogramot használja a parancsfájl végrehajtásának szüneteltetésére egy másodpercben megadott időtartamra. Az operációs rendszer nem tartalmazza, de átvehető a Resource Kit Toolsból (lásd a hivatkozásokat), és egyszerűen átmásolható bármely számítógépre.

Hasznos

Úgy döntött, hogy megtanul egy idegen nyelvet? házi oktató angol nyelv segíteni fog ebben. Ott más felhasználókkal is gyakorolhat.

A rendszergazdák egyik legnépszerűbb feladata egy parancs futtatása egy távoli számítógépen anélkül, hogy elhagyná a helyét. Erre egy program vagy segédprogram telepítéséhez, bizonyos beállítások módosításához vagy bármi máshoz lehet szükség. És persze ritkán csak egy számítógépről van szó, gyakrabban kell végrehajtani a parancsot több munkaállomáson vagy szerveren.

Mivel ez a probléma népszerű, sokféleképpen lehet megoldani. Kezdve a csoportházirendekkel (amelyek bejelentkezési vagy indítási szkripteket használhatnak erre a célra), és az olyan hatékony felügyeleti rendszerekig, mint a System Center Essentials vagy a System Center Configuration Manager. Ebben a cikkben azonban olyan módszereket szeretnék megvizsgálni, amelyek azonnal elérhetők a parancssorból vagy a parancsfájl-fájlokból, és nem igényelnek ügynökök és egyéb felhajtások előzetes telepítését. Vannak azonban bizonyos előfeltételek. Például rendszergazdai jogosultságokkal kell rendelkeznie azon a számítógépen, amelyen a parancsot futtatni kívánja (kivéve a "proxy" forgatókönyvet, de erről később).

Psexec.exe

Az egyik kedvenc módja ennek a feladatnak a Mark Russinovich által írt PsExec.exe parancssori segédprogram, amelyet szabadon letölthet a Windows SysInternals webhelyéről. A cikk végén találsz rá egy linket. Nem igényel telepítést a rendszerre, egyszerűen átmásolhatja a %path% környezeti változóban található mappák egyikébe, és bármelyik parancssori shellből meghívhatja: Cmd vagy PowerShell.

A PsExec használata nagyon egyszerű. Például az ipconfig /flushdns fő gépen való futtatásához egyszerűen futtassa a következő parancsot:

psexec \\main ipconfig /flushdns

Az ipconfig parancs a fő számítógépen fog futni az Ön hitelesítő adataival. Amikor az ipconfig befejeződik, az összes szöveges kimenet a számítógépre kerül, valamint a parancs kilépési kódja (hibakód) visszaküldésre kerül. Ha a parancs sikeres volt, akkor 0 lesz.


Természetesen a PsExec lehetőségei ezzel nem értek véget. A segédprogram paraméterek nélküli meghívásával további elérhető lehetőségeket láthat. Ezek közül csak néhányra fogok összpontosítani.

Kulcs -d azt mondja a PsExec-nek, hogy nem kell várni a parancs végrehajtására, hanem csak futtasd és felejtsd el. Ebben az esetben nem kapunk kimeneti adatokat a konzol segédprogramtól, de másokat futtathatunk anélkül, hogy megvárnánk az előző parancs befejezését. Ez nagyon hasznos, ha például egy programtelepítőt több számítógépen kell futtatnia.

A PsExec alapértelmezés szerint lopakodó módban hajtja végre a parancsokat, vagyis nem jelennek meg ablakok vagy párbeszédablak azon a rendszeren, ahol a parancsot végrehajtják. Ez a viselkedés azonban megváltoztatható a gombbal -én. Utána megadható, hogy hány munkamenetben jelenjenek meg az ablakok, vagy nem adható meg, ekkor a felület megjelenik a konzol munkamenetben.

Így egy ablak megjelenítéséhez az operációs rendszer verziójával a fő számítógépen, futtassa a PsExec-et a következőképpen:

psexec -i \\main winver.exe

Ha egy parancsot egyszerre több számítógépen szeretne végrehajtani, akkor szüksége lesz a nevük kiolvasására egy listás szövegfájlból.

psexec @c:\comps.txt systeminfo.exe

Nos, a PsExec egyik leghasznosabb funkciója a bemenet/kimenet interaktív átirányítása a számítógépek között, ami lehetővé teszi például, hogy távoli szerveren futtassuk a cmd.exe fájlt, és parancsokat adjunk neki, és eredményeket kapjunk a helyi szerveren. számítógép.


Hogyan működik a Psexec?

Minden zseniális egyszerű. A PsExec.exe végrehajtható fájl erőforrásai közé tartozik egy másik végrehajtható fájl, a PSEXESVC, amely egy Windows szolgáltatás. A parancs végrehajtása előtt a PsExec kicsomagolja ezt az erőforrást a távoli számítógép egy rejtett adminisztratív megosztott mappájába, a következő fájlba: \\ComputerName\Admin$\system32\psexesvc.exe. Ha a -c kapcsolóval jelezte, hogy a végrehajtható fájlokat erre a rendszerre szeretné átmásolni, akkor azok is ebbe a mappába kerülnek.

Az előkészítő lépések befejezése után a PsExec telepíti és elindítja a szolgáltatást a Windows Service Management API-k segítségével. A PSEXESVC elindulása után több csatorna jön létre közte és a PsExec között az adatok (beviteli parancsok, eredmények stb.) átviteléhez. Ha elkészült, a PsExec leállítja a szolgáltatást, és eltávolítja a célszámítógépről.

Windows Management Instrumentation (WMI)

Ennek a népszerű feladatnak a megvalósításának következő módja, amelyről beszélni szeretnék, a Windows Management Instrumentation használata. A WMI a Windows 2000 óta minden Microsoft operációs rendszerben jelen van, sőt Windows 9x-re is külön csomagból telepíthető. A WMI alapértelmezés szerint engedélyezve van, és nem igényel további konfigurációt. Használatához elegendő adminisztrátori jogosultság, és a tűzfalon engedélyezett DCOM protokoll. A WMI rengeteg lehetőséget kínál a rendszerek kezelésére, de ezek közül jelenleg csak egy érdekel minket.

A folyamatok elindításához szükségünk van a Win32_Process osztály Create metódusára. Elég könnyű használni. A PowerShellben ez a következőképpen történik:

$Computer = "fő"
$Command = "cmd.exe /c systeminfo.exe >
("\\$Computer\root\cimv2:Win32_Process").create($Command)

Itt megadtam a cmd.exe fájlt indítandó folyamatként, és már átadtam neki argumentumként a szükséges parancsot. Erre akkor van szükség, ha a távoli számítógép környezeti változóit vagy beépített cmd.exe utasításokat kell használnia, például " > ' a kimenet fájlba való átirányításához. A Create metódus nem várja meg a folyamat befejeződését, és nem ad vissza eredményt, hanem elmondja nekünk az azonosítóját - ProcessID.

Ha olyan számítógépet használ, amelyen még nincs telepítve a PowerShell, akkor ezt a WMI-módszert VBScript-szkriptből is meghívhatja. Például így:

1. lista – Folyamat indítása WMI-vel (VBScript)

Számítógép = "PC3"
Parancs = "cmd.exe /c systeminfo.exe > \\server\share\%computername%.txt"
Set objWMIService = GetObject("winmgmts:\\" & Computer & "\root\cimv2:Win32_Process")
Eredmény = objWMIService.Create("calc.exe", Null, Null, intProcessID)

De sokkal egyszerűbb a wmic.exe parancssori segédprogram használata, amely meglehetősen kényelmes felületet biztosít a WMI-vel való munkavégzéshez, és a Windows XP-től kezdődő operációs rendszerekben megtalálható. Ebben például egy számológép futtatásához a fő számítógépen csak futtassa a következő parancsot:

wmic /node:fő folyamathívás Create calc.exe

Természetesen a WMI képességei nem korlátozódnak csupán a folyamatok elindítására. Ha többet szeretne megtudni erről a technológiáról, javasoljuk, hogy olvassa el Konstantin Leontiev WMI-ről szóló cikkeit, amelyekre mutató hivatkozásokat a cikk végén talál.

WSH Remote Scripting

Igen, furcsa módon a Windows Script Host képes szkriptek futtatására más számítógépeken is. Igaz, ez a funkció nem kapott nagy népszerűséget, és valószínűleg annak köszönhető, hogy túl sok előkészítő tevékenységet igényel, és cserébe nagyon kevés lehetőséget biztosít. De mindenképpen beszélek erről a módszerről, mert jól jöhet.

Tehát a szkript futtatásához egy másik számítógépen WSH használatával, a következőket kell tennünk:

    Rendszergazdai jogok a távoli számítógépen. Ez magától értetődő, és szinte minden más, ebben a cikkben felsorolt ​​indítási módhoz szükséges.

    Engedélyezze a WSH Remote Scriptinget úgy, hogy a rendszerleíró adatbázisban a HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings beállításkulcsban hozza létre az "1"-es Remote karakterlánc-paramétert.

    A Microsoft Tudásbázis 311269. számú cikkében leírt hiba miatt Windows XP rendszereken előfordulhat, hogy a wscript –regserver parancsot kell futtatnia.

    Ha tűzfalat használnak a számítógépeken, akkor annak lehetővé kell tennie a DCOM-hoz való hozzáférést. Sőt, ezt nem csak a felügyelt számítógépen kell megtenni, hanem azon is, amelyről a szkriptet futtatni kívánja.

    A Service Pack 2 vagy újabb szervizcsomaggal rendelkező Windows XP rendszereken módosítania kell a DCOM biztonsági beállításait. Ezt a csoportházirend segítségével lehet megtenni. A Számítógép konfigurációja \ Windows beállítások \ Biztonsági beállítások \ Helyi házirendek \ Biztonsági beállítások csomópontban állítsa be az engedélyeket az alábbiak szerint:

    1. DCOM: Machine Access Restrictions in Security Descriptor Definition Language (SDDL) szintaxis
      Adja meg a Névtelen bejelentkezés és a Mindenki csoport Helyi engedélyezése és Távoli elérés engedélyezése engedélyeket

      DCOM: Machine Launch Restrictions in Security Descriptor Definition Language (SDDL) szintaxis
      Engedélyek megadása a rendszergazdáknak: Helyi indítás engedélyezése, Távoli indítás engedélyezése, Helyi aktiválás engedélyezése, Távoli aktiválás engedélyezése
      Mindenki csoport – Helyi indítás engedélyezése, Helyi aktiválás engedélyezése

Nos, mindezen eljárások után megpróbálhatja futtatni a szkriptet egy másik számítógépen.

Egy példaszkript, amely ezt a technológiát használja:

2. lista – WSH távoli szkriptelés (VBScript)

Set objController = CreateObject("WshController")
Állítsa be az objRemoteScript = objController.CreateScript("C:\test.vbs", "PC5")WScript.ConnectObject objRemoteScript, "remote_"
objRemoteScript.Execute
Do While objRemoteScript.Status<> 1
WScript.Sleep 1000
hurok
MsgBox "Szkript kész"
Sub remote_Error
Dim objError
Állítsa be: objError = objRemoteScript.Error
WScript.Echo "Error - Line: " & objError.Line & _
", Char: " & objError.Character & vbCrLf & _
"Leírás: " & objError.Description
WScript kilépés -1
vége al

A második sorában a CreateScript függvény paramétereiként a távoli számítógépen végrehajtandó parancsfájl elérési útja és a számítógép tényleges neve látható.

Erről a technológiáról részletesebb cikk a cikkben található Speciális VBScript Microsoft Windows rendszergazdáknak – 6. fejezet: Távoli parancsfájlkezelés(lásd a linkeket).

Feladat ütemező

A Task Scheduler a parancssorból vezérelhető két segédprogrammal - at.exe és schtasks.exe. Mindkét segédprogram lehetővé teszi egy távoli számítógép nevének megadását a feladat létrehozásához, és így lehetővé teszi a probléma megoldását. De részletesen csak a schtasks.exe-t fogjuk figyelembe venni, mivel sokkal több funkciót kínál.

Bár a parancsok végrehajtása más számítógépeken nem az ütemező fő célja, ennek ellenére sok érdekes forgatókönyv megvalósítását teszi lehetővé. Használható például szoftvertelepítés engedélyezésére az ebédszünetben. Vagy ha a felhasználók különböző időpontokban ebédelnek, akkor a számítógép bizonyos idejű inaktivitása után elindíthatja.

schtasks /create /s server6.td.local /tn install /tr \\main\data\install.cmd /sc egyszer /st 13:00 /ru rendszer

Fontos megérteni, hogy a feladat melyik fiók nevében kerül végrehajtásra. Ebben a példában a /ru paramétert a rendszerváltozóhoz adtam meg, ezért a számítógépfiók telepítésének befejezéséhez olvasási hozzáférésre lesz szüksége a hálózati mappához a programterjesztési készlettel.

Egy másik hasznos megoldás szerintem az, ha beütemezünk néhány műveletet a napi végrehajtásra, és csak akkor töröljük a feladatot, ha megerősítik a sikert. Ez azt jelenti, hogy létrehozhat egy egyszerű kötegfájlt, amely először lefuttatja a program telepítőjét, megvárja, amíg befejeződik, és ellenőrzi, hogy a program telepítése sikeres-e. Ha igen, akkor eltávolítja a feladatot az ütemezőből az adott számítógépen. Példa egy ilyen fájlra:

3. lista – A program telepítése, majd a feladat törlése (Windows Batch)

msiexec /qn /package \\server\share\subinacl.msi
ha létezik "c:\program files\Windows Resource Kits\Tools\subinacl.exe" (
subinacl /tn Telepítés_Subinacl /f

WinRM (WS Management)

A WinRM a nyílt szabványú DMTF (Distributed Management Task Force) Microsoft általi megvalósítása, amely lehetővé teszi a rendszerek webszolgáltatások segítségével történő kezelését. Nem fogok belemenni a technológia eszközébe, csak röviden leírom, mi szükséges a használatához.

A WinRM 1-es és újabb verziója a Windows Vista és a Windows Server 2008 rendszerrel kezdődő operációs rendszerek része. Windows XP és Windows Server 2003 esetén a WinRM külön csomagként telepíthető (lásd a hivatkozásokat).

Ahhoz, hogy gyorsan beállíthassa a számítógépet a szabványos portokon keresztüli csatlakozáshoz, és lehetővé tegye az adminisztrátori fiókokhoz való csatlakozást, csak futtassa a parancsot:

winrm gyorskonfig

Ahhoz, hogy a winrm ne kérjen megerősítést, hozzáadhatja a -quiet kapcsolót a híváshoz. A finomhangolással kapcsolatos további információkért lásd a beépített winrm súgót:

winrm help config

Ha a felügyelt számítógépen webszerver fut, a WinRM semmilyen módon nem zavarja azt, annak ellenére, hogy alapértelmezés szerint szabványos HTTP-portokat használ. Csak a kifejezetten neki szánt kapcsolatokat fogja el.

Természetesen nem kell manuálisan futtatnia ezt a parancsot minden kezelni kívánt számítógépen. Az összes szükséges beállítás könnyen elvégezhető a csoportházirendekkel. Ehhez szüksége van:

  1. Állítsa be a WinRM (Windows Remote Management) szolgáltatást az automatikus indulásra
  2. Konfigurálja a Csoportházirend-elemet Számítógép konfigurációja \ Felügyeleti sablonok \ Windows-összetevők \ Windows távfelügyelet (WinRM) \ WinRM szolgáltatás \ Figyelők automatikus konfigurálásának engedélyezése. Itt meg kell adnia az IP-címek azon tartományait, amelyekről a kapcsolatok engedélyezettek.
  3. Természetesen a megfelelő portokon (alapértelmezés szerint 80) is engedélyeznie kell a kapcsolatokat a Windows tűzfalban.

Függetlenül attól, hogy HTTP (80) vagy HTTPS (443) portot használunk, a WinRM által továbbított forgalom titkosított (hacsak természetesen nem tiltja le ezt az opciót). Az alapértelmezett hitelesítési protokoll a Kerberos.

De elég a beállításokról, jobb, ha közvetlenül a használathoz megy. Bár a winrm segédprogram lehetővé teszi a WinRM szolgáltatás konfigurálását, valamint például WMI-lekérdezések végrehajtását, minket jobban érdekel egy másik - a winrs. Az RS betűk itt Remote Shell-t jelentenek. A WinRS nagyon hasonló a PsExechez, bár a WinRM technológiát használja. A számítógép nevét az -r kapcsolóval adjuk meg, majd a végrehajtandó parancsot. Íme néhány példa:

winrs -r:Core ver.exe

Mivel a winrs már használja a cmd.exe-t távoli shellként, könnyen elérheti a távoli környezeti változókat parancsokban, vagy használhat más beépített cmd.exe parancsokat:

winrs -r:Core "dir c:\temp > c:\temp\list.txt"

A PsExechez hasonlóan a winrs segédprogram is lehetővé teszi interaktív munkamenet megnyitását egy távoli számítógépen:

winrs -r:main cmd.exe

Ez a funkció hasonló a telnet munkamenethez, de biztonsági szempontból a winrs használata határozottan jobb, mint a telnet és még a PsExec is. Függetlenül attól, hogy HTTP (80) vagy HTTPS (443) portot használunk, a WinRM által továbbított forgalom titkosított (hacsak természetesen nem tiltja le ezt az opciót). Az alapértelmezett hitelesítési protokoll a Kerberos.

Windows PowerShell 2.0 távvezérlés

Bár a Windows PowerShell második verziója a cikk írásakor még béta tesztelés alatt áll, a távoli parancsvégrehajtás terén nyújtott képességeiről most mindenképpen érdemes beszélni. Kipróbálhatja saját maga az előnézeti verzió letöltésével (lásd a hivatkozásokat), vagy a Windows 7 vagy a Windows Server 2008 R2 béta verziójának részeként.

A PowerShell Remoting infrastruktúra a WinRM 2.0-s verzióján alapul, ezért örökli ennek a technológiának az összes előnyét, például a továbbított adatok titkosítását és a szabványos HTTP/HTTPS-portokon való működés képességét. De a Windows PowerShell nyelv gazdagságának és az objektumokkal való munkaképességének köszönhetően még több lehetőséghez jutunk. A WinRM2.0 jelenleg szintén bétaverzióban van, és csak Windows Vista és Windows 2008 rendszereken tölthető le. A PowerShell 2.0-hoz hasonlóan a Windows 7 és a Windows Server 2008R2 rendszerekbe is beépítik.

Frissítés: Mire a cikk megjelent az oldalon, a PowerShell 2.0 és a WinRM 2.0 végleges verziója már minden támogatott platformon elérhető. A Windows Server 2008R2-ben és a Windows 7-ben már a rendszer szerves részeként szerepelnek, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008 esetén pedig minden szükséges összetevő beszerezhető a Windows Management Framework nevű csomagként.

Mielőtt teljes mértékben kihasználná ezeket az előnyöket, a PowerShell Remoting szolgáltatást engedélyezni kell mind a kezelőn, mind a felügyelt számítógépeken. Ez egyszerűen megtehető az Enable-PSRemoting parancsmag (Windows PowerShell parancs) futtatásával. Ezen túlmenően, ha hozzáadja a -Force kulcsot, akkor a rendszer nem kér megerősítést. Ez a parancsmag szükség esetén meghívja a winrs quickconfig-ot, és kivételeket hoz létre a Windows tűzfalban, így nincs szükség további teendőkre.

Ezután könnyen végrehajthat parancsokat más számítógépeken az Invoke-Command parancsmag (vagy annak icm álneve) használatával:

Invoke-Command -ComputerName Main -ScriptBlock (netsh interfész dump > c:\ipconfig.txt)

Természetesen a parancs előre elhelyezhető egy változóban, és a -ComputerName paraméternél ne egy, hanem egyszerre több számítógép nevét adjuk meg. A következő sorrend lehetővé teszi, hogy egyszerre három számítógépről jelenítse meg az Explorer.exe fájl verzióját.

$Command = ((get-item c:\Windows\explorer.exe).VersionInfo.FileVersion)
Invoke-Command -ComputerName Main, Server7, Replika -ScriptBlock $Command


Amint látható, egyszerre több parancsot is átadhat egy blokkban, ezek végrehajtásának eredményeit több számítógépen egy változóban helyezheti el, majd a Windows PowerShell objektumkezelési képességeinek segítségével feldolgozhatja azokat a munkaállomáson.

A PowerShell Remoting lehetőségei azonban csak most kezdődnek. Az Enter-PSSession parancsmag segítségével interaktív Windows PowerShell-munkamenetbe léphet be egy távoli számítógépen. Kiléphet egy ilyen munkamenetből az Exit-PSSession parancsmag segítségével, vagy egyszerűen kiléphet.

A New-PSSession parancsmag munkameneteket hoz létre a távoli számítógépeken, amelyekre mutató mutatókat el lehet helyezni egy változóba, majd argumentumként átadja az Invoke-Command parancsnak, hogy egyszerre több számítógépen, állandó környezetben parancsokat hajtson végre. A képernyőképen láthat egy példát, ahol a c:\computers.txt listából egyszerre több számítógépen is végrehajtok egy parancssort.


Proxykezelés

Ez a módszer eltér a fentiektől, és teljesen más feladatokat szolgál, de nem kevésbé releváns. Ha a felhatalmazás átruházása nem lehetséges, vagy túl sok erőt biztosít, akkor lehetővé teszi a normál felhasználó számára, hogy végrehajtson bizonyos parancsokat, amelyek rendszergazdai jogosultságokat igényelnek anélkül, hogy bármilyen módon további jogosultságokat adnának, vagy veszélyeztetnék a rendszergazdai jelszót.

Leggyakrabban az emberek az ilyen problémákat olyan segédprogramokkal oldják meg, mint a cpau.exe (lásd a hivatkozásokat), amelyek titkosított rendszergazdai jelszóval hoznak létre egy fájlt, amely lehetővé teszi egy bizonyos program futtatását. A probléma azonban az, hogy bár a jelszó titkosítva van, a segédprogramnak vissza kell fejtenie azt a program futtatása előtt. Ennek megfelelően a felhasználó használhat egy segédprogramot, amely megismétli a jelszó visszafejtési algoritmusát, és kiderítheti azt, hogy aztán más programokat indítson el, vagy további jogosultságokat szerezzen. A gyakorlatban ez természetesen meglehetősen nehéz a hétköznapi felhasználók számára, akik nem rendelkeznek speciális ismeretekkel, de ennek ellenére teljesen lehetséges. Még egyszer tisztázom, hogy ez nem egy adott segédprogram problémája, hanem általában ennek a megközelítésnek a problémája.

Úgy is tűnhet, hogy a runas segédprogram /savecred opciója alkalmas a probléma megoldására. De itt még két probléma is van. Először is, mint a fent leírt esetben, a jelszó a felhasználó számítógépén tárolódik, és ezért visszafejthető, bár a runas esetében ehhez helyi rendszergazdai jogokra lesz szükség. Másodszor, a runas elmenti a hitelesítő adatokat anélkül, hogy egy adott parancshoz kapcsolná őket, és ezért a felhasználó nem csak azt a parancsot, amelyhez hozzáférést kívánt adni, emelt jogokkal futtathatja, hanem bármely más parancsot is.

Ezeknek a problémáknak a elkerülésére, de egy adott parancs futtatásának lehetővé tétele érdekében a „proxy-nak” nevezett technika használható.

A következőképpen működik. Egy magas jogosultságokkal rendelkező szkript folyamatosan fut a számítógépen. Például a mi esetünkben egy olyan fiókból indul el, amely rendszergazdai jogokkal rendelkezik a fájlszerveren. A felhasználó jelére egy előre meghatározott parancsot hajt végre. Ebben a példában zárja be a hálózaton keresztül megnyitott összes fájlt.

A rendszer rendszerezéséhez elhelyezzük a szerveren például a c:\scripts\ mappában a Server.cmd és az Action.cmd kötegfájlokat.

4. lista – Server.cmd (Windows köteg)

set trigger=c:\commandShare\trigger.txt
set action=c:\scripts\action.cmd
állítsa be a log=c:\scripts\log.txt fájlt
:Rajt
ha létezik %trigger% start %action% & echo %time% %date%>>%log% & del %trigger%
sleep.exe 5
kezdeni kell

5. lista – Action.cmd (Windows köteg)

for /f "skip=4 tokens=1" %%a in ('net files') do net files %%a /close
kijárat

A Server.cmd jelre vár a felhasználótól (egy adott helyen hozzon létre egy fájlt), és miután megkapta, futtassa a fájlt parancsokkal - Action.cmd. Természetesen a felhasználóknak nem szabad hozzáférniük ehhez a mappához. A Server.cmd automatikus indítása a számítógép indításakor egyszerűen létrehozható az ütemezőben:

schtasks /create /ru domain\administrator /rp /sc onstart /tn ProxyScript /tr c:\scripts\server.cmd

A /ru paraméter után megjelenik az a fiók, amelyen a szkript lefut (esetünkben rendszergazdai jogosultságokkal rendelkezik a szerveren), mivel a jelszó nincs megadva az /rp paraméter után - ezt kérik a rendszer létrehozásakor feladat. A /sc opció lehetővé teszi annak megadását, hogy a szkript mikor fusson, esetünkben amikor a számítógép be van kapcsolva. Nos, a / tn és / tr lehetővé teszi a feladat és a végrehajtható fájl nevének megadását.

Most, hogy a felhasználó jelezze a szkriptet, létrehozunk egy c:\commandShare mappát, és elérhetővé tesszük a hálózaton. Csak a parancsot futtató felhasználóknak kell írási hozzáféréssel rendelkezniük ehhez a mappához.

Ezt követően elég lesz a Run.cmd fájlt a felhasználó asztalára helyezni.

6. lista – Run.cmd (Windows Batch)

echo teszt > \\server\commandShare\trigger.txt

Amikor végrehajtja, a felhasználó nevében létrejön a \\server\commandShare\trigger.txt fájl. A Server.cmd szkript, miután észrevette, lefuttatja az Action.cmd fájlt a jogosultságaival, hozzáad egy bejegyzést a c:\scripts\log.txt fájlhoz az aktuális időpontról, majd törli a trigger.txt fájlt, hogy ne a parancs végrehajtásához a következő felhasználói jelig.

A Server.cmd parancsfájl a Sleep.exe segédprogramot használja a parancsfájl végrehajtásának szüneteltetésére egy másodpercben megadott időtartamra. Az operációs rendszer nem tartalmazza, de átvehető a Resource Kit Toolsból (lásd a hivatkozásokat), és egyszerűen átmásolható bármely számítógépre.

Valószínűleg ki szeretné használni a Windows Vista (Távoli asztal) eszközbe épített többmonitoros támogatást. Ez a funkció lehetővé teszi a távoli számítógép asztalának kiterjesztését a helyi rendszerhez csatlakoztatott összes monitorra.

Megtalálni azonban nem egyszerű – nem az eszköz grafikus felhasználói felületéről, hanem a parancssorból érhető el.

Korlátozások

A több monitor támogatása távoli asztalhoz való csatlakozáskor nagyon kényelmes funkció, de két korlátja van:

1. A rendszerhez csatlakoztatott összes monitornak azonos felbontásúnak kell lennie.

2. Az összes monitor képernyőfelbontása, beleértve a távoli rendszeren lévőket is, nem haladhatja meg a 4096 x 2048 pixelt.

Parancs sor

A többmonitoros Távoli asztali kapcsolat elindításához meg kell nyitnia egy parancssort, és be kell írnia a következő parancsot:


Ezt követően megnyílik a szabványos Távoli asztali kapcsolat párbeszédpanel, ahol konfigurálnia kell a kapcsolat beállításait (lásd A ábra).

A. ábra Távoli asztali kapcsolat indításakor a parancssorból a kapcsolat beállításait manuálisan kell megadni.

A kapcsolat létrejötte után a távoli rendszer asztala megjelenik a helyi rendszerhez csatlakoztatott összes monitoron. Ha helyi és távoli asztalra is szüksége van, az utóbbi méretét egy monitorra korlátozhatja, ha a távoli asztal ablakában a "Visszaállítás lefelé" gombra kattint. Ehhez billentyűparancsokat is használhat.

Miután a távoli asztal ablaka megjelenik a monitoron, az egérrel nyújtható, hogy kitöltse a teljes képernyőt. Ne feledje, hogy ha csökkenti a távoli asztal kifeszített ablakának méretét, akkor a vízszintes és függőleges görgetősávokat kell használnia a teljes képernyő megtekintéséhez, amint az az ábrán látható. B. De bármikor visszaállítható a Maximalizálás gombra kattintva.



B ábra Ha csökkenti a távoli asztal kifeszített ablakának méretét, a teljes képernyő megtekintéséhez a vízszintes és függőleges görgetősávokat kell használnia.

Hozzon létre egy parancsikont

Természetesen a Remote Desktop Connection parancssorból való minden alkalommal történő elindítása nem túl kényelmes. Ha már rendelkezik mentett RDP távoli asztali kapcsolat beállítási fájljával, létrehozhat egy szabványos Windows parancsikont a csatlakozáshoz ezzel a fájllal és a parancssori opciókkal.

Kattintson Jobb klikk vigye az egeret bárhová az asztalon, és válassza az Új | Parancsikon" (Új | Parancsikon). A varázsló Parancsikon létrehozása párbeszédpanelen írja be az mstsc /span parancsot és az RDP-fájl elérési útját az 1. ábrán látható módon. C. Ha a fájl címében szóköz van, feltétlenül tegye dupla idézőjelek közé. Most kattintson a "Next" (Következő) gombra, rendelje hozzá a parancsikont megfelelő név, például „Saturn – Connect. többel monitorok” és kattintson a „Befejezés” gombra.



C ábra Létrehozhat egy szabványos Windows parancsikont az RDP-fájl és a parancssori opciók használatával történő csatlakozáshoz.

Most ezzel a parancsikonnal csatlakozhat egy távoli számítógéphez az összes elérhető monitor használatával. Természetesen több ablak megnyitásakor a feszített asztal másképp fog viselkedni, mint amikor több monitorral dolgozik a helyi rendszeren - meg kell mutatnia a fantáziáját, és át kell méreteznie az ablakokat, hogy mindegyik kényelmesen elférjen a távoli asztalon.

Mit gondolsz?

Hány monitor csatlakozik a számítógéphez? Milyen gyakran használja a Távoli asztali kapcsolatot? Használni fogja a Vista Remote Desktop Connection többmonitoros támogatását? Oszd meg velünk véleményedet kommentben!