Hvis der var en kommando-linje værktøj, der kunne konkurrere med robocopy i form af nytten, det er PsExec. Den Sysinternals PSE .ec nytte er så allestedsnærværende som de kommer i en IT admin arsenal. Dette værktøj giver administratorer mulighed for eksternt at køre kommandoer, ligesom de var på den lokale computer.

for at dække PSE .ec-værktøjet i dybden var det passende at dække dette eftertragtede værktøj i en ATA Ultimate Guide. I denne vejledning lærer du, hvad PSE .ec er, hvad det er i stand til mange eksempler på, hvordan du bruger dette nyttige værktøj.,

Indholdsfortegnelse

Hvad er PSE .ec.e ?e?

Hvis du er ny til det eller måske ikke har haft behov for at køre kommandoer og værktøjer på eksterne computere, ved du muligvis ikke, hvad PSE .ec er.

PSE orec eller PSE .ec.e .e er et kommandolinjeværktøj bygget til Windowsindo .s. Det giver administratorer mulighed for at køre programmer på lokale og mere almindeligt fjerncomputere. Det er en gratis hjælpeprogram del af Sysinternals pstools suite bygget af Mark Russinovich mange år siden.,

det blev bygget til at erstatte værktøjer som telnet, der tvang dig til at åbne porte og introducere sikkerhedssårbarheder. I dag har vi andre muligheder, såsom PowerShell Remoting og Invoke-Command PowerShell-cmdlet men PsExec stadig har sin plads.

PSE .ec tillader fuld interaktivitet til konsolapplikation uden at skulle installere nogen soft .are. Som du kan se gennem denne ultimative Guide, kan PSE .ec starte interaktive kommandoprompter, køre som lokalt system på eksterne computere, køre kommandoer på flere computere på andn gang og mere.,

det understøtter alle versioner af Windowsindo .s siden Windowsindo .s .p. Det betyder, at ja, PSE .ec på Windowsindo .s 10 er også en ting. Det er et simpelt værktøj til at køre, der virker på næsten alt, men ikke forveksle sin enkelhed med sine evner!

forudsætninger

Du skal blot køre et moderne operatingindo .s-operativsystem for at PSE .ec kan køre på din lokale computer. Du vil dog gerne køre PSE .ec mod eksterne computere. For at gøre det skal du sikre dig, at et par ting er på plads.

Hvis du ikke har disse elementer på plads nu eller usikker, så fortvivl ikke., I det næste afsnit dækker vi hvordan man skriver nogle Po .ershell for at teste dine eksterne computere.

  • moderne Windows-computer (lokalt)
  • Fil-og printerdeling åbne (ekstern computer, TCP-port 445)
  • admin$ administrative dele til rådighed (remote computer)
  • Du ved en lokal konto legitimationsoplysninger (remote computer)

Som dette skrives, PsExec er på v2.2, og vil være den version, du vil lære om i denne artikel.,

installation af PSE .ec (med ekstern computeropsætning)

teknisk set installerer du ikke PSE .ec, da det kun er et kommandolinjeværktøj, men tæt nok. Da ingen installation er nødvendig, skal du blot do .nloade og udpakke den fra PsTools zipip-filen. Pse .ec er ikke tilgængelig som et selvstændigt værktøj og er en del af pstools suite af værktøjer.

Download PSExec

Du kan enten udpakke ZIP-filen manuelt eller her er en praktisk PowerShell-kodestykke at hente og udtrække PsExec fra sin pstools ZIP-fil. Bemærk, at dette fjerner alle de andre pstools værktøjer., Mange er stadig praktisk, men vi kommer ikke til at dække dem i denne artikel.

Fjerncomputerkonfiguration

Når du har do .nloadet PSE .ec, skal du sikre dig, at enhver fjerncomputer, du skal køre den på, er åben. Pse .ec har enkle krav; fil-og printerdeling aktiveret og admin$ administrative share tilgængelig.

