I dagens lektion i vår Geek Skolan serien omfattar SysInternals, vi kommer att visa er hur man använder PsTools uppsättning verktyg för att utföra alla typer av administrativa uppgifter, både lokalt och på fjärrdatorer som väl.,
Om du någonsin har velat ansluta till en annan dator och köra ett kommando för att snabbt få information om processer som körs och eventuellt döda dem, eller ens stoppa en tjänst på en annan DATOR, kan du använda PsTools verktyg för att göra alla dessa saker och mycket mer.
Självklart kan du använda Fjärrskrivbord eller någon liknande tjänst för att ansluta till en Windows-dator och faktiskt se skrivbordet och göra något som du skulle göra lokalt, men PsTools verktyg låter dig göra många uppgifter från kommandoraden, eller ännu bättre, från ett manus som du kan återanvända senare.,
det här är den typ av verktyg som fungerar bäst i en företagsmiljö, och mastering av dessa verktyg kommer definitivt att göra dig mycket bättre på ditt systemadministrationsjobb, spara tid och låta dig göra saker på ett mycket smartare sätt. Att göra saker smartare och snabbare är en kritisk färdighet för att vara en stor sysadmin.
det finns tolv verktyg i PsTools-uppsättningen, och medan vissa av dem är extremt användbara har andra ersatts med verktyg inbyggda i nyare versioner av Windows, och det finns några andra som inte är användbara för de flesta., Vi går igenom dem alla så att du förstår hur de fungerar och varför du kanske vill använda var och en.,ent logga in på kommandoraden
Det är värt att notera att du kan använda ett verktyg som PsExec att utföra alla typer av kommandoradsverktyg på fjärrdatorer… även riktigt användbara dem som Autoruns kommandoradsverktyg och många fler., Möjligheterna är oändliga när du har anammat kraften i PsTools.
alla dessa verktyg kan användas på lokala datorer, men de är mest användbara för att ansluta till fjärrdatorer och utföra kommandon på dem.
ansluta till fjärrdatorer ( Syntax för alla verktyg)
alla utilites kan köras på antingen den lokala eller fjärrdatorn, så de har alla samma första argument för datornamn om det behövs. Observera att du kan använda IP-adressen om du vill istället., Om du utelämnar detta argument kommer kommandot att fungera på din lokala dator.
psinfo \\computername
Du kan också lista flera datorer som psinfo \\computer1, computer2, computer3, eller så kan du lägga alla namn i en fil och referens som psinfo @computerlist.txt. Den slutliga syntaxen är psinfo \\* som fungerar på alla datorer i domänen, vilket förmodligen inte är något du använder varje dag.,
om du behöver ansluta med alternativa autentiseringsuppgifter eftersom din lokala dators konto har ett annat användarnamn och lösenord än den andra datorn, kan du använda-u och-p alternativ, men vi skulle notera att du kanske inte vill använda-p på kommandoraden med ett lösenord i kommandot av säkerhetsskäl. Uppdatering: från och med den senaste versionen av PsExec, inget verktyg passerar lösenord som klartext längre, så den enda oro är om någon kan läsa dina manusfiler och se lösenordet där.,
Psinfo \\computername-u ”user” -p ”Password”
”user” – delen av kommandot skulle ändras till ”DOMAIN\user” om du befinner dig i en domänmiljö och behöver ändras från den användare som för närvarande körs.
Obs! Du måste i allmänhet ansluta till fjärrdatorerna med ett administratörskonto.
konfigurera Fjärradministrationsåtkomst
om du befinner dig i en domänmiljö, som de flesta som behöver använda PsTools kommer att vara, kan du ignorera det här avsnittet helt eftersom allt ska fungera bra., För alla som kör Windows 7, 8 eller Vista i en hemmiljö eller använder ett par datorer på ett kontor utan en domän, måste du justera Användarkontokontroll på fjärrdatorn för att PsTools ska kunna köras korrekt.
problemet beskrivs väl av Microsoft:
När en användare som är medlem i gruppen lokala administratörer på målfjärrdatorn etablerar en fjärransluten administrativ anslutning genom att använda kommandot net use * \\remotecomputer\Share$, till exempel, kommer de inte att ansluta som en fullständig administratör., Användaren har ingen höjdpotential på fjärrdatorn, och användaren kan inte utföra administrativa uppgifter.
för att förklara det på ett annat sätt, när du försöker ansluta till en annan dator och köra något som kräver administratörsåtkomst, finns det inget sätt att utlösa UAC-prompten och acceptera den från din dator, så den kommer inte att ansluta som administratör.
och det här är inte en dålig sak., Du bör inte ändra den här inställningen utan att helt förstå att du kommer att tillåta en öppning för skadlig kod att sprida sig från en dator till en annan — förutsatt att skadlig kod har ditt lokala användarnamn och lösenord, och det lösenordet är detsamma som den andra datorn, och malware är det knepigt, vilket de flesta inte är. men det är fortfarande inte något att
och om du befinner dig i en domänmiljö finns inte det här problemet och behöver inte ändras. Och om du bara testar med en massa virtuella maskiner, har du inte mycket att oroa dig för.,
för Att justera UAC för att aktivera PsTools att köra du vill öppna Registereditorn och navigera till följande nyckel:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
Windows\CurrentVersion\Policies\System
När du är där, skapa en ny 32-bitars DWORD på höger sida, ge den namnet LocalAccountTokenFilterPolicy och värdet 1. Du behöver inte starta om datorn för att få inställningen att träda i kraft.,
Obs! För att klargöra måste den här inställningen ske på fjärrdatorn som du ansluter till.
PsExec
PsExec är förmodligen det mest kraftfulla verktyget i satsen, eftersom du kan utföra något kommando i din lokala kommandotolk precis som att köra den på fjärrdatorn. Det inkluderar allt som kan köras på kommandoraden – du kan ändra registervärden, köra skript och verktyg, eller ansluta från den datorn till en annan., Utgången av kommandona visas på din lokala dator, snarare än på fjärrkontrollen.
syntaxen är enkel:
psexec \\computername<alternativ> apptorun.exe <argument>
realistiskt, men du vill också inkludera användarnamn och lösenord på kommandoraden., Till exempel, för att ansluta till en annan dator och kontrollera listan nätverksanslutningar, skulle du använda något liknande:
psexec \\computername-U User-p Password ipconfig
det kommandot skulle producera utdata som liknar följande:
om du vill skicka utdata från ett kommando till ett annat kommando, eller om du ville omdirigera utdata till en fil, skulle du normalt bara göra något liknande kommando.exe> utgång.txt, och samma sak händer med PsExec., Så ett kommando som följande sparar utdata från netstat-an i en fil på din lokala dators rotkatalog.
psexec \ \ computername netstat-an > C:\connections. – herr talman!txt
om du vill skicka > eller | tecken över PsExec-anslutningen till fjärrdatorn måste du använda ^ – tecknet, vilket är ett föga känt escape-tecken i Windows command shell., Det betyder förstås att vi faktiskt måste använda kommandoskalet på fjärrdatorn, och inte bara köra processen, så vi kan göra omdirigeringen eller röret i första hand. Så det gör vårt kommando så här (ändra sökvägen till hemkatalogen där vi har skrivåtkomst).
psexec \\computername cmd / C netstat-an ^ > C:\users\geek\connections. – herr talman!,txt
det här exemplet skulle placera listan över öppna anslutningar som genereras av netstat i användarens hemkatalog på fjärrdatorn, i en fil som heter anslutningar.txt.
kopiera program till fjärrdatorn
du är inte begränsad till bara program på fjärrdatorn när du använder PsExec, och i själva verket kan du köra allt som du har lokalt. Till exempel, om du ville göra en Autoruns kommandoradsskanning av fjärrsystemet, men du hade bara autorunsc.exe på din lokala dator kan du använda-C-omkopplaren för att kopiera programmet över., PsExec tar bort verktyget från fjärrsystemet när kommandot är klart.
det här är en viktig tid att nämna-accepteula-alternativet för de flesta SysInternals-verktygen, vilket kommer att se till att EULA har accepterats på datorn där kommandot har körts. Vi måste lägga till det här på autorunsc.exe kommando annars kommer det att misslyckas på fjärrdatorn.
psexec \\datornamn -c autorunsc.,exe-accepteula
det finns några andra alternativ som anger om programmet alltid kopieras, eller om det ska kopieras om det lokala programmet är en högre version än fjärrkontrollen. Du kan bara köra psexec från prompten för att se dessa alternativ.
Obs! Om ett kommando endast är tillgängligt i kommandotolken måste du lägga till cmd /C före det. Detta inkluderar rör och omdirigeringar som / och >.,
interagera med den inloggade användaren på fjärrdatorn
Du kan använda-i-växeln för att starta programmet och låta fjärranvändaren faktiskt interagera med programmet. Du skulle förmodligen vilja kombinera detta med-D-omkopplaren, som inte väntar på att fjärrprocessen slutar innan PsExec returnerar kontrollen till dig., Det här kommandot skulle till exempel öppna ett Anteckningsblockfönster på en fjärrdator:
psexec \\computername-d-i anteckningsblock
Du kan också välja att köra som systemanvändare med-S-alternativet, vilket kan vara mycket farligt. Om du till exempel ville öppna Registereditorn på din egen dator, men med systemanvändarnivåbehörigheter, kan du köra det här kommandot.
psexec -jag -d -s regedit.,exe
om du undrar, Ja, detta kommer att ge dig tillgång till en massa saker som du normalt inte skulle ha tillgång till Redigera i registret. Och ja, det är en riktigt dålig idé.
kör en fullständig kommandotolk via PsExec
Ja, Vi visade dig bara alla dessa exempel på hur du kör ett enda kommando via PsExec… och det visar sig att du kan köra ett helt skal på din lokala dator som faktiskt körs på fjärrdatorn. Det är precis som du var på konsolen på den servern (för det mesta)., Och lyckligtvis är syntaxen för den här väldigt lätt (lägg till användarnamnet om du behöver).
psexec \\datornamn cmd.exe
När du har gjort detta har du en kommandotolk som nu körs på fjärrdatorn.
kommandotolken fungerar nästan som vanligt, förutom att flikkompletteringen inte kommer att fungera alls, men det är bara bra med oss.,
det är värt att notera att om du vill köra PowerShell-kommandon på distans på en annan dator kan du göra det inbyggt med några tweaks till konfigurationen. Tyvärr fungerar PowerShell inte så bra med PsExec om du inte använder en massa konstiga lösningar som inte är värda.
andra alternativ
psexec — kommandot har massor av andra riktigt användbara alternativ som du kan använda-var och en av dessa skulle användas i utrymmet direkt efter \\computername och före någon av de andra kommandona., Så tänk psexec \ \ computername-option <fjärrkommando>.
om du bara kör psexec-kommandot från prompten utan några extra växlar ser du dem alla.
PsFile
det här kommandot visar filer som för närvarande öppnas över nätverket på en lokal dator eller en fjärrdator, och det fungerar på samma sätt som kommandot ”net file” i Windows. Syntaxen är precis som alla andra kommando i satsen.
psfile \\computername
ja, den här är inte lika kul som den sista.,
om du vill stänga en av filerna och koppla bort personen från resursen kan du stänga anslutningen med-C-alternativet, men det kan leda till förlust av data eftersom filen inte stängdes ordentligt.
psfile \\computername<path> -c
PsGetSid
detta visar säkerhetsidentifieraren för en dator eller användare och tar standardargumenten., Detta verktyg är förmodligen bara användbart i mycket speciella scenarier, som vi inte personligen stött på någon. Så prova det en gång och glöm det tills du behöver använda det en dag.
PsInfo
det här kommandot listar massor av användbar information om ett system, inklusive upptiden, vilket är mycket roligt. Du kan köra den här lokalt för att testa den genom att helt enkelt skriva psinfo vid kommandotolken, förutsatt att dina SysInternals-verktyg finns i sökvägen.,
om du vill få mycket mer information ur PsInfo, och jag vet att du gör det, kan du använda följande växlar för att lägga till diskinformation (- d) och snabbkorrigeringar (-h) och en lista över installerade program och deras versioner (-s).,
psinfo-d-h-S
detta resulterar i mycket mer information, även på en nästan tom virtuell maskin:
Du kan också köra PsInfo på distans genom att lägga till datorns Namn och eventuellt användarnamnet växlar… ett stort problem: det kommer inte att fungera om fjärrregistret tjänsten är aktiverad. Gå till slutet av artikeln där vi pratar om hur du aktiverar den på fjärrdatorn.,
pskill
det här kommandot är väldigt enkelt — det dödar processer, antingen med namn eller ID, och du kan använda-T-omkopplaren för att eventuellt döda hela processträdet.
pskill \\computername <PID eller namn>
problemet med PsKill är att de senaste versionerna av Windows har en mycket kraftfull uppgift dödande verktyg byggt rätt i kallas Taskkill som har en mycket fler funktioner.,
PsList
det här verktyget är extremt enkelt, men ganska praktiskt för att snabbt titta på en dator och se om något använder för mycket CPU eller minne. Du kan ange namnet eller en del av namnet på kommandoraden för att begränsa listan till bara ett problemprogram, och du kan se nästan all information inklusive trådar.
Obs! För att det här verktyget ska fungera på en fjärrdator måste du aktivera fjärrregistertjänsten. Se till att läsa till slutet av lektionen, som vi förklarar hur man handskas med det senare.,
PsLoggedOn
det här verktyget listar konton som är inloggade antingen på datorn eller ansluter på distans. Det är ganska enkelt, och till stor del användbart i en systemadministratör typ av miljö.
PsLogList
det här verktyget visar en lokal eller fjärransluten händelselogg på kommandoraden, och det finns ett antal alternativ som kan användas för att filtrera data.,
psloglist \\computer System
det finns också alternativen-H, -d och-m, som låter dig begränsa listan över händelser till bara de senaste X-timmarna, dagarna eller minuterna. Alternativet – n visar list x-poster, medan-r-omkopplaren ändrar ordningen så att de senaste posterna kommer att ligga längst ner i utmatningen. Det sista alternativet, som vi ställer in på ”System” i det här exemplet, är faktiskt inte nödvändigt — om du utelämnar det, kommer systemloggen alltid att dras, men du kan ändra den till applikation eller säkerhet för att dra dessa loggar istället.,
det är värt att notera att om du har administratörsåtkomst till den andra datorn kan du helt enkelt öppna händelsevisare och välja Anslut från åtgärdsmenyn. Ange datornamnet i listan, ändra autentiseringsuppgifter om du behöver, och komma åt händelseloggarna på det sättet.
det enda scenariot där vi verkligen kan se att PsLogList är väldigt användbar är om du ville skriva ut något för att utföra en åtgärd vid vissa meddelanden i händelseloggen.,
PsPasswd
med det här verktyget kan du ändra lösenord för användare, både lokala och fjärranslutna. Syntaxen är densamma som allt annat:
Pspasswd \\computer-u user-p Password <AccountToChange> <NewPassword>
fördelen med det här verktyget över att bara använda net-användare från den vanliga Kommandotolken är att du kan ändra lösenord för flera datorer samtidigt, och det fungerar också i en domänmiljö.,
PsPing
detta verktyg pingar, kontrollerar portar, och gör latens och bandbredd testning. Ganska enkelt.,
psping<servernamn>
eller så kan du kontrollera anslutningen till en port genom att lägga till portnumret så här:
psping<servernamn>: 80
det finns massor av avancerade alternativ till det här kommandot som du förmodligen vill kolla in om du ned gör några felsökning i nätverket.,
PsService
med det här verktyget kan du hantera Windows-tjänster från kommandotolken. Det är verkligen ganska lätt att använda — syntaxen fungerar så här:
psservice \\computername <kommandot> <argument>
>
listan över kommandon kan hittas genom att titta på hjälp/? alternativ, men det finns några alternativ som du befinner dig med mer än resten.,IES the configuration
setconfig – ställer in konfigurationen start – startar en tjänst stop – stoppar en tjänst restart – stoppar och startar sedan om en tjänst pause – pausar en tjänst cont – fortsätter en pausad tjänst depend – uppräknar de tjänster som är beroende av den som anges find – söker efter en instans av en tjänst i nätverket säkerhet – rapporterar de säkerhetsbehörigheter som tilldelats en tjänst i synnerhet är alternativen start | stop | pause | restart | cont verkligen enkla och lätta att förstå., Till exempel i följande kommando kan du ersätta ”start” med någon av dessa andra kommandon.
psservice \\computername start<servicename>
de andra alternativen kan användas för att fråga mer information om en tjänst, eller ändra konfigurationen.
Obs: den inbyggda sc.exe-verktyget har massor av användbara funktioner som överlappar med det här verktyget. Den största skillnaden är att PsService är lite mer användarvänlig.,
PsShutdown
det här verktyget låter dig stänga av, Logga ut eller till och med sätta en dator i viloläge. Problemet är att det inte är bättre än den inbyggda avstängningen.exe-verktyget, och var faktiskt utformat för Windows XP, så det rekommenderas att använda det inbyggda verktyget istället i de flesta fall.
det enda alternativet som PsShutdown ger att du inte kan få annars är omkopplaren (-d) för att sätta datorn i viloläge, vilket kan vara praktiskt.,
psshutdown \\computername-d
Du kan också använda-h-alternativet för att sätta datorn i viloläge istället.
Pssuspend
det här verktyget är mycket lik PsKill, men det gör något som det inbyggda Taskkill-verktyget bara inte kan — du kan avbryta processer istället för att döda dem, vilket kan vara mycket praktiskt om du tillfälligt vill stoppa en CPU-intensiv process från att köras medan du slutför en sysadmin-uppgift.,
det är extremt enkelt att avbryta en process:
pssuspend \\dator <PID eller namn>
och återuppta processen är lika enkelt — allt du behöver göra är lägg till-r-omkopplaren.,
pssuspend \\computer-r <PID eller namn>
när verktygen vann inte ansluta på grund av fjärrregistret
några av dessa verktyg, inklusive psinfo, pslist, psloglist och psloggedon kräver fjärrregistret tjänsten aktiveras på fjärrdatorn, och det är inte aktiverat som standard på moderna versioner av Windows.
den goda nyheten är att det här problemet är lätt att reparera, och du behöver inte lämna Fjärrregistret aktiverat., Kör bara det här kommandot med psservice för att starta tjänsten:
psservice \\computername start RemoteRegistry
och sedan när du är klar med vad du än gör med PsInfo eller PsList kan du stoppa tjänsten igen med det här kommandot:
psservice \\computername Stop remoteregistry
enkla lösningar är de bästa, eller hur?
nästa lektion
se till att gå med oss i morgon, när vi täcker fil-och Diskverktyg och några mer intressanta saker.