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.
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.
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.,
How PsExec Works on Remote Computers
PsExec goes through a few steps to execute programs on remote computers.
- Create a PSEXESVC.exe file in C:\Windows.
- Create and start a Windows service on the remote computer called PsExec.
- Execute the program under a parent process of psexesvc.exe.
- 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.,
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.,
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
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
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 |
Legg igjen en kommentar