Du kan gå til alle fjerncomputere, åbne appindo .s fire .all-appleten, gå til tilladte Apps og aktivere fil-og printerdeling på alle computere, som du ser nedenfor.,

Bemærk, at fil-og printerdeling er en kendt sikkerhedsrisiko, så sørg for, at kun den Private fire .all-profil er aktiveret.

at Tillade Fil-og printerdeling i Windows Firewall

Eller du kan besøge hver computer og køre netsh værktøj til at åbne den op via:

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

Eller du kan bruge PowerShell s Set-NetFirewallRule cmdlet til at gøre det.,

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

Hvis du hellere vil ikke besøge hver computer, du har PowerShell Remoting til rådighed, og du er i et Active Directory-domæne, kan du også åbne op for firewall ‘ en på mange computere på én gang ved brug af Invoke-Command cmdlet.

brug af PSE .ec

før du kan løbe, skal du gå. Hvis du aldrig har brugt PSE !ec før, er du klar til en godbid! Sørg for at læse dette afsnit først for at få dine fødder våde for at lære det grundlæggende, før du hopper i den dybe ende senere i denne artikel.,første gang du kører PSE .ec på et nyt system, vil du straks se PSE .ec-licensaftalen komme op. Du skal klikke på knappen ENIG for at begynde at bruge den.

PSExec license agreement (EULA)

Hvis du vil forhindre, at licensaftalen vises, kan du stille acceptere det ved brug af /accepteula skifter som vist nedenfor.,

> psexec /accepteula

Du lærer et par tricks til at dæmpe denne EULA-popup på lokale og eksterne computere senere i artiklen.

Find hjælp

Når du udforsker PSE .ec, skal du slet ikke bruge nogen s .itch. Når du blot kører PSE .ec uden S .itches, returnerer den alle muligheder og en kort forklaring af, hvad hver enkelt gør. Alle mulighederne er i nedenstående tabel for din bekvemmelighed.,

