PsExec är ett bärbart verktyg från Microsoft som låter dig köra processer på distans med hjälp av alla användares referenser. Det är lite som ett fjärråtkomstprogram men istället för att styra datorn med en mus skickas kommandon via kommandotolken.
Du kan använda PsExec för att inte bara hantera processer på fjärrdatorn utan också omdirigera ett programs konsolutgång till din lokala dator, så att det ser ut som om processen körs lok alt.
Ingen programvara behövs på fjärrdatorn för att få PsExec att fungera, men det finns några saker att tänka på om verktyget inte fungerar korrekt första gången du provar det.
Hur man ställer in PsExec
Om PsExec är portabel och inte behöver kopieras till fjärrdatorn, vilken typ av installation behöver den egentligen?
Verktyget fungerar endast under vissa förhållanden. Nämligen när fil- och skrivardelning är aktiverat på både den lokala och fjärrdatorn, och när fjärrdatorn har $admin-resursen korrekt inställd för att ge åtkomst till dess \Windows\-mapp.
Du kan dubbelkontrollera att fil- och utskriftsdelning är aktiverat genom att titta i inställningarna för Windows-brandväggen:
-
Ange firewall.cpl i dialogrutan Kör. Ett sätt att öppna Run är genom WIN+R kortkommando.
-
Välj Tillåt en app eller funktion genom Windows-brandväggen från vänster sida av fönstret.
Detta kan läsas som Tillåt en app eller funktion via Windows Defender-brandväggen beroende på hur din dator är konfigurerad, men det är samma alternativ.
-
Se till att Fil- och skrivardelning har en bock i rutan Privat till höger. Om den inte gör det, markera den rutan och välj OK.
Om du inte kan ändra brandväggsinställningarna eftersom de är nedtonade, välj Ändra inställningar längst upp i fönstret.
- Du kan nu avsluta alla öppna Windows-brandväggsinställningar.
Med Windows-brandväggen nu korrekt inställd för PsExec, bör du inte ha några problem med att komma åt $admin-resursen på fjärrdatorn så länge som följande är sant:
- Båda datorerna tillhör samma arbetsgrupp
- Du känner till lösenordet till ett administratörskonto på fjärrdatorn
Se den här handledningen på Wintips.org om du behöver hjälp med att göra dessa saker eller om du har gjort dem korrekt, men senare, efter att ha försökt använda PsExec enligt beskrivningen nedan, får du ett felmeddelande om "access denied".
Hur man använder PsExec
Innan du använder PsExec för att utföra fjärrkommandon måste du ladda ner programmet och placera kommandotolken på ett sätt där du kan använda verktyget korrekt.
Ladda ner och öppna det
- Ladda ner PsExec på datorn som kommer att köra fjärrkommandona. Den är tillgänglig gratis från Microsoft på Sysinternals som en del av PsTools.
-
Extrahera filerna från nedladdningen av PsTools.zip. Du kan göra det genom att högerklicka på ZIP-filen och välja Extrahera alla. Alla filextraherare från tredje part fungerar också.
-
Öppna mappen där de extraherade filerna finns och från navigeringsfältet högst upp i mappen, radera det som finns där och ange cmd.
Ett annat sätt att göra detta, åtminstone i vissa versioner av Windows, är att Shift+Högerklicka ett tomt utrymme i mappen PsTools och välja Open kommandofönster här.
Detta öppnar kommandotolken i den mappen så att du kan köra kommandon genom PsExec.
- Med kommandotolken nu öppen för mappen som innehåller PsExec.exe kan du börja ange kommandon på fjärrdatorn.
Förstå syntaxen
Precis som alla kommandoradsverktyg fungerar PsExec endast när dess syntax följs exakt. När du förstår hur man skriver kommandon på det sätt som verktyget förstår dem kan du styra programmet från vilken kommandotolk som helst.
Så här måste PsExec-kommandon anges:
psexec [ dator [, dator2 [, …] | @file\][- u användarnamn [- p lösenord][- n s][- r tjänstnamn][- h][- l][- s |- e][- x][- i[session][-c körbar [-f |-v ][-w katalog][- d][- ][- a n, n
Det här kan se komplicerat och förvirrande ut men oroa dig inte! Det finns några exempel längst ner på den här sidan som du kan använda för att öva.
Ovanstående syntax används för att köra något av följande PsExec-kommandoargument:
PsExec-kommando alternativ | |
---|---|
Parameter | Förklaring |
- a | Separata processorer som programmet kan köras på, med kommatecken, där 1 är den lägsta numrerade CPU:n. Till exempel, för att köra programmet på CPU 2 och CPU 4, anger du: - a 2, 4 |
- c | Kopiera den angivna körbara filen till fjärrsystemet för exekvering. Om den utelämnas måste applikationen finnas i systemsökvägen på fjärrsystemet. |
- d | Vänta inte på att processen ska avslutas (icke-interaktiv). |
- e | Läser inte in det angivna kontots profil. |
- f | Kopiera det angivna programmet även om filen redan finns på fjärrsystemet. |
- i | Kör programmet så att det interagerar med skrivbordet för den angivna sessionen på fjärrsystemet. Om ingen session anges körs processen i konsolsessionen. |
- h | Om målsystemet är Windows Vista eller högre, kör processen med kontots förhöjda token, om tillgängligt. |
- l | Kör processen som en begränsad användare (tar bort administratörsgruppen och tillåter endast privilegier som tilldelats användargruppen). I Windows Vista körs processen med låg integritet. |
- n | Anger timeout (i sekunder) för anslutning till fjärrdatorer. |
- p | Anger valfritt lösenord för användarnamnet. Om det utelämnas kommer du att bli ombedd att ange ett dolt lösenord. |
- r | Anger namnet på fjärrtjänsten att skapa eller interagera med. |
- s | Kör fjärrprocessen i systemkontot. |
- u | Anger valfritt användarnamn för inloggning på fjärrdator. |
- v | Kopierar den angivna filen endast om den har ett högre versionsnummer eller är nyare än den på fjärrsystemet. |
- w | Ställer in arbetskatalogen för processen (i förhållande till fjärrdatorn). |
- x | Visar användargränssnittet på Winlogons säkra skrivbord (endast lok alt system). |
- priority | Specifierar -låg, -undernormal, -övernormal, -hög eller -re altid för att köra processen med en annan prioritet. Använd -bakgrund för att köra med lågt minne och I/O-prioritet på Windows Vista. |
dator | Anvisar PsExec att köra programmet på den eller de angivna fjärrdatorerna. Om det utelämnas, kör PsExec programmet på det lokala systemet, och om ett jokertecken () anges, kör PsExec kommandot på alla datorer i den aktuella domänen. |
@file | PsExec kommer att köra kommandot på var och en av datorerna som anges i filen. |
cmd | Namn på applikation som ska köras. |
argument | Argument att skicka (observera att filsökvägar måste vara absoluta sökvägar på målsystemet). |
PsExec kommandoexempel
Här är några exempel på hur man använder PsExec för att göra saker som att köra fjärrkommandon, hantera Windows-tjänster och starta eller installera program.
Öppna CMD på distans
psexec \\192.168.86.62 cmd
Ett av de enklaste sätten att använda PsExec för att köra kommandotolken på en fjärrdator är att köra cmd efter maskinens IP-adress, 192.168.86.62 i det här exemplet.
Om du gör detta öppnas ett vanligt kommandotolkfönster i det befintliga, och låter dig ange varje kommando som om du satt framför fjärrdatorn. Till exempel kan du sedan ange ipconfig för att få dessa resultat från den andra datorn, eller mkdir för att skapa en ny mapp, dir för att lista mappens innehåll, etc.
Kör ett fjärrkommando
psexec \\mediaserver01 tracert lifewire.com
Ett annat sätt att använda PsExec är att ange individuella kommandon men utan att starta en fullständig kommandotolk. I det här exemplet kör vi kommandot tracert mot lifewire.com, och eftersom vi har angett fjärrdatorns namn, mediaserver01, är kommandoresultaten relevanta för den maskinen, inte den lokala (dvs. den du är på).
Starta en tjänst på distans
psexec \\FRONTDESK_PC -u tomd -p 3(tom87 net start spooler
PsExec-kommandoexemplet som visas ovan startar Print Spooler-tjänsten, spooler, på distans på FRONTDESK_PC-datorn med hjälp av tomd-användarens lösenord, 3(tom87.
Samma kommando kan användas för att stoppa en tjänst på distans, men du skulle skriva "stop" istället för "start."
Öppna registerredigeraren
psexec \\mikelaptopw10 -i -s C:\Windows\regedit.exe
Här använder vi PsExec för att starta Registereditorn på fjärrmaskinen, mikelaptopw10, i systemkontot. Eftersom -i används kommer programmet att öppnas i interaktivt läge, vilket betyder att det faktiskt startar på fjärrmaskinens skärm.
Om -i utelämnades från kommandot ovan, skulle det köras i dolt läge för att undvika att visa några dialogrutor eller andra fönster.
Installera program på fjärrdator
psexec \\J3BCD011 -c "Z:\files\ccleaner.exe" cmd /S
I det här sista exemplet på hur man använder PsExec, använder vi -c för att kopiera programmet ccleaner.exe till fjärrdatorn J3BCD011 och sedan köra det med /S-parameter eftersom det är vad CCleaner använder för att möjliggöra en tyst installation (kräver ingen användarinmatning). Att lägga till ett sådant argument kräver cmd.
PsExec kan vara farligt
Det är mycket viktigt att förstå hur kraftfullt PsExec är och hur det kan användas för att äventyra din dator när den används i en annars osäker miljö.
Om du till exempel kombinerar - c, - u och - p, låt alla som har en nätverksanslutning till din dator och kunskap om administratörsuppgifterna köra hemlig skadlig programvara med någons autentiseringsuppgifter.
Även det sista, helt acceptabla exemplet i föregående avsnitt får ett helt nytt syfte när du tänker på att istället för CCleaner kan någon installera vad som helst annat de önskar, i bakgrunden, och inga fönster dyker upp som visar att allt händer.
Allt som sagt, med tanke på de brandväggsändringar som krävs och administratörsuppgifter någon skulle behöva ha, finns det ingen anledning att oroa sig så länge administratörslösenordet på fjärrdatorn är komplext och andra grundläggande säkerhetsåtgärder har vidtagits.
Vissa antivirusprogram identifierar felaktigt PsExec som en farlig fil, men dessa varningar kan ignoreras om du säkert vet att programmet du använder kommer från Microsoft-källan ovan. Anledningen till att detta händer är att skadlig programvara har varit känd för att använda PsExec för att överföra virus.