ПредишенСледващото

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

АРУБА НЕЗАБАВЕН WI-FI: прост, мощен и достъпни

Когато започнах да използвам PowerShell, аз увлякъл отбор Get-Service, и забелязах, че го има параметър -ComputerName. Означава ли това, че можете да се свържете с услугата и от други компютри? След серия от експерименти, аз открих, че това е само това, което казва. Заинтересувах се и започна да се оглеждат за други възможности -ComputerName отбори. И разочаровани, когато се оказа, че има само няколко.

PowerShell осигурява два вида Remoting: Remoting 12:59 (1: 1) и отдалечен достъп един до няколко (1: п). Преди да говорим за тях, искам да обясня някои от основните неща.

Основи на отдалечен достъп в PowerShell

Всички PowerShell команди правят обектите като изход. Когато стартирате команда от разстояние, е необходимо да се изходни данни, за да поставят във форма, която може лесно да се пренася по мрежата с помощта на HTTP или HTTPS. Така че, PowerShell автоматично конвертира изходните обекти в XML файлове, които се изпращат по мрежата. Достигането на компютъра си, те се превръщат отново в обекти, които могат да работят PowerShell. Въпреки това, тези отново се преобразуват обекти са всъщност снимки. Те не могат да се подновяват всяка минута. По този начин, ако трябва да се достигне до обектите, които са процеси, които се изпълняват на отдалечения компютър, тогава резултатът ще бъде вярна само за определен период от време, през който са генерирани тези обекти. Стойности, като например използването на паметта и процесора няма да се променят. Още повече, че няма да се върна конвертираните обекти да направят нищо. Например, не можете да поръчате на проекта, за да се спре. Това е основен ограничаване на дистанционното взаимодействие, но това няма да ви пречи да работи, и да изпълняват интересни задачи.

Има няколко основни изисквания за използване на отдалечен достъп система.

  • Като вашия компютър (известен също като локалния компютър), и един от тези, които искате да изпратите команда (известен също като отдалечен компютър), трябва да се работи с Windows PowerShell 2.0? Windows XP е по-стара версия на Windows, на която можете да инсталирате PowerShell 2.0. По този начин, старата версия също може да участва в сесията за отдалечен.
  • В идеалния случай, локални и отдалечени компютри трябва да са членове на една и съща област или членове на доверени / доверявайки домейни. С отдалечен достъп система може да работи извън областта, но това е трудно, и тук аз няма да говоря за това. За да научите повече за този сценарий, вижте раздела PowerShell Помощ, която се отнася до Remote_Troubleshooting.

Преглед WinRM

Сега идва WinRM, защото трябва да настроите конфигурацията на услугата, да тече на отдалечен достъп. За пореден път, само трябва да се уточни за отдалечен достъп настройки и WinRM PowerShell на отдалечен компютър. В повечето среди, в които съм работил, администраторите активирани за отдалечен система на всеки компютър, работещ с версия на XP или по-нова. Това дава възможност да се проникне настолни и преносими компютри незабелязани, които могат да бъдат много полезни (това означава, че потребителите на такива компютри няма да знаят какво правите).

Най-лесният начин да постигнем и двете цели е PowerShell Изпълнявай като администратор и да изпълни отбор Enable-PSRemoting. Можете да видите ръководството на другия отбор, който се нарича Set-WSManQuickConfig. Не е необходимо да се изпълнява командата. Това ще направи за вас Enable-PSRemoting, а също така изпълнява няколко стъпки, които са необходими, за да се установи дистанционно взаимодействие и работа. По същество, Enable-PSRemoting команда стартира услугата WinRM, определя неговата настройка, за да се стартира автоматично регистрира PowerShell като крайна точка, а дори и зададете изключение на защитната стена на Windows, за да се позволи входящо WinRM трафик.