Kontakt Forklaring
en Separat processorer, som programmet kan køre med kommaer, hvor 1 er den laveste nummererede CPU. For at køre applikationen på CPU 2 og CPU 4 skal du for eksempel indtaste: “- a 2,4 ”
-C kopier det specificerede program til fjernsystemet til udførelse. Hvis du udelader denne mulighed, skal applikationen være i systemstien på fjernsystemet.,
-d vent ikke på, at processen afsluttes (ikke-interaktiv).
-e indlæser ikke den angivne kontos profil.
-f kopier det angivne program, selvom filen allerede findes på fjernsystemet.
-i Kør programmet, så det interagerer med skrivebordet for den angivne session på fjernsystemet. Hvis der ikke er angivet nogen session, kører processen i konsolsessionen. Nogle har rapporteret de bedste resultater altid ved hjælp af-S-kontakten med-i på grund af, at windowsindo .s er uforståelig.,
-h hvis målsystemet er Vista eller højere, har proc
-l Kør processen som begrænset bruger (strips administratorerne gruppen og tillader kun privilegier tildelt brugere gruppen). På processindo .s Vista kører processen med lav integritet.
-n angiver timeout i sekunder tilslutning til eksterne computere.
-p angiver valgfri adgangskode til brugernavn. Hvis du udelader dette, bliver du bedt om at indtaste en skjult adgangskode.,
-r angiver navnet på den fjerntjeneste, der skal oprettes eller interagere. med.
-s Kør fjernprocessen på systemkontoen.
-u angiver valgfrit brugernavn for login til computeren.
-V kopier kun den angivne fil, hvis den har et højere versionsnummer eller er nyere tændt end den på fjernsystemet.
-Set Indstil arbejdsmappen for processen (relativ
-. Vis brugergrænsefladen på secureinlogon secure desktop (kun lokalt system).,
-arm angiver, at fjerncomputeren har ARM-arkitektur.
-prioritet Angiver -lav, -belownormal, -abovenormal, -høj eller
-realtime køre processen på en anden prioritet. Brug
-baggrund Kør ved lav hukommelse og I / O-prioritet på Vista.
computer direkte PSE .ec for at køre programmet på den angivne computer eller computere., Hvis du udelader navnet på computeren PsExec kører programmet på det lokale system, og hvis du angiver et wildcard (\*), PsExec kører
@fil PsExec vil udføre kommandoen på hver af de computere, der er anført i filen.
-accepteula dette flag undertrykker visningen af licensdialogen.
-nobanner Vis ikke meddelelsen startup banner og copyright.,

at Køre en Simpel Ekstern Kommando

På det mest grundlæggende, PsExec kræver to parametre: et computernavn og en kommando til at køre. Hvis du har en kommando til at køre på fjerncomputeren, der ikke kræver nogen argumenter som hostname, kan du blot tilføje den efter computernavnet.

Bemærk, at hvis du ikke angiver en fuld filsti, skal kommandoen, der skal køres, være i bruger-eller systemstien., Hvis du også har et program med mellemrum i navnet, kan du altid vedlægge programmet i mellemrum som “min ansøgning.e “e”.

> psexec \\REMOTECOMPUTER hostname

Du kan se nedenfor for at udføre kommandoen hostname på CONTOSODC1-computeren definerer du dens UNC-sti efterfulgt af kommandoen. Pse .ec vil derefter oprette forbindelse til fjerncomputeren sikkert, udføre kommandoen og returnere output. I dette tilfælde returnerede kommandoen hostname værtsnavnet på den computer, der er CONTOSODC1.,

Hvis kommandoen ikke er cmd eller en anden konsol, vil PSE .ec hurtigt afslutte fjernsessionen og returnere e .it-koden, som fjernprocessen returnerede.

Bemærk: fejlen eller e .it-koden, der returneres fra PSE .ec, kommer ikke fra PSE .ec selv. I stedet kommer det fra kommandoen, som pse .ec udførte på fjerncomputeren.,

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.,

når processen ikke fungerer 100% korrekt, skal du muligvis manuelt fjerne tjenesten ved hjælp af SC-kommandoen.

kørsel af en simpel lokal kommando

selvom PSE .ec er bedst kendt for at køre kommandoer på eksterne computere, kan du også køre kommandoer lokalt.

Du kan køre kommandoer lokalt ved blot ikke at give et computernavn som nedenfor.

> psexec <local command or EXE file>

hvorfor ville du gøre dette? En af grundene ville være at udføre kommandoer som den lokale systemkonto., Du kan bruge-s s switchitch til at køre enhver kommando som SYSTEM lokalt eller eksternt, som du vil lære mere om senere.

Tag et kig på den korte video nedenfor. Bemærk, at du simpelthen nødt til at give -s skift sammen med kommandoen tolk eksekverbare for psexec at lancere en ny kommando session som NT AUTHORITY\SYSTEM.,

Kører Psexec som SYSTEM

PsExec Kommandoer (Få Mere Avancerede)

Når du har fået de grundlæggende ned, derefter kan du begynde at lære mere avancerede teknikker i psexec. Pse .ec kan gøre meget mere end bare at køre en enkelt kommando på en enkelt computer.

kørsel af kommandoer på flere computere

PSE .ec er ikke kun begrænset til at køre kommandoer på en fjerncomputer ad gangen., Dette værktøj har også støtte til at kopiere programmer og køre kommandoer på flere computere på .n gang.

Du kan køre PSE .ec på flere computere på fewn gang et par forskellige måder.

kommaseparerede computernavne

typisk, når du kører en kommando på en enkelt fjerncomputer, angiver du et enkelt computernavn som\\REMOTECOMPUTER. Du kan også angive flere computere adskilt af kommaer som nedenfor.,

> psexec \\REMOTECOMPUTER1,REMOTECOMPUTER2,REMOTECOMPUTER3

Alle Computere i et Active Directory-Domæne

Hvis du kører PsExec på et Active Directory-domæne-tilsluttet computeren, og at du ønsker at sprænge ud af en kommando udførelse på alle computere på domænet, skal du bruge jokertegn.

PSE .ec vil søge i hele Active Directory-domænet og forsøge at køre en kommando på alle computere. Nedenfor er Eksempel syntaks om, hvordan PSE .ec vil forsøge at oprette forbindelse til hver computer på domænet den eksekverende computer er en del af og køre hostname kommando.,

Bemærk, at hvis du kan bruge en stjerne til at finde alle computere i et domæne, mens den lokale computer er en del af en arbejdsgruppe, vil du modtage fejl A system error has occurred: 6118.

ved Hjælp af en wildcard styrker PsExec hovedsagelig køre kommandoen net view /all først at finde alle computerne i domænet. Dette er en forældet måde at finde computeroplysninger på grund af dens afhængighed af NetBIOS.

læsning fra en fil

en anden måde, du kan køre kommandoer på flere computere på ATN gang, er at bruge en tekstfil., Ved hjælp af syntaksen @<filename.txt> læser PSE .ec hver linje i tekstfilen, som om det var et computernavn. Det vil derefter behandle hver computer individuelt.

Nedenfor kan du se et eksempel på brug PowerShell til at oprette en tekstfil på linje-afgrænset computeren navne, og bruge det som input til psexec.

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

Kopiering af lokale programmer til fjerncomputeren

ved Brug af -c switch, psexec vil kopiere et lokalt program til remote computer, før udførelse.,

måske har du en e Perhapse på din lokale computer i en C:\Tools mappe og vil gerne køre det på en fjerncomputer. Du kan gøre det ved hjælp af følgende syntaks:

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

Når du bruger -c switch og ikke angive en eksekverbar fil, PsExec stadig vil kopiere en fil, men du vil modtage en fejlmeddelelse om systemet kan ikke finde den angivne fil. Dette sker, fordi PSE .ec altid vil forsøge at køre den fil, du kopierer.,

Hvis du har brug for at kopiere filer til en ekstern computer, før du bruger PsExec, skal du bruge Copy-Item PowerShell-cmdlet i stedet.

kørsel af Fjernprocesser under alternative legitimationsoplysninger

et andet populært brugstilfælde af PSE .ec er at køre kommandoer under alternative konti. Som standard vil PSE .ec forsøge at oprette forbindelse til fjerncomputeren under din aktuelt loggede konto. Mere specifikt vil det efterligne din konto på fjerncomputeren.,

ved Brug af -u og valgfri -p switch giver dig mulighed for at oprette forbindelse til fjerncomputeren, med en anden brugerkonto. Pse .ec krypterer derefter både brugernavn og adgangskode og sender dem til fjerncomputeren til godkendelse.hvis du f.eks. er i en arbejdsgruppe, skal du altid angive det brugernavn, der skal autentificeres til fjerncomputeren som.

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

Hvis begge computere er medlem af Active Directory, skal du sørge for at indlede brugerkontoen med domænenavnet.,

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

Bemærk, at når du ikke bruger knappen -u, efterligner PSE .ec din loggede konto på fjerncomputeren. Det vil ikke have adgang til nogen netværksressourcer.

Kørende Processer, som det LOKALE SYSTEM-Konto

En af de mest nyttige funktioner i kører PsExec i henhold til en alternativ konto, er ved at bruge -s telefonskift. Denne s .itch gør det muligt for PSE .ec (og din eksternt udførte applikation) at køre under den eksterne (eller lokale) computers lokale systemkonto.,Bemærk nedenfor, at jeg ikke inkluderede et fjerncomputernavn. Pse .ec vil lige så gerne køre på den lokale computer også. I dette tilfælde bruger jeg -s mulighed for at fortælle PSE .ec at starte en lokal kommandoprompt som den lokale systemkonto.,

Kører psexec som LOCAL SYSTEM

for At køre en kommandoprompt som LOCAL SYSTEM på en fjerncomputer, skal du tilføje navnet på computeren, til den reference som nedenfor:

> psexec -s \\REMOTECOMPUTER cmd

Lancering af GUI Applikationer Eksternt

en Anden nyttig PsExec skifte er -i. Som standard tillader PSE .ec ikke den eksternt udførte kommando at hente nogen windowsindo .s på fjerncomputeren., Dette er nyttigt, fordi hvis du udfører kommandoer eksternt, vil du alligevel ikke se skærmen.

men måske skal du hente programmer til dine brugere. Du personligt vil ikke bruge programmet, men en slutbruger vil. I dette tilfælde skal du bruge knappen -i.

måske skal du hente et notepad-vindue på en fjerncomputer. Intet problem. Kør notesblok.e .e med -i s .itch og PSE .ec åbner Notepad.,

> psexec -i \\REMOTECOMPUTER notepad
Kører psexec i interaktiv tilstand

Vær sikker på, at også bruge -d – kontakten for at afbryde forbindelsen, når den interaktive vinduer er bragt op selv. Som standard venter PSE .ec på, at den proces, den blev udført, er afsluttet. Hvis fjernprocessen (Notesblok i dette tilfælde) holdes i gang, vil PSE .ec aldrig returnere kontrollen.,

brug af-d skift med-i vil fortælle PSE .ec at ikke vente på, at fjernprocessen er færdig. I stedet vil den afbryde forbindelsen og returnere kontrollen til dig, så snart fjernprocessen udføres.

omdirigering af Output

PSE .ec vil stole på ethvert output, der sendes fra fjernprocessen til din lokale session. Denne udgang går typisk direkte til din lokale konsol. Men hvis du gerne vil omdirigere det, kan du gøre det ved hjælp af typiske omdirigeringsoperatører.,hvis du f.eks. vil køre en kommando og lukke al output for tavshed, kan du omdirigere output og fejl til null ved hjælp af ^> nul ^2^&1.

Bemærk de specialtegn er undsluppet med en hat. ( ^).

PsExec Use Cases

Når du har lært at bruge psexec, vil du uundgåeligt komme på tværs af forskellige specifikke use cases. I dette afsnit lærer du nogle virkelige brugssager og eksempler ved hjælp af PSE .ec.,

lancering af en ekstern Kommandoprompt (pse .ec cmd)

et af de mest almindelige brugssager er lancering af PSE .ec som en interaktiv kommandoprompt. Pse .ec kører ikke bare kommandoer eksternt. Det kan også sende kommando output tilbage til din konsol. På grund af dette kan det gøre et godt telnet (hvis nogen stadig bruger det) eller måske Po .ershell Enter-PSSession udskiftning.

for at starte en fjernkommando skal du angive fjerncomputernavnet og køre cmd-applikationen. Cmd er commandindo .s-kommandotolken., Da PSE .ec understøtter interaktiv brug, returnerer den gerne en blinkende markør og en prompt.

> psexec \\REMOTEPC cmd
Åbne en kommandoprompt på en ekstern computer

På dette punkt, verden er din østers. Du kan køre kommandoer på din lokale computer via denne “indlejrede” kommandoprompt, og de udføres på fjerncomputeren.

for at afslutte kommandoprompten skal du skrive exit., PSE .ec stopper cmd processen på fjerncomputeren og returnerer fokus til den lokale computer.

Brug ikke Ctrl-C til at lukke en interaktiv cmd-session ud. Brug altid exit. Hvis du bruger Ctrl-C, forbliver PSE .ec-sessionen kørende på fjerncomputeren.

Installation af Software Fjernadgang

Du kan bruge PsExec som en fattig-mands-software deployment værktøj. Måske har du et MSI-installationsprogram, som du skal køre på en eller flere eksterne computere kaldet setup.msi., Dette installationsprogram skal kopieres til de eksterne computere og derefter udføres med MSIE .ec.e .e hjælpeprogram med et par afbrydere.

nedenfor er et eksempel på, hvordan du kan bruge PSE .ec til eksternt at installere soft .are. Dette eksempel kopierer opsætning.msi til fjerncomputeren starter derefter MSI-installationsprogrammet interaktivt som systemkonto.

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

accept af EULA uden/accepteula-kontakten

som tidligere nævnt skal du acceptere en EULA første gang PSE .ec kører., Du kan bruge /accepteula s .itch, men du kan også “stage” det i registreringsdatabasen.når PSE .ec lanceres for første gang, opretter PSE .ec en registreringsdatabasenøgle på HKCU\Soft .are\Sysinternals\pse .ec. I stedet for denne registreringsdatabasenøgle opretter den en registreringsværdi kaldet EulaAccepted med en d .ord-værdi på 1.brug din yndlingsmetode til at ændre registreringsdatabasen på eksterne computere, skal du blot oprette denne nøgle/værdi på computere, du gerne vil køre pse .ec på. Når den er oprettet, behøver du ikke at køre /accepteula!,

Gifte sig med PowerShell og PsExec

Før PowerShell, alle, vi havde, var PsExec. Nu har vi muligheder. Po .ershell kan erstatte PSE .ec i mange situationer, men supplere det i andre.

Opbygning af Edb-Navne med PowerShell

i Stedet for \\* for at finde alle computere på domænet, kan du bruge PowerShell i stedet. Ved hjælp af PowerShell, kan du ikke kun vælge visse computere, men du behøver ikke at bruge firewall-tilbøjelige net view /all adfærd.,

Du kan bruge Po .ershell til at oprette en streng, der indeholder alle computernavne adskilt af et komma. Du kan derefter videregive den streng til PSE .ec, som lystigt behandler hver enkelt, som om du har skrevet hver enkelt manuelt.

Du kan se nedenfor et eksempel på at bruge Get-AdComputer cmdlet-delen af ActiveDirectory Po .ershell-modulet.

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

Aktivering af PowerShell Remoting Eksternt

Hvis du har eksterne computere du hellere vil bruge PowerShell Remoting med i stedet for PsExec, kan du bruge PsExec for at aktivere dem.,

Ved at køre Enable-PSRemoting eller winrm.cmd batchfil på eksterne computere, kan du hurtigt tænde Po .ershell Remoting på tværs af mange computere på .n gang.

nedenfor kan du se et eksempel på at kalde wininrm.cmd batchfil på en fjerncomputer, der kører som systemkonto. Fordi output fra denne kommando ikke er nødvendig, er den tavs med 2>&1> $null.

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

PsExec fejlmeddelelser

Det er værd at nævne igen, på forhånd, at de fleste fejl koder, du ser vendte tilbage fra PsExec er fra den eksterne proces; ikke fra PsExec., Men det er nyttigt at have en forståelse af disse fejlkoder og hvad de kan betyde.

Hvis du gerne vil have en reference på alle errorindo .s-fejlkoder, anbefaler jeg at tjekke denne udtømmende liste over errorindo .s-fejlkoder.

nedenfor er en liste over almindelige fejlkoder, som du muligvis ser returneret af PSE .ec.

Fejl-Kode Forklaring
-2146232576 Typisk returneres via Windows Update, når der opstår en fejl.,
0 kommando udført med succes
1 forkert funktion. Der er sket et problem. Det er det hele.
1603 Fatal fejl under installationen. Dette returneres typisk af MSIE .ec.
2 systemet kan ikke finde den angivne fil
4 systemet ikke kan åbne filen.
5 adgang nægtes.
6 håndtaget er ugyldigt.,
6118 listen af servere for denne arbejdsgruppe er i øjeblikket ikke tilgængelig

Din Feedback