Hvis det var et kommandolinjeverktøy som kan konkurrere med robocopy i forhold til nytten, det er PsExec. Den Sysinternals PsExec verktøyet er så allestedsnærværende som de kommer i en IT-admin arsenal. Dette verktøyet gjør det mulig for administratorer å kjøre eksterne kommandoer på samme måte som om de var på din lokale datamaskin.

for Å dekke PsExec verktøy i dybden, det var passende å dekke denne ettertraktede verktøy i en ATA Ultimate Guide. I denne guiden, vil du lære hva psexec er, hva det er i stand til noen av mange eksempler på hvordan du kan bruke dette nyttige verktøyet.,

Innholdsfortegnelse

Hva er PsExec.exe?

Hvis du er ny til DET, eller kanskje ikke har hatt behov for å kjøre kommandoer og verktøy på eksterne datamaskiner, har du kanskje ikke vet hva psexec er.

PsExec eller psexec.exe-er et kommandolinje-verktøy som er bygget for Windows. Det gjør det mulig for administratorer å kjøre programmer på lokale og mer vanlig eksterne datamaskiner. Det er et gratis verktøy en del av Sysinternals pstools suite bygget av Mark Russinovich for mange år siden.,

Det ble bygget for å erstatte verktøy som telnet som tvang deg til å åpne opp portene og introdusere sikkerhetsproblemer. I dag, vi har andre alternativer som PowerShell Remoting og Invoke-Command PowerShell-cmdlet men PsExec fortsatt har sin plass.

PsExec gir full interaktivitet for konsoll-programmet uten å måtte installere noe programvare. Som du vil se gjennom denne Ultimate Guide, PsExec kan starte interaktive kommandoen ber, kjør som lokale system på eksterne datamaskiner, kjøre kommandoer på flere datamaskiner samtidig, og mer.,

Den støtter alle versjoner av Windows siden Windows XP. Det betyr, at ja, PsExec på Windows-10 er en ting også. Det er et enkelt verktøy for å kjøre som fungerer på nesten alt, men du må ikke forveksle sin enkelhet med sine evner!

Forutsetninger

Du trenger bare å kjøre en moderne Windows-operativsystemet for PsExec å kjøre på din lokale datamaskin. Imidlertid, du kommer til å ønske å kjøre psexec mot eksterne datamaskiner. For å gjøre det, vil du trenger for å sikre et par elementer er på plass.

Hvis du ikke har disse elementene på plass nå eller usikker, ikke bekymre deg., I neste avsnitt vil vi dekke hvordan du skal skrive noen PowerShell til å teste dine eksterne datamaskiner.

  • En moderne Windows-datamaskin (lokale)
  • Fil-og skriverdeling åpne (ekstern datamaskin, TCP-port 445)
  • admin – $ administrative dele tilgjengelig (ekstern datamaskin)
  • Du vet en lokal konto, credential (ekstern datamaskin)

når dette skrives, PsExec er på v2.2, og vil være den versjonen som du vil lære om i denne artikkelen.,

Installere PSexec (Med Ekstern Datamaskin Oppsett)

Teknisk, trenger du ikke installere PsExec siden det er bare et kommandolinje-verktøy, men nær nok. Siden ingen installasjon er nødvendig, du trenger bare å laste ned og pakk den ut fra PsTools zip-fil. PsExec er ikke tilgjengelig som et frittstående verktøy, og er en del av PsTools suite av verktøy.

laster Ned PSExec

Du kan enten pakk ut ZIP-filen manuelt eller her er en hendig PowerShell kodebiten å laste ned og pakke ut PsExec fra sin pstools ZIP-fil. Merk at dette fjerner alle de andre PsTools verktøy., Mange er fortsatt praktisk, men vi kommer ikke til å dekke dem i denne artikkelen.

Ekstern pc-Konfigurasjon

Når du har PsExec lastet ned, vil du trenger for å sikre en hvilken som helst ekstern datamaskin du kommer til å kjøre det på er åpne. PsExec har enkle krav; Fil-og skriverdeling aktivert og admin$ administrative dele tilgjengelig.

Du kan gå til alle de eksterne datamaskiner, åpne Windows-Brannmur applet, kan du gå til Lov Apps og aktivere Fil-og skriverdeling på alle datamaskiner som du ser nedenfor.,

Merk at Fil-og skriverdeling er en kjent sikkerhetsrisiko så sikre at bare den Private brannmur-profilen er aktivert.

Slik at Fil-og skriverdeling i Windows-Brannmur

Eller du kan besøke hver enkelt datamaskin, og kjør kommandoen netsh-verktøyet til å åpne den opp via:

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

Eller du kan bruke PowerShell ‘ s Set-NetFirewallRule cmdlet for å gjøre det.,

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

Hvis du vil heller ikke gå hver datamaskin, har du PowerShell Remoting tilgjengelig og du er i et Active Directory-domene, kan du også åpne opp brannmuren på mange maskiner på en gang ved hjelp av det Invoke-Command cmdleten.

ved Hjelp av PsExec

Før du kan kjøre, må du gå. Hvis du aldri har brukt PsExec før, du er i for en godbit! Sørg for å lese denne delen først å få føttene våt for å lære det grunnleggende før du hopper i den dype enden senere i denne artikkelen.,

første gang du kjører PsExec på et nytt system, vil du umiddelbart se PsExec lisensavtalen komme opp. Du vil ha å klikke på Enig-knappen for å begynne å bruke det.

PSExec lisensavtalen (EULA)

Hvis du ønsker å hindre at skjermbildet for lisensavtalen vises, kan du stille godta det ved hjelp av /accepteula veksle som vist nedenfor.,

> psexec /accepteula

Du vil lære noen triks på lyddemping denne LISENSAVTALEN popup-vindu på lokale og eksterne datamaskiner senere i artikkelen.

å Finne Hjelp

Når du utforsker PsExec, bør du ikke bruke en bryter i det hele tatt. Når du bare kjøre psexec med ingen brytere, det vil returnere alle valg og en kort forklaring på hva hver enkelt gjør. Alle alternativene i tabellen nedenfor for din bekvemmelighet.,

Bytt Forklaring
en Separate prosessorer som programmet kan kjøres med komma der 1 er lavest nummererte CPU. For eksempel, for å kjøre programmet på CPU 2 og CPU-4, kan du skrive: «-en 2,4»
-c Kopier spesifisert program til det eksterne systemet for gjennomføring. Hvis du utelater dette alternativet programmet må være i systemets path på det eksterne systemet.,
d ikke vent for prosess for å avslutte (ikke-interaktiv).
-e ikke legg det angitte kontoen din profil.
-f Kopier spesifisert program, selv om filen allerede finnes på det eksterne systemet.
-jeg Kjør program, slik at den kommuniserer med skrivebordet av den angitte økten på det eksterne systemet. Hvis ingen økten er angitt prosessen går i konsollen. Noen har rapportert beste resultatene alltid bruker den -s-bryteren med -jeg grunn til windows blir uleselig.,
h Hvis målet er Vista eller høyere, har proc
-l Kjør prosessen som begrenset bruker (strimler Administratorer-gruppen og tillater bare privilegier som er tildelt Brukere gruppe). På Windows Vista prosessen kjører med Lav Integritet.
-n Angi tidsavbrudd i sekunder å koble til eksterne datamaskiner.
-p Angir valgfritt passord for brukernavnet. Hvis du utelater dette, vil du bli bedt om å angi en skjult passord.,
-r Angi navnet på den eksterne tjenesten til å lage eller samhandle. med.
-r Kjør den eksterne prosessen i Systemet konto.
-r Angir valgfritt brukernavn for pålogging til datamaskinen.
-v Kopier spesifisert fil bare hvis den har et høyere versjonsnummer eller er på nyere enn den på det eksterne systemet.
-w Angi arbeidsmappe av prosessen (relativ
-x Display UI på Winlogon sikre skrivebordet (lokale systemet).,
-arm Angir den eksterne datamaskinen er med ARM-arkitektur.
-prioritet Angir lavt, -belownormal, -abovenormal, -høyt eller
-realtime kjøre prosessen på en annen prioritet. Bruk
-bakgrunn kjøre på lite minne og i/U-prioritet på Vista.
maskinen Direkte PsExec å kjøre programmet på maskinen eller på datamaskiner som er angitt., Hvis du utelater navnet på datamaskinen PsExec kjører programmet på det lokale systemet, og hvis du angir et jokertegn (\*), PsExec går
@fil PsExec vil utføre kommandoen på hver av datamaskinene som er oppført i filen.
-accepteula Dette flagget undertrykker visning av lisensen dialog.
-nobanner ikke vise oppstart banner og copyright melding.,

å Kjøre en Enkel Ekstern Kommando

På sitt mest grunnleggende, PsExec krever to parametre: et datamaskinnavn og en kommando for å kjøre. Hvis du har en kommando for å kjøre på den eksterne datamaskinen som ikke krever noen argumenter som hostname, kan du bare legge det etter navnet på datamaskinen.

Merk at hvis du ikke angi et full-fil vei, er kommandoen for å kjøre må være i bruker-eller system-bane., Også, hvis du har et program med mellomrom i navnet, kan du alltid legge programmet i områder som for eksempel «mitt program.exe».

> psexec \\REMOTECOMPUTER hostname

Du kan se nedenfor som å kjøre hostname – kommandoen på CONTOSODC1 datamaskinen, kan du definere det er UNC-bane etterfulgt av kommandoen. PSExec vil deretter koble til den eksterne datamaskinen på en sikker måte, utføre kommandoen, og gå tilbake til utgang. I dette tilfellet hostname kommando returnerte vertsnavnet for datamaskinen som er CONTOSODC1.,

Hvis kommandoen ikke er cmd eller annen konsoll, PsExec vil raskt avslutte den eksterne økten og returnere exit-kode ekstern prosess returnert.

Merk: Det feil eller avslutt koden som er returnert fra psexec ikke kommer fra PsExec seg selv. I stedet, det kommer fra kommandoen som psexec utført på den eksterne datamaskinen.,

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 prosessen ikke fungerer 100% riktig, må du kanskje manuelt fjerne tjenesten ved hjelp av sc-kommandoen.

å Kjøre en Enkel Lokale Kommandoen

Selv om PsExec er best kjent for å kjøre kommandoer på eksterne datamaskiner, kan du også kjøre kommandoer lokalt.

Du kan kjøre kommandoer lokalt ved ikke å tilby et navn på datamaskinen som nedenfor.

> psexec <local command or EXE file>

Hvorfor vil du gjøre dette? En årsak til dette ville være å utføre kommandoer som lokal systemkonto., Du kan bruke -s slå på å kjøre en kommando som SYSTEMET lokalt eller eksternt, som du vil lære mer om senere.

Ta en titt på den korte videoen nedenfor. Legg merke til at du bare trenger å gi -s slå sammen med kommandotolken kjørbare for psexec å lansere en ny kommando økt som NT-MYNDIGHET\SYSTEM.,

Kjører Psexec som SYSTEM

PsExec Kommandoer (for å Få Mer Avansert)

Når du har fått grunnleggende ned, kan du deretter begynne å lære mer avanserte teknikker i psexec. PsExec kan gjøre mye mer enn bare kjøre en enkelt kommando på en enkelt datamaskin.

å Kjøre kommandoer på flere datamaskiner

PsExec er ikke bare begrenset til å kjøre kommandoer på en ekstern datamaskin på en gang., Dette verktøyet har også støtte for å kopiere programmer og kjøre kommandoer på flere datamaskiner samtidig.

Du kan kjøre PsExec på flere datamaskiner samtidig et par forskjellige måter.

Komma-separert Datamaskin Navn

Vanligvis når du kjører en kommando på en enkelt ekstern datamaskin, kan du angi en enkelt datamaskin navn som \\REMOTECOMPUTER. Du kan også angi flere datamaskiner atskilt med komma som nedenfor.,

> psexec \\REMOTECOMPUTER1,REMOTECOMPUTER2,REMOTECOMPUTER3

Alle Datamaskiner i et Active Directory-Domene

Hvis du kjører PsExec på et Active Directory-domene datamaskin, og du ønsker å sprenge ut en kommando kjøring på alle datamaskinene i domenet, kan du bruke jokertegn.

PsExec vil søke på hele Active Directory-domene og forsøk på å kjøre en kommando på hver datamaskin. Nedenfor er eksempel syntaks på hvordan PsExec vil forsøke å koble til hver datamaskin på domenet til å utføre datamaskinen er en del av og kjøre hostname – kommandoen.,

Merk at hvis du bruker en stjerne for å finne alle datamaskiner i et domene, mens den lokale datamaskinen er en del av en arbeidsgruppe, vil du motta feilmeldingen A system error has occurred: 6118.

ved Hjelp av jokertegn styrker PsExec hovedsak kjøre kommandoen net view /all for å først finne alle datamaskinene i domenet. Dette er en utdatert måte å finne informasjon om datamaskinen på grunn av sin avhengighet av NetBIOS.

å Lese fra en Fil

en Annen måte du kan kjøre kommandoer på flere datamaskiner på en gang, er å bruke en tekst-fil., Ved hjelp av syntaksen @<filename.txt>, PsExec vil lese hver linje i tekstfilen som om det var et navn på datamaskinen. Det vil deretter behandle hver datamaskin individuelt.

Nedenfor kan du se et eksempel på bruk av PowerShell til å opprette en tekstfil med linje-delt datamaskin navn, og bruker det som inngang for psexec.

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

Kopiere lokale programmer til den eksterne datamaskinen

Med -c slå på, psexec vil kopiere et hvilket som helst lokale programmet til den eksterne datamaskinen før kjøring.,

Kanskje du har en EXE-på din lokale datamaskin i en C:\Tools mappe og ønsker å kjøre den på en ekstern datamaskin. Du kan gjøre dette ved å bruke følgende syntaks:

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

Når du bruker -c slå på og ikke angir en kjørbar fil, PsExec vil fortsatt kopiere filen, men du får en feilmelding om systemet finner ikke den angitte filen. Dette skjer fordi PsExec vil alltid forsøke å kjøre filen du vil kopiere.,

Hvis du trenger å kopiere filer til eksterne datamaskiner før du bruker PsExec, bruk Copy-Item PowerShell-cmdlet-en i stedet.

Kjører Eksterne Prosesser under Alternative Legitimasjon

en Annen populær bruk tilfelle av PsExec er å kjøre kommandoer under alternativ kontoer. Som standard, PsExec vil forsøke å koble til den eksterne datamaskinen under for øyeblikket er logget på kontoen din. Mer spesifikt, det vil utgi seg for å være din konto på den eksterne datamaskinen.,

Med -u og valgfrie -p – bryteren kan du koble til den eksterne datamaskinen med en annen brukerkonto. PsExec vil deretter kryptere både brukernavn og passord, og sende dem til den eksterne datamaskinen for godkjenning.

For eksempel, hvis du er i en arbeidsgruppe, vil du alltid må oppgi brukernavnet ditt for å godkjenne deg til den eksterne datamaskinen som.

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

Hvis begge datamaskinene er medlem av Active Directory, være sikker på å forordet brukerkontoen med domenenavnet.,

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

Merk at når du ikke bruke -u slå på, psexec går inn i rollen din er logget på kontoen din på den eksterne datamaskinen. Det vil ikke ha tilgang til noe nettverk ressurser.

Kjørende Prosesser som det LOKALE SYSTEMET Konto

En av de mest nyttige funksjonene kjører PsExec under et alternativ kontoen ved hjelp av -s slå på. Denne bryteren kan PsExec (og eksternt utført program) for å kjøre under fjernkontrollen (eller lokalt) datamaskin LOKALE SYSTEMET konto.,

Merknad nedenfor vil jeg ikke inkludere en ekstern datamaskin navn. PsExec vil like gjerne kjøre på den lokale datamaskinen som godt. I dette tilfellet, jeg bruker -s alternativet for å fortelle PsExec å starte en lokal ledetekst som det LOKALE SYSTEMET konto.,

Kjører psexec som LOKALE SYSTEM

for Å kjøre en kommandolinje som LOKALE SYSTEM på en ekstern datamaskin, legger du til navnet på datamaskinen til den referanse som nedenfor:

> psexec -s \\REMOTECOMPUTER cmd

oppstart av GUI-Applikasjoner Eksternt

en Annen nyttig PsExec bryteren -i. Som standard, PsExec ikke tillater eksternt utført kommandoen til å ta opp eventuelle windows på den eksterne datamaskinen., Dette er nyttig fordi hvis du utføre kommandoer eksternt, du kommer ikke til å se skjermen uansett.

Men kanskje du trenger å ta opp programmer for brukerne. Du personlig ikke skal bruke programmet, men et slutt-brukeren. I så fall, bruk -i slå på.

Kanskje du trenger for å få opp en notisblokk-vinduet på en ekstern datamaskin. Ikke et problem. Kjøre notepad.exe med -i slå på og PsExec vil åpne Notisblokk.,

> psexec -i \\REMOTECOMPUTER notepad
Kjører psexec i interaktiv modus

pass på å også bruke -d veksle til å koble fra når den interaktive vinduet er det tatt opp om. Som standard, PsExec vil vente på den prosessen det utføres for å fullføre. Hvis den eksterne prosessen (Notisblokk i dette tilfellet) er holdt kjører, PsExec vil aldri gå tilbake kontrollen.,

Med -d slå med -i vil fortelle PsExec å ikke vente for den eksterne prosessen skal bli ferdig. I stedet, det vil koble fra, og returnere kontrollen til deg så snart som den eksterne prosessen er utført.

Omdirigere Utdata

Psexec vil stole noen utgang sendt fra den eksterne prosessen til lokal sesjon. Vanligvis er denne produksjonen vil gå direkte til ditt lokale konsollen. Men hvis du ønsker å omdirigere det, kan du gjøre det ved hjelp av typiske omdirigering operatører.,

For eksempel, hvis du ønsker å kjøre en kommando og slå av alle utgang, kan du omdirigere utdata og feil til null ved hjelp av ^> nul ^2^&1.

Merk spesialtegnene er rømt med en lue. ( ^).

PsExec Bruke Tilfeller

Når du har lært å bruke psexec, vil du uunngåelig komme på tvers av ulike spesifikke tilfeller. I dette avsnittet, vil du lære noen virkelige verden use cases og eksempler med psexec.,

Lansere en Ekstern Ledeteksten (psexec cmd)

En av de mest vanlige bruken tilfeller lanserer PsExec som en interaktiv ledeteksten. PsExec ikke bare kjøre kommandoer eksternt. Det kan også sende kommando ut tilbake til konsollen. På grunn av dette, kan det gjøre en stor telnet (hvis noen fortsatt bruker det) eller kanskje PowerShell Enter-PSSession erstatning.

for Å starte en ekstern kommando, må du angi navnet på den eksterne datamaskinen, og kjør cmd-programmet. Cmd er Windows-kommandoen tolk., Siden PsExec støtter interaktiv bruk, vil det gjerne tilbake en blinkende markøren og en melding.

> psexec \\REMOTEPC cmd
Åpne en ledetekst på en ekstern datamaskin

På dette punktet, verden er din østers. Du kan kjøre kommandoer på din lokale datamaskin via denne «nestes» – ledeteksten, og de vil bli henrettet på den eksterne datamaskinen.

for Å avslutte ledeteksten, type exit., PsExec vil stoppe cmd prosess på den eksterne datamaskinen og flytte fokuset tilbake til den lokale datamaskinen.

du Må IKKE bruke Ctrl-C for å lukke ut av en interaktiv cmd-økten. Bruk alltid exit. Hvis du bruke Ctrl-C, psexec økten, vil fortsette å kjøre på den eksterne datamaskinen.

Installere Programvare Eksternt

Du kan bruke PsExec som en dårlig mann programvare distribusjon verktøy. Kanskje du har en MSI-pakke som du trenger for å kjøre på en eller flere eksterne datamaskiner kalt oppsett.msi., Dette installasjonsprogrammet må være kopiert til eksterne datamaskiner og deretter henrettet med msiexec.exe-verktøyet med et par bytter.

Nedenfor er et eksempel på hvordan du kan bruke PsExec eksternt distribuere programvaren. Dette eksemplet kopier oppsett.msi til den eksterne datamaskinen og deretter lanserer MSI installer interaktivt på som SYSTEM-kontoen.

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

Godta LISENSAVTALEN for sluttbrukere uten /accepteula bytte

Som nevnt tidligere, første gang PsExec går, vil du har til å godta LISENSAVTALEN., Du kan bruke /accepteula slå på, men du kan også «scenen» er det i registeret.

Da den ble lansert for første gang, PsExec skaper en registernøkkel på HKCU\Software\Sysinternals\PsExec. I stedet for at registernøkkel, det skaper en registerverdi kalt EulaAccepted med en DWORD-verdi av 1.

ved Hjelp av din favoritt metode for å endre registret på eksterne datamaskiner, du trenger bare å opprette denne nøkkel/verdi på datamaskiner du ønsker å kjøre PsExec på. Når du har laget, du trenger ikke å kjøre /accepteula!,

Gifte seg med PowerShell og PsExec

Før PowerShell var alt vi hadde PsExec. Nå har vi valg. PowerShell kan erstatte PsExec i mange situasjoner, men utfyller det andre.

Bygning Datamaskin Navn med PowerShell

i Stedet for \\* for å finne alle datamaskinene i domenet, kan du bruke PowerShell i stedet. Ved hjelp av PowerShell, kan du ikke bare plukke visse datamaskiner, men du trenger ikke å bruke brannmur-utsatt net view /all adferd.,

Du kan bruke PowerShell til å opprette en streng som inneholder alle datamaskin navn, atskilt med et komma. Du kan deretter passere denne strengen til PsExec som vil gårde prosessen hver og en som du skrev inn hver manuelt.

nedenfor ser Du et eksempel på bruk av Get-AdComputer cmdlet-en del av ActiveDirectory PowerShell-modul.

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

slik at PowerShell Remoting Eksternt

Hvis du har eksterne datamaskiner du heller vil bruke PowerShell Remoting med i stedet for PsExec, kan du bruke PsExec for å aktivere dem.,

Ved å kjøre Enable-PSRemoting eller winrm.cmd batch fil på eksterne datamaskiner, kan du raskt slå på PowerShell Remoting over mange datamaskiner samtidig.

Nedenfor kan du se et eksempel for å ringe winrm.cmd batch fil på en ekstern datamaskin som kjører som SYSTEM-kontoen. Fordi output fra kommandoen er ikke nødvendig, det er brakt til taushet med 2>&1> $null.

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

PsExec Feilmeldinger

Det er verdt å nevne igjen på forhånd at de fleste feilkoder du se returnert fra PsExec er fra den eksterne prosessen; ikke fra PsExec., Men det er nyttig å ha en forståelse av disse feilkoder og hva de kan bety.

Hvis du ønsker en referanse på alle Windows-feilkoder, anbefaler jeg å sjekke ut denne uttømmende liste over Windows feil koder.

Nedenfor er en liste over vanlige feil koder du kan se tilbake ved PsExec.

Feil Kode Forklaring
-2146232576 Vanligvis returneres av Windows Update når det oppstår en feil.,
0 – Kommandoen utføres vellykket
1 Feil funksjon. Et problem som skjedde. Det er om det.
1603 Fatal feil under installasjonen. Dette er vanligvis returneres av msiexec.
2 systemet finner ikke den angitte filen
4 systemet kan ikke åpne filen.
5 ingen Tilgang.
6 håndtaket er ugyldig.,
6118 listen over servere for denne arbeidsgruppen er ikke tilgjengelig for øyeblikket

Din Tilbakemelding