WinRM 2.0 (който се прилага PowerShell) по подразбиране се използва TCP порт 5985 за HTTP и порт 5986 за HTTPS. Това гарантира, че WinRM не е в противоречие с локално инсталирани уеб сървъри са конфигурирани да слушате на портове 80 и 443. Можете да определите конфигурацията на WinRM да използват алтернативни пристанища, но аз не го препоръчвам. ATE оставите тези пристанища, всички отдалечени команди за достъп PowerShell ще работят нормално. Ако промените тези пристанища, ще трябва винаги да посочите алтернативно пристанище, когато работи команда за отдалечен достъп. Това означава, че вие ​​ще имате повече време за отпечатване. Ако сте абсолютно трябва да се промени на пристанището, можете да въведете командата:

Цифри 1234 показват, пристанището, което искате. Ето, тази команда е писано в няколко реда, но трябва да го въведете на един ред. Същото важи и за всички други команди, описани в статията. Ако искате да използвате HTTPS вместо HTTP, можете да промените тази команда, за да изберете новия HTTPS порт. Трябва да призная, че има начин да попитам WinRM конфигурация на локалния компютър да използват алтернативни пристанища по подразбиране. По този начин, не е нужно постоянно да се определи алтернативен порт, когато стартирате дистанционна команда за достъп. Но нека да се работи с настройките по подразбиране, определени от Microsoft.

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

Remoting 1: 1

Използване на отдалечен достъп 1: 1, може по същество да има достъп до командния ред на отдалечен компютър. Всички команди, които ви дават, управлявани директно на отдалечения компютър, и ще видите резултатите в прозореца на командния ред. Отчасти това е подобно на използването на връзка с отдалечен работен плот, освен, че са ограничени до PowerShell командния ред на околната среда. PowerShell за отдалечен система използва част от средствата, които се изискват от Remote Desktop, така че има много по-ниско въздействие върху вашите сървъри.

За да инсталирате 1: 1 връзка с отдалечен компютър, наречен сървър-R2, трябва да стартирате

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

Част от [сървър-R2] ви уведомява, че всичко, което правите случва на сървър-R2. След това можете да стартирате всяка команда, какво искате. Можете дори да импортирате всички модули и добавяне на разширения PowerShell (PSSnapins), който ще се намира на отдалечен компютър.

Дори и резолюцията ще остане същата. Вашето копие на PowerShell ще работи със същата означение за сигурност, с които тя работи. PowerShell прави това с помощта на Kerberos, следователно, не може да се прехвърля потребителско име и парола по мрежата. Всяка команда, която се изпълнява на отдалечен компютър, ще се проведе под пълномощията си, така че всичко да изпълнява това, което имате разрешение, вие ще бъдете в състояние да направи. Това е подобно на регистрацията директно от компютъра, има използва копие от PowerShell на компютъра. Това е почти вярно. Ето няколко разлики.

  • Ако имате PowerShell скрипт за вашия профил на отдалечената машина, тя няма да се изпълнява, когато се свържете с помощта на система за комутируема. Казано по-просто, профилите са пакет от команди, които се изпълняват автоматично всеки път, когато отворите прозореца на командния ред. Те се използват за автоматично зареждане на разширения, модули и други подобни.
  • Можете да се ограничават до политика Политика за изпълнение на отдалечения компютър. Например, за правилото е зададено на вашия компютър RemoteSigned, така че да може да работи с неподписани местните скриптове. Ако политиката на отдалечения компютър е настроен на Ограничен (настройка по подразбиране), тя няма да позволи на всички скриптове, за да се движат, когато взаимодействате дистанционно.

Много PowerShell команди са по двойки: един прави нещо, а другата - точно обратното на това. В нашия случай, Enter-PSSession ви свързва с отдалечен компютър и Изход-PSSession затваря връзката. Exit-PSSession не се нуждае от никакви параметри. След стартиране на отдалечена връзка е затворен, и покана да си Command Prompt прозорец се връща към нормален изглед. Какво става, ако сте пропуснали да тече Exit-PSSession? Не се притеснявайте. PowerShell и WinRM в състояние да разбера какво си направил, и ако е необходимо, в близост дистанционна връзка.

Искам да дам един съвет. Когато се свържете към отдалечен компютър, не се движат по него Въведете-PSSession за толкова дълго, колкото не е напълно наясно с това, което правиш. За пример, на който работите ComputerA. Вие се свържете със сървър-R2. В PowerShell ред, пуснете

Сега Сървър-R2 съдържа отворена връзка към сървър-DC4. Това създава "отдалечен достъп верига", която е трудно да се проследи. Освен това, вашите сървъри са претоварени ненужно. Може да има моменти, когато ще трябва да го направят (например сървър-DC4 е зад защитна стена и не можете да получите директен достъп до него, така че като посредник ще трябва да използвате сървър-R2). Въпреки това, общото правило е следното: опитват да избегнат Remoting вериги.

Remoting 1: N

Един от най-интересните неща в PowerShell - е Remoting 1: п. Тя ви позволява да изпраща команди към няколко отдалечени компютри едновременно - пълномащабен разпределени изчисления. Всеки компютър индивидуално, за да изпълните командата и ще Ви изпратим резултатите. Всичко е направено с помощта на Invoke-Command команда в следния вид:

Екип от външни скоби е изпратено до всички три отдалечен компютър. По подразбиране, PowerShell може да се говори за 32 компютъра едновременно. Ако посочите повече от 32 компютъра, те ще чака на опашка. След това, когато компютърът е изключен, екипът изпълнява следващия. Ако имате мрежа наистина висока скорост и мощни компютри, можете да се увеличи броят използва параметърът ThrottleLimit екип. Прочетете как да използвате този параметър в Invoke, управление, можете да на помощната страница.

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

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

Сега се съсредоточи върху параметър името на компютъра на. В примера на Invoke-Command код имах списък от имена на компютри, разделени със запетаи. Ако имате много компютри, може да не искате да отпечатате имената си всеки път, когато се свържете с тях. Вместо това можете да създадете текстов файл, който съдържа едно име в една и съща линия на вашия компютър, без запетаи, кавички, или нещо друго. Например, ако вашият текстов файл с име webservers.txt, трябва да използвате следния код:

Скоби сила PowerShell за извършване на първата команда Get-съдържание - това е подобно на това как скобите по математика. След това резултатите от Get-съдържание, инвестирани в -ComputerName опция.

Възможно е също така искане за името на компютъра в Active Directory, но това е по-трудно. За да намерите на компютъра, можете да използвате Get-ADComputer, но не поставите тази команда в скоби, както направихме в Get-съдържанието. Защо не? Get-Content извежда обикновен текстов стринг, а Get-ADComputer произвежда "компютър" тип обекти. -ComputerName параметър очаква низ. Ако той е трябвало да получи обекти "компютър", вие няма да знае какво да прави с тях. Затова, ако искате да използвате Get-ADComputer, което трябва да получи стойността на имота Наименование на компютърни обекти. Ето как:

В скоби компютърни обекти са преминали команда Select-Object и параметър разширяват се използват за определяне на Име собственост на компютър обекта. Резултатът от израза в скоби - е набор от имена на компютъра, а не на компютърни обекти. Компютърни имена - това е точно това, което ви трябва параметър -Computer Name.

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

Има и още нещо!

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

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

Remoting сесията се затваря автоматично, когато затворите шела, но този път, те могат да отнеме малко повече памет и CPU време на локални и отдалечени системи. За да ги затворят точно, можете да използвате за премахване-PSSession:

Когато трябва да се отвори отново от сесията, можете да използвате командата Invoke-Command:

Или можете да използвате Въведете-PSSession:

Имайте предвид, че в Remoting код Въведете-PSSession само една сесия се отваря отново. Променлива индекс 1 според PowerShell, така че трябва да се отвори отново от сесията с компютър, наречен Two (индекс тече от нула).

Както можем да видим, ползите от PowerShell Remoting много. Ако го използвате, ще видите колко ще разшири хоризонтите на вашия бизнес.

Сподели снимки с приятели и колеги

Свързани статии

Подкрепете проекта - споделете линка, благодаря!