Използване на PsTools за управление на други компютри от командния ред



В днешния урок в нашата серия Geek School, обхващаща SysInternals, ще ви покажем как да използвате набора от помощни програми PsTools за изпълнение на всякакви административни задачи както локално, така и на отдалечени компютри.

УЧИЛИЩНА НАВИГАЦИЯ
  1. Какви са инструментите на SysInternals и как ги използвате?
  2. Разбиране на Process Explorer
  3. Използване на Process Explorer за отстраняване на неизправности и диагностика
  4. Разбиране на Process Monitor
  5. Използване на Process Monitor за отстраняване на неизправности и намиране на хакове в системния регистър
  6. Използване на автоматично стартиране за справяне със стартиращи процеси и злонамерен софтуер
  7. Използване на BgInfo за показване на системна информация на работния плот
  8. Използване на PsTools за управление на други компютри от командния ред
  9. Анализиране и управление на вашите файлове, папки и дискове
  10. Завършване и използване на инструментите заедно

Ако някога сте искали да се свържете с друг компютър и да изпълните команда, бързо да получите информация за работещите процеси и по желание да ги убиете или дори да спрете услуга на друг компютър, можете да използвате помощните програми PsTools, за да направите всички тези неща и дори Повече ▼.





Очевидно можете да използвате отдалечен работен плот или подобна услуга, за да се свържете с всеки компютър с Windows и всъщност да видите работния плот и да правите всичко, което бихте направили локално, но помощните програми на PsTools ви позволяват да изпълнявате много задачи от командния ред - или още по-добре, от скрипт, който можете да използвате повторно по-късно.

Това е типът помощни програми, които работят най-добре в корпоративна среда и овладяването на тези инструменти определено ще ви направи много по-добри в работата ви по системно администриране, ще ви спести време и ще ви позволи да правите нещата по много по-интелигентен начин. Правенето на нещата по-интелигентно и по-бързо е критично умение за страхотен системен администратор.



В набора PsTools има дванадесет инструмента и докато някои от тях са изключително полезни, други са заменени с инструменти, вградени в по-новите версии на Windows, и има няколко други, които не са полезни за повечето хора. Ще преминем през всички тях, за да разберете как работят и защо може да искате да използвате всеки един от тях.

  • PsExec – изпълнява процеси на отдалечен компютър
  • PsFile – показва файлове, които се отварят на отдалечения компютър през мрежата
  • PsGetSid – показва идентификатора за защита на компютър или потребител
  • PsInfo – изброява информация за дадена система
  • PsKill – убива процеси по име или ID
  • PsList – списък с информация за процеси в командния ред
  • PsLoggedOn – изброява акаунти, които са влезли или на машината, или се свързват отдалечено
  • PsLogList – издърпайте дневника на събитията в командния ред
  • PsPasswd – промяна на паролата за потребителите
  • PsPing – сравнително проста помощна програма за пинг с някои допълнителни функции
  • PsService – избройте и направете промени в услугите на Windows
  • PsShutdown – изключване, излизане или спиране на компютър
  • PsSuspend – спиране и възобновяване на процесите (вместо да ги убивате)

Струва си да се отбележи, че можете да използвате инструмент като PsExec за изпълнение на всякакви помощни програми от командния ред на отдалечени компютри... включително наистина полезни като инструмента за команден ред Autoruns и много други. Възможностите са безкрайни, след като сте прегърнали силата на PsTools.

Реклама

Всички тези инструменти могат да се използват на локални компютри, но най-вече са полезни за свързване с отдалечени компютри и изпълнение на команди върху тях.



Свързване с отдалечени компютри (синтаксис за всички помощни програми)

Всички помощни програми могат да се изпълняват както на локалния, така и на отдалечения компютър, така че всички те имат един и същ първи аргумент за името на компютъра, ако е необходимо. Имайте предвид, че вместо това можете да използвате IP адреса, ако желаете. Ако пропуснете този аргумент, командата ще работи на вашия локален компютър.

psinfo \ име на компютър

Можете също да изброите няколко компютъра като psinfo \computer1, computer2, computer3 или можете да поставите всички имена във файл и да препратите, като psinfo @computerlist.txt. Окончателният синтаксис е psinfo \*, който работи на всички компютри в домейна, което вероятно не е нещо, което ще използвате всеки ден.

Ако трябва да се свържете с алтернативни идентификационни данни, тъй като акаунтът на вашия локален компютър има различно потребителско име и парола от другия компютър, можете да използвате опциите -u и -p, въпреки че бихме искали да отбележим, че може да не искате да използвате -p на командния ред с парола в командата от съображения за сигурност. Актуализация: от последната версия на PsExec , никой инструмент вече не предава паролите като ясен текст, така че единственото притеснение е дали някой може да прочете вашите скриптови файлове и да види паролата там.

psinfo \име на компютър -u потребител -p Парола

Потребителската част на командата ще се промени на DOMAINuser, ако сте в среда на домейн и трябва да промените от текущия работещ потребител.

Забележка: обикновено ще трябва да се свържете с отдалечените компютри с администраторски акаунт.

Конфигуриране на достъп за отдалечено администриране

Ако сте в среда на домейн, каквато ще бъдат повечето хора, които трябва да използват PsTools, можете да игнорирате този раздел изцяло, тъй като всичко трябва да работи добре. За всеки, който работи с Windows 7, 8 или Vista в домашна среда или използва няколко компютъра в офис без домейн, ще трябва да настроите контрола на потребителските акаунти на отдалечения компютър, за да позволите на PsTools да работи правилно.

Проблемът е че добре описано от Microsoft :

Когато потребител, който е член на групата на локалните администратори на целевия отдалечен компютър, установи отдалечена административна връзка с помощта на командата net use * \remotecomputerShare$, например, той няма да се свърже като пълен администратор. Потребителят няма потенциал за издигане на отдалечения компютър и потребителят не може да изпълнява административни задачи.

Реклама

За да го обясня по различен начин, когато се опитате да се свържете с друг компютър и да стартирате нещо, което изисква администраторски достъп, няма начин да задействате UAC подкана и да го приемете от вашия компютър, така че той няма да се свърже като администратор.

И това не е нещо лошо. Не трябва да променяте тази настройка, без да разберете напълно, че ще позволите на отвор за разпространение на зловреден софтуер от един компютър на друг – ако приемем, че злонамерен софтуер има вашето локално потребителско име и парола и тази парола е същата като на другия компютър и зловредният софтуер е толкова сложен, което повечето не е така. Но все пак не е нещо, което трябва да се приема лекомислено.

И отново, ако сте в среда на домейн, този проблем не съществува и не трябва да се променя. И ако просто тествате с куп виртуални машини, няма за какво да се притеснявате.

За да настроите UAC, за да активирате PsTools да работи, ще искате да отворите редактора на системния регистър и да отидете до следния ключ:

HKEY_LOCAL_MACHINESOFTWAREMicrosoft
WindowsCurrentVersionPoliciesSystem

След като сте там, създайте нов 32-битов DWORD от дясната страна, дайте му името LocalAccountTokenFilterPolicy и стойността 1. Не е нужно да рестартирате компютъра, за да влезе в сила настройката.

Забележка: само за да изясним, тази настройка трябва да се случи на отдалечения компютър, към който се свързвате.

PsExec

PsExec е може би най-мощният инструмент в комплекта, тъй като можете да изпълните всяка команда във вашия локален команден ред, точно както я изпълнявате на отдалечения компютър. Това включва всичко, което може да се стартира на командния ред - можете да промените стойностите на системния регистър, да стартирате скриптове и помощни програми или да се свържете от този компютър към друг. Резултатът от командите ще бъде показан на вашия локален компютър, а не на отдалечения.

Синтаксисът е прост:

psexec \име на компютъра apptorun.exe

Реклама

Реално обаче бихте искали да включите и потребителското име и паролата в командния ред. Например, за да се свържете с друг компютър и да проверите списъка с мрежови връзки, ще използвате нещо подобно:

psexec \име на компютър -u Потребител -p Парола ipconfig

Тази команда ще произведе изход, подобен на следния:


Ако искате да предадете изхода на команда в друга команда или искате да пренасочите изхода във файл, обикновено просто правите нещо като command.exe > output.txt и същото се случва с PsExec. Така че команда като следната ще запази изхода на netstat -an във файл в главната директория на вашия локален компютър.

psexec \име на компютъра netstat -an > C:connections.txt

Ако искате да предадете > или | символ през връзката PsExec към отдалечения компютър, ще трябва да използвате знака ^, който е малко познат escape знак в командната обвивка на Windows. Това, разбира се, означава, че всъщност ще трябва да използваме командната обвивка на отдалечения компютър, а не просто да стартираме процеса, за да можем да направим пренасочването или канала на първо място. Така че това прави нашата команда такава (промяна на пътя към домашната директория, където имаме достъп за запис).

psexec \име на компютър cmd /c netstat -an ^> C:usersgeekconnections.txt

Този пример ще постави списъка с отворени връзки, генерирани от netstat, в домашната директория на потребителя на отдалечения компютър, във файл с име connections.txt.

Копиране на програми към отдалечения компютър

Не сте ограничени само до приложенията на отдалечения компютър, когато използвате PsExec, и всъщност можете да стартирате всичко, което имате локално. Например, ако искате да сканирате от командния ред Autoruns на отдалечената система, но сте имали само autorunsc.exe на вашия локален компютър, можете да използвате превключвателя -c, за да копирате приложението. PsExec ще премахне инструмента от отдалечената система, след като командата приключи.

Реклама

Това е важен момент да споменем опцията -accepteula на повечето от инструментите на SysInternals, която ще гарантира, че EULA е прието на компютъра, на който е изпълнена командата. Ще трябва да добавим това към командата autorunsc.exe, в противен случай ще се провали на отдалечения компютър.

psexec \име на компютър -c autorunsc.exe -accepteula

Има няколко други опции, които определят дали приложението винаги се копира или трябва да се копира, ако локалното приложение е по-висока версия от отдалеченото. Можете просто да стартирате psexec от подканата, за да видите тези опции.

Забележка: Ако дадена команда е налична само в командния ред, трябва да добавите cmd /c преди нея. Това включва тръби и пренасочвания като | и >.

Взаимодействие с влезлия потребител на отдалечения компютър

Можете да използвате превключвателя -i, за да стартирате приложението и да позволите на отдалечения потребител действително да взаимодейства с приложението. Вероятно бихте искали да комбинирате това с превключвателя -d, който не чака края на отдалечения процес, преди PsExec да ви върне контрола. Например, тази команда ще отвори прозорец на Notepad на отдалечен компютър:

psexec \име на компютър -d -i бележник

Можете също да изберете да стартирате като потребител на SYSTEM с опцията -s, което може да бъде много опасно. Например, ако искате да отворите редактора на системния регистър на вашия собствен компютър, но с разрешения на ниво потребител на СИСТЕМА, можете да изпълните тази команда.

psexec -i -d -s regedit.exe

В случай, че се чудите, да, това ще ви даде достъп до много неща, които обикновено не бихте имали достъп за редактиране в системния регистър. И да, това е наистина лоша идея.

Изпълнение на пълен команден ред чрез PsExec

Да, току-що ви показахме всички тези примери как да стартирате една команда през PsExec... и се оказва, че можете да стартирате пълен шел на вашия локален компютър, който всъщност работи на отдалечения компютър. Все едно сте били на конзолата на този сървър (в по-голямата си част). И за щастие, синтаксисът за този е наистина лесен (добавете потребителското име, ако трябва).

psexec \ име на компютър cmd.exe

Реклама

След като направите това, ще имате команден ред, който сега се изпълнява на отдалечения компютър.

Командният ред ще работи почти като нормално, с изключение на това, че завършването на раздела изобщо няма да работи, но това е добре с нас.

Струва си да се отбележи, че ако искате стартирайте командите на PowerShell дистанционно на друг компютър , можете да направите това естествено с някои настройки на конфигурацията. За съжаление PowerShell не работи много добре с PsExec, освен ако не използвате куп странни решения, които не си заслужават.

Други възможности

Командата psexec има много други наистина полезни опции, които можете да използвате - всяка от тях ще се използва в пространството непосредствено след \computername и преди която и да е от другите команди. Така че помислете за psexec \computername -option .

Ако просто изпълните командата psexec от подканата без допълнителни превключватели, ще видите всички тях.

PsFile

Тази команда показва файлове, които в момента са отворени през мрежата на локален компютър или отдалечен компютър, и работи подобно на командата net file на Windows. Синтаксисът е точно като всяка друга команда в комплекта.

psfile \име на компютър

Реклама

Да, този не е толкова забавен като последния.

Ако искате да затворите един от файловете и да изключите човека от ресурса, можете да затворите връзката, като използвате опцията -c, въпреки че това може да доведе до загуба на данни, тъй като файлът не е затворен правилно.

psfile \име на компютър -c

PsGetSid

Това показва идентификатора за защита на компютър или потребител и приема стандартните аргументи. Тази помощна програма вероятно е полезна само в много специфични сценарии, от които лично не сме срещали. Така че опитайте го веднъж и забравете за него, докато не се наложи да го използвате някой ден.

PsInfo

Тази команда изброява много полезна информация за системата, включително времето за работа, което е много забавно. Можете да стартирате този локално, за да го тествате, като просто напишете psinfo в командния ред, като приемем, че вашите инструменти SysInternals са в пътя.

Ако искате да получите много повече информация от PsInfo, а знам, че го правите, тогава можете да използвате следните превключватели, за да добавите информация за диска (-d) и актуални корекции (-h) и списък с инсталирани приложения и техните версии ( -с).

psinfo -d -h -s

Реклама

Това води до много повече информация, дори на почти празна виртуална машина:

Можете също да стартирате PsInfo отдалечено, като добавите името на компютъра и евентуално превключвателите на потребителското име... но има един голям проблем: няма да работи, освен ако услугата за отдалечен регистър не е активирана. Отидете до края на статията, където говорим за това как да го активирате на отдалечения компютър.

PsKill

Тази команда е наистина проста - тя убива процеси, по име или идентификатор и можете да използвате превключвателя -t, за да убиете по избор цялото дърво на процесите.

pskill \ име на компютър

Проблемът с PsKill е, че най-новите версии на Windows имат a много мощна програма за убиване на задачи, вградена направо наречен Taskkill, който има много повече функции.

PsList

Тази помощна програма е изключително проста, но доста удобна за бързо разглеждане на компютър и виждане дали нещо използва твърде много процесор или памет. Можете да посочите името или част от името в командния ред, за да стесните списъка само до проблемно приложение и можете да видите почти цялата информация, включително нишки.

Реклама

Забележка: За да накарате тази помощна програма да работи на отдалечен компютър, ще трябва да активирате услугата за отдалечен регистър. Не забравяйте да прочетете до края на урока, тъй като обясняваме как да се справите с това по-късно.

PsLoggedOn

Тази помощна програма изброява акаунти, които са влезли или на машината, или се свързват отдалечено. Това е доста просто и до голяма степен полезно в среда от тип системен администратор.

PsLogList

Тази помощна програма показва локален или отдалечен дневник на събития в командния ред и има редица опции, които могат да се използват за филтриране на данните.

psloglist \ компютърна система

Има също опции -h, -d и -m, които ви позволяват да стесните списъка със събития само до последните x часа, дни или минути. Опцията -n показва списъка x записи, докато ключът -r обръща реда, така че най-новите записи ще бъдат в долната част на изхода. Последната опция, която сме задали на Система в този пример, всъщност не е необходима - ако я пропуснете, системният дневник винаги ще бъде изтеглен, но можете да го промените на Приложение или Защита, за да изтеглите тези регистрационни файлове вместо това.

Струва си да се отбележи, че ако имате администраторски достъп до другия компютър, можете просто да отворите Event Viewer и да изберете Свързване от менюто Действие. Въведете името на компютъра в списъка, променете идентификационните данни, ако е необходимо, и по този начин осъществете достъп до регистрационните файлове на събитията.

Единственият сценарий, при който наистина можем да видим, че PsLogList е наистина полезен, е ако искате да скриптирате нещо, за да извършите действие в случай на определени съобщения в регистъра на събитията.

PsPasswd

Тази помощна програма ви позволява да променяте паролите за потребители, както локални, така и отдалечени. Синтаксисът е същият като всичко останало:

pspasswd \computer -u Потребител -p Парола

Реклама

Предимството на тази помощна програма пред простото използване на NET USER от обикновения команден ред е, че можете да променяте пароли за няколко компютъра наведнъж и тя работи и в среда на домейн.

PsPing

Тази помощна програма пингува, проверява портовете и прави тестове за забавяне и честотна лента. Доста просто.

psping

Или можете да проверите свързаността към порт, като добавите номера на порта по следния начин:

psping :80

Има много разширени опции за тази команда, които вероятно ще искате да проверите, ако трябва да отстраните неизправности в мрежата.

PsService

Тази помощна програма ви позволява да се справяте с услугите на Windows от командния ред. Наистина е доста лесен за използване - синтаксисът работи по следния начин:

psservice \име на компютър

Списъкът с команди може да бъде намерен, като погледнете помощта /? опции, но има няколко опции, които ще използвате повече от останалите.

  • запитване – Запитва състоянието на услуга
  • config – Запитва конфигурацията
  • setconfig – Задава конфигурацията
  • start – Стартира услуга
  • stop – спира услуга
  • рестартиране – спира и след това рестартира услуга
  • пауза – Поставя на пауза услуга
  • Продължение – Продължава на пауза услуга
  • зависи – изброява услугите, които зависят от посочената
  • find – Търси екземпляр на услуга в мрежата
  • сигурност – Отчита разрешенията за защита, присвоени на услуга
Реклама

По-специално, началото | спре | пауза | рестартиране | Cont опциите са наистина прости и лесни за разбиране. Например в следната команда можете да замените start с някоя от тези други команди.

psservice \име на компютъра начало

Другите опции могат да се използват за запитване на повече информация за услуга или за промяна на конфигурацията.

Забележка: вградената помощна програма sc.exe има много полезни функции, които се припокриват с тази помощна програма. Основната разлика е, че PsService е малко по-удобен за използване.

PsИзключване

Тази помощна програма ви позволява да изключите, да излезете или дори да поставите компютър в режим на заспиване. Проблемът е, че не е по-добър от вградената помощна програма shutdown.exe и всъщност е проектиран за Windows XP, така че в повечето случаи се препоръчва да използвате вградената помощна програма.

Единствената опция, която PsShutdown предоставя и която не можете да получите по друг начин, е превключвателят (-d), за да поставите компютъра в режим на заспиване, което може да бъде удобно.

psshutdown \име на компютър -d

Можете също да използвате опцията -h, за да поставите компютъра в режим на хибернация вместо това.

PsSuspend

Тази помощна програма е много подобна на PsKill, но прави нещо, което вградената помощна програма Taskkill просто не може - можете да преустановите процесите, вместо да ги убивате, което може да бъде много удобно, ако искате временно да спрете процес с интензивен процесор от работи, докато изпълнявате задача на системния администратор.

Спирането на процес е изключително лесно:

pssuspend \компютър

Реклама

И възобновяването на този процес е също толкова лесно - всичко, което трябва да направите, е да добавите превключвателя -r.

pssuspend \computer -r

Когато помощните програми няма да се свържат поради отдалечен регистър

Някои от тези помощни програми, включително PsInfo, PsList, PsLogList и PsLoggedOn, изискват услугата за отдалечен регистър да бъде активирана на отдалечения компютър и тя не е активирана по подразбиране в съвременните версии на Windows.

Добрата новина е, че този проблем е лесно поправим и не е нужно да оставяте отдалечения регистър активиран. Просто изпълнете тази команда с помощта на PsService, за да стартирате услугата:

psservice \computername start RemoteRegistry

И след това, когато приключите с всичко, което правите с PsInfo или PsList, можете да спрете услугата отново, като използвате тази команда:

psservice \име на компютър стоп RemoteRegistry

Простите решения са най-добрите, нали?

Следващ урок

Не забравяйте да се присъедините към нас утре, когато ще разгледаме помощните програми за файлове и диск и някои по-интересни неща.

ПРОЧЕТЕТЕ СЛЕДВАЩО Снимка на профила за Lowell Heddings Лоуел Хедингс
Лоуел е основател и главен изпълнителен директор на How-To Geek. Той ръководи шоуто от създаването на сайта през 2006 г. През последното десетилетие Лоуъл лично е написал повече от 1000 статии, които са били разгледани от над 250 милиона души. Преди да започне How-To Geek, Лоуел прекара 15 години в ИТ, като се занимава с консултации, киберсигурност, управление на бази данни и програмиране.
Прочетете пълната биография

Интересни Статии