Powershell програмыг алсаас эхлүүлэх. PowerShell-д алсын удирдлагыг танилцуулж байна – Хөөе, скрипт бичдэг залуу! Блог. ямар ялгаа байна

PowerShell ашиглан алсын удирдлага

Алсын компьютертэй ажиллах хэд хэдэн арга байдаг. VBScript-д өргөн хэрэглэгддэг Windows Management Instrumentation (WMI) байдаг. Sysinternals гэх мэт алсын удирдлагатай янз бүрийн хэрэгслүүд байдаг. Олон PowerShell командууд хүртэл алсын компьютер дээр ажиллах ComputerName параметртэй байдаг.

Ерөнхийдөө маш олон арга байдаг боловч тус бүр өөрийн гэсэн сул талуудтай байдаг. Нэгдүгээрт, андуурахад хялбар өөр өөр синтакс байдаг. Хоёрдугаарт, зарим тушаалууд нь дотоод эсвэл алсаас хэрэгжсэн эсэхээс хамаарч өөр өөр ажилладаг. Эцэст нь хэлэхэд, харилцаа холбоо нь галт хананд нэмэлт порт нээх шаардлагатай байж магадгүй бөгөөд энэ нь аюулгүй байдлын үүднээс тийм ч сайн биш юм.

PowerShell Remotingтайлбарласан ихэнх асуудлыг шийддэг. Энэ нь Microsoft-ын протоколын хэрэгжилт дээр суурилдаг Вэб үйлчилгээУдирдлагын (WS-Management) зориулагдсан бөгөөд харилцаа холбооны үйлчилгээ (WinRM) ашигладаг. Компьютер хоорондын харилцааг HTTP (анхдагч) эсвэл HTTPS ашиглан гүйцэтгэдэг. Хоёр компьютерийн хоорондох бүх урсгал протоколын түвшинд шифрлэгдсэн байдаг (SSL ашиглахаас бусад). NTLM болон Kerberos зэрэг хэд хэдэн баталгаажуулалтын аргуудыг дэмждэг.

Төрөл бүрийн програм хангамжийн интерфейсийг ашигладаг хэрэгслүүдээс ялгаатай нь PS Remoting нь дараах байдлаар ажилладаг: локал компьютер дээр оруулсан тушаалуудыг алсын компьютер руу илгээж, тэнд ажиллуулж, үр дүнг буцааж илгээдэг. Бүх тушаалуудыг дотооддоо гүйцэтгэдэг тул нийцтэй байдлын талаар санаа зовох шаардлагагүй болно. Үүнээс гадна, PS Remoting нь зөвхөн нэгийг шаарддаг нээлттэй портгалт хананд.

PowerShell Remoting ашиглан удирдах хэд хэдэн арга байдаг.

Ганцаарчилсан хяналт

Алсын удирдлагатай байх хамгийн хялбар арга бол алсын сессийг интерактив байдлаар нээж, түүнд шаардлагатай үйлдлүүдийг хийх явдал юм. Жишээлбэл, SRV4 компьютер дээр сесс нээж, хэвлэх үйлчилгээг дахин эхлүүлье:

Enter-PSSession -ComputerName SRV4
Дахин эхлүүлэх-Үйлчилгээ - Нэр түр хадгалагч

Үйлчилгээний статусыг хараад алсын сессийг хаацгаая:

Get-Service - Нэрийн түр хадгалагч
Гарах-PSSession

Интерактив ажил нь алсаас удирдах энгийн даалгавруудыг шийдвэрлэхэд тохиромжтой. Хэрэв та үйл явцыг автоматжуулах шаардлагатай бол Invoke-Command командыг ашиглах нь дээр. Үүнтэй ижил зүйлийг хийхийн тулд та үүнийг хэрхэн ашиглаж болно:

Invoke-Command -ScriptBlock (Restar-Service spoler) -ComputerName SRV4

Энэ тушаал нь SRV4 дээр алсын сессийг нээж, -ScriptBlock параметрт заасан командын блокыг ажиллуулж, сессийг хаах болно. Мөн даалгавраа дуусгахын тулд дэвсгэр, та нэмэлтээр -AsJob параметрийг зааж өгч болно.

PowerShell нь далд ажиллаж байх үед ямар ч үр дүн гарахгүй гэдгийг анхаарна уу. Үүнийг авахын тулд та Receive-Ob командлетыг ашиглах хэрэгтэй болно.

Зөвхөн хэд хэдэн команд төдийгүй зарим төрлийн скриптийг гүйцэтгэхийн тулд Invoke-Command нь –FilePath параметртэй бөгөөд скрипт файлыг тодорхойлоход –ScriptBlock-ийн оронд ашиглаж болно. Жишээлбэл, би зогсоосон үйлчилгээний жагсаалтыг харуулсан скрипт үүсгэж, SRV4 алсын төхөөрөмж дээр ажиллуулсан:

Invoke-Command -FilePath .\script.ps1 -ComputerName SRV4

Нэгээс олон менежмент

Ихэнхдээ нэг ажлыг хэд хэдэн компьютер дээр зэрэгцүүлэн гүйцэтгэх шаардлага гардаг. Үүнийг ижил Invoke-Command ашиглан хялбархан хийж болно. Жишээлбэл, компьютерийн нэрийг таслалаар тусгаарлаж болно.

Invoke-Command -ScriptBlock (Дахин эхлүүлэх-Үйлчилгээний түр хамгаалагч) -Компьютерийн нэр SRV4,SRV5

Хувьсагчид байрлуулах:

$servers = @(″SRV1″,″SRV2″,″SRV3″)
Invoke-Command -ScriptBlock (Дахин эхлүүлэх-Үйлчилгээний түр хадгалагч) -ComputerName $серверүүд

Эсвэл файлаас авна уу:

Invoke-Command -ScriptBlock (Дахин эхлүүлэх-Үйлчилгээний түр хадгалагч) -КомпьютерийнНэр`
(Get-Content.\servers.txt)

Жич: Invoke-Command нь ThrottleLimit параметртэй бөгөөд нэгэн зэрэг удирдах боломжтой компьютерийн дээд хэмжээг хязгаарладаг. Анхдагчаар энэ тохиргоо нь 32. Шаардлагатай тохиолдолд та үүнийг өөрчилж болно, гэхдээ энэ тохиргоог нэмэгдүүлснээр таны компьютерийн процессор болон санах ойн ачаалал нэмэгдэх тул энэ үйлдлийг маш болгоомжтой хийх хэрэгтэй гэдгийг анхаарна уу.

Хурал

Дуудах командыг гүйцэтгэх бүрд шинэ сесс үүсгэгддэг бөгөөд үүнийг үүсгэхэд цаг хугацаа, нөөц зардал шаардагдана. Үүнээс зайлсхийхийн тулд бид бүх командыг гүйцэтгэх нэг сесс нээж болно. Жишээлбэл, SRV4 компьютер дээр SRV4 нэртэй сессийг нээж, $session хувьсагч дээр байрлуулж, дараа нь энэ сесс дэх даалгавраа гүйцэтгэе (удаан тэвчсэн түр зуурагчийг зогсоо):

$session = Шинэ-PSSession -ComputerName SRV4 -Нэр SRV4
Invoke-Command -ScriptBlock (Үйлчилгээг авах түр хадгалагч | Stop-Service)`
-$session

Биднийг PowerShell консолоос гарах хүртэл сесс идэвхтэй хэвээр байх болно. Та мөн сессийг хааж болно - Disconnect-PSSession эсвэл устгах - Remove-PSSession .

Тэгээд одоо цөөхөн сонирхолтой боломжууд, PowerShell 3.0-д нэвтрүүлсэн. Хэрэв өмнө нь сессээс гарах эсвэл консолыг хаах үед сесс устгагдсан байсан бол PS 3.0-д хаагдсан үед сесс төлөвт шилждэг. салгагдсан. Бид ижил (эсвэл өөр) компьютер дээр шинэ сесс нээж, энэ салгагдсан сесс дотор тушаалыг шууд гүйцэтгэж болно. Жишээлбэл, SRV4 компьютер дээр хамгийн сүүлд зогссон хэвлэх үйлчилгээг эхлүүлье.

Invoke-Command -ScriptBlock (Start-Service Spooler)`
-Компьютерийн нэр SRV4 - Салгасан

Салгасан сессийг ашиглах өөр нэг тохиолдол бол цаг хугацаа шаардсан ажлуудыг гүйцэтгэх явдал юм. Жишээлбэл, SRV4 дээр LongJob нэртэй сессийг нээж, 1 минутын зайтай үйлчилгээний жагсаалтыг харуулах суурь ажлыг ажиллуулъя:

$session = New-PSSession -ComputerName SRV4 -Нэр LongJob
Invoke-Command -Session $session -ScriptBlock`
(Үйлчилгээ авах | foreach ($_;sleep 60) ) -AsJob

Даалгавар хэрхэн хийгдэж байгааг хараад сессийг хаацгаая.

Хүлээн авах-Ажлыг -Нэр ажил2
Disconnect-PSSession $session

Бид өөр компьютер руу очоод консолыг нээж, LongJob сесс руу холбогдож, Receive-PSSession командыг ашиглан даалгаврын үр дүнг авна.

Connect-PSSession -Нэр LongJob -ComputerName SRV4
Receive-PSSession -LongJob гэж нэрлэнэ үү

Эсвэл Connect-PSSession ашиглан сессэд шууд холбогдохгүйгээр өөр сонголт:

$session = Get-PSSession -Нэр LongJob -ComputerName SRV4
$job = Receive-PSSession $session -OutTarget Job
Хүлээн авах-Ажлын $ ажил

Жич:Үр дүн нь системд үлдэхийн тулд Receive-Job-г -Keep параметрээр ашиглах ёстой.

Далд алсын удирдлага

Бас нэг хөөрхөн стандарт бус аргаалсын удирдлага - далд алсын удирдлага (Implicit remoting). Үүнийг ашигласнаар та алсын сесс үүсгэхгүйгээр дээр байрлах командлетуудыг дотооддоо ажиллуулж болно алсын компьютер.

Жишээлбэл, ердийн зүйлийг авч үзье ажлын станц,гүйгээр байгуулагдсан сангуудалсын удирдлага. Бид SRV4 домэйн хянагчтай алсын сесс үүсгэж, Active Directory модулийг энэ сесс рүү импортлодог.

$session = Шинэ-PSSession -ComputerName SRV4
Invoke-Command (Импорт-Модулын ActiveDirectory) -Session $session

Дараа нь бид алсын сессээс Active Directory командлетуудыг экспортлож, локал RemoteAD модульд байрлуулна.

Экспорт-PSSession -Session $session -CommandName *-AD* -OutputModule RemoteAD`
-Clobber-ийг зөвшөөр

Энэ тушаалыг WindowsPowerShell\Modules\RemoteAD хавтсанд үүсгэнэ шинэ модуль PowerShell. Зөвхөн *-AD* загварт тохирох нэртэй командлетууд ачаалагдах болно. Гэсэн хэдий ч, командууд нь өөрөө локал компьютерт хуулж авдаггүй. Орон нутгийн модуль нь товчлолын үүрэг гүйцэтгэдэг бөгөөд тушаалууд нь өөрөө алсын домэйн хянагч дээр биелэгдэх болно.

Модуль үүсгэсний дараа алсын сессийг хааж болно;

Шинэ модулийг одоогийн сесс рүү импортлох (PS 3.0 дээр та энэ алхамыг алгасаж болно):

Import-Module RemoteAD

Одоо анхаарлаа хандуулаарай - бид командууд байрладаг домэйн хянагчтай алсын сесс нээхгүй байна. Энэ сессийг тодорхой эхлүүлэх шаардлагагүй - үүнийг хийж болно далд хэлбэрээралсын командуудыг ажиллуулахыг оролдох замаар:

Шинэ-ADUser -Нэр БиллГейтс -Компани Майкрософт
Get-ADUser BillGates

Энэ нь сэргээх болно алсын холболтдомэйн хянагч руу, дараа нь тушаалыг домэйн хянагч руу дамжуулж, тэнд гүйцэтгэнэ. Гүйцэтгэлийн үр дүнг XML-д цувуулж, сүлжээгээр локал компьютер руу илгээж, PowerShell-ийн ажиллах боломжтой объектууд руу цуваа салгах болно.

Та консолыг хаах эсвэл RemoteAD модулийг арилгах хүртэл алсын сесс идэвхтэй хэвээр байх болно.

Далд алсын удирдлага нь алсын компьютер дээр командлетуудыг локал машин дээр суулгасантай ижил аргаар ажиллах боломжийг танд олгоно. Үүний зэрэгцээ шаардлагатай бүх командууд үргэлж бэлэн байдаг бөгөөд энэ нь маш тохиромжтой.

Дүгнэж хэлэхэд би үүнийг хэлье одоогоор PowerShell Remoting нь Windows үйлдлийн системийг алсаас удирдах үндсэн хэрэгсэл юм. Тиймээс ямар ч Windows администратор түүний чадавхийг мэдэж, тэдгээрийг ашиглах чадвартай байх шаардлагатай.

Үргэлжлэл: Танилцаж байна алсын удирдлагаВ Windows PowerShell.

Weekend Scripter: Windows-ийн алсын удирдлагатай болгох.

Microsoft Scripting Guy, Эд Вилсон энд байна. Өнөөдөр би Microsoft Press-ээс гаргасан Windows PowerShell 3.0 алхам алхмаар шинэ номынхоо хэсгийг нийтлэх гэж байна. Энэ номыг урьдчилан захиалах боломжтой боллоо.

WinRM - Windows алсын удирдлага

IN Windows сервер 2012 WinRM нь алсаас гүйцэтгэх ажиллагааг дэмжихийн тулд анхдагчаар ажилладаг Windows командууд PowerShell. WinRM нь Microsoft-ын салбарын стандарт WS-Удирдлагын протоколын хэрэгжилт юм. Тиймээс WinRM нь хангадаг тохиромжтой аргагалт ханын тохиргооны шаардлагын үүднээс алсын системд хандах. Энэ бол шинэ CIM командлетуудын ашигладаг механизм юм. Ингэснээр та хүссэн үедээ ажиллаж байгаа Windows Server 2012 машинтай холбогдож командуудыг ажиллуулах эсвэл интерактив програмыг нээх боломжтой. Windows консол PowerShell. Харин Windows 8 дээр WinRM анхдагчаар идэвхгүй байна. Энэ нь таны хийх ёстой хамгийн эхний зүйл бол cmdlet-г ажиллуулах явдал юм Идэвхжүүлэх-PSRemoting. Энэ командлетыг ажиллуулах үед дараах алхмууд хийгдэнэ.

1. WinRM үйлчилгээг эхлүүлсэн эсвэл дахин эхлүүлсэн.

2. WinRM үйлчилгээг эхлүүлэх төрлийг автоматаар тохируулсан.

3. Бүх IP хаягуудын холболтыг хүлээн авах сонсогчийг үүсгэсэн.

4. WS-Man траффикийн галт ханын хаалт идэвхжсэн.

5. Microsoft.powershell тохиргоо идэвхжсэн

6. Microsoft.powershell.workflow тохиргоо идэвхжсэн

7. Microsoft.powershell32 тохиргоо идэвхжсэн

Энэ процессын явцад функц нь үйлдэл бүрийг баталгаажуулахыг хүсдэг. Хэрэв та функц нь юу хийдэг талаар сайн мэддэг бөгөөд түүний ажиллах горимд ямар нэгэн өөрчлөлт оруулах бодолгүй байгаа бол шилжүүлэгчээр энэ тушаалыг ажиллуулж болно. - ХүчЭнэ тохиолдолд баталгаажуулах сануулга харагдахгүй. Энэ командын синтаксийг доор өгөв.

Идэвхжүүлэх-PSRemoting - Хүч

Энд бүх гаралтын мэдээллийг багтаасан Enable-PSRemoting функцийг интерактив байдлаар ашиглах жишээ энд байна.

PS C:\>Идэвхжүүлэх-PSRemoting

WinRM хурдан тохиргоо

Windows Remote Management (WinRM) үйлчилгээг ашиглан энэ компьютерийг алсаас удирдахыг идэвхжүүлэхийн тулд "Set-WSManQuickConfig" командыг ажиллуулж байна. Үүнд:

1. WinRM үйлчилгээг эхлүүлэх эсвэл дахин эхлүүлэх (хэрэв аль хэдийн эхэлсэн бол).

2. WinRM үйлчилгээг эхлүүлэх төрлийг Автомат болгож тохируулах

3. Аливаа IP хаяг дээрх хүсэлтийг хүлээн авах сонсогч үүсгэх

4. WS-Management урсгалын хувьд Windows Firewall дотогшоо дүрмийн үл хамаарах зүйлсийг идэвхжүүлж байна (зөвхөн http-д).

Та үргэлжлүүлэхийг хүсч байна уу?

WinRM хүсэлт хүлээн авахаар шинэчлэгдсэн.

WinRM үйлчилгээний төрөл амжилттай өөрчлөгдсөн.

WinRM үйлчилгээ эхэлсэн.

WinRM алсын удирдлагад зориулж шинэчлэгдсэн.

Энэ машин дээрх дурын IP-д WS-Man хүсэлтийг хүлээн авахын тулд HTTP://* дээр WinRM сонсогч үүсгэсэн.

WinRM галт ханын онцгой тохиолдол идэвхжсэн.

microsoft.powershell SDDL:

[Y] Тийм [A] Бүгдэд Тийм [N] Үгүй [L] Бүгдэд Үгүй [S] Түдгэлзүүлэх [?] Тусламж (өгөгдмөл нь “Y”):y

Та энэ үйлдлийг гүйцэтгэхдээ итгэлтэй байна уу?

Зорилтот "Нэр" дээр "Set-PSSessionConfiguration" үйлдлийг гүйцэтгэж байна:

microsoft.powershell.workflow SDDL:

O:NSG:МУУ:P(A;;GA;;;BA)(A;;GA;;RM)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;; WD). Энэ болно

сонгосон хэрэглэгчдэд энэ компьютер дээр Windows PowerShell командуудыг алсаас ажиллуулахыг зөвшөөрнө үү."

[Y] Тийм [A] Бүгдэд Тийм [N] Үгүй [L] Бүгдэд Үгүй [S] Түдгэлзүүлэх [?] Тусламж (өгөгдмөл нь “Y”):y

Та энэ үйлдлийг гүйцэтгэхдээ итгэлтэй байна уу?

Зорилтот "Нэр" дээр "Set-PSSessionConfiguration" үйлдлийг гүйцэтгэж байна:

microsoft.powershell32 SDDL:

O:NSG:МУУ:P(A;;GA;;;BA)(A;;GA;;RM)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;; WD). Энэ болно

сонгосон хэрэглэгчдэд энэ компьютер дээр Windows PowerShell командуудыг алсаас ажиллуулахыг зөвшөөрнө үү."

[Y] Тийм [A] Бүгдэд Тийм [N] Үгүй [L] Бүгдэд Үгүй [S] Түдгэлзүүлэх [?] Тусламж (өгөгдмөл нь “Y”):y

Тохиргоог хийж дууссаны дараа та cmdlet ашиглан WinRM-ийн ажиллагааг шалгаж болно Туршилт-WSMan. Хэрэв системийг зөв тохируулсан бол дараахтай төстэй мэдээлэл гарч ирнэ.

PS C:\>Test-WSMan -ComputerName w8c504

Бүтээгдэхүүний хувилбар: үйлдлийн систем: 0.0.0 SP: 0.0 стек: 3.0

Энэхүү командлет нь Windows PowerShell 2.0 үйлдлийн системтэй компьютерт бас ажилладаг. Доорх жишээ нь Windows Server 2008 дээрх домэйн хянагч руу илгээсэн хүсэлтийг харуулж байна суулгасан Windows WinRM-г тохируулсан PowerShell 2.0.

PS C:\>Test-WSMan -ComputerName dc1

wsmid: http://schemas.dmtf.org/wbem/wsman/identity/1/wsmanidentity.xsd

Протоколын хувилбар: http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd

Бүтээгдэхүүн нийлүүлэгч: Microsoft корпораци

Бүтээгдэхүүний хувилбар: үйлдлийн систем: 0.0.0 SP: 0.0 стек: 2.0

Хэрэв WinRM тохируулагдаагүй бол алдааны мэдэгдлийг буцаана. Мэс заслын өрөөнд байгаа тохиолдолд Windows системүүд 8, мессеж дараах байдлаар байх болно.

PS C:\> Test-WSMan -ComputerName w8c10

Туршилт-WSMan:

xmlns:f=”http: //schemas.microsoft.com/wbem/wsman/1/wsmanfault” Code=”2150859046″

Machine=»w8c504.iammred.net»>WinRM үйлдлийг гүйцээж чадахгүй байна. Баталгаажуулах

заасан компьютерийн нэр хүчинтэй байгаа эсэх, компьютер дээр нэвтрэх боломжтой

сүлжээ, мөн WinRM үйлчилгээнд зориулсан галт ханын үл хамаарах зүйл идэвхжсэн бөгөөд үүнийг зөвшөөрдөг

энэ компьютерээс хандах. Анхдагч байдлаар, олон нийтэд зориулсан WinRM галт ханын онцгой тохиолдол

Профайл нь нэг дотоод дэд сүлжээнд байгаа алсын компьютерт хандах хандалтыг хязгаарладаг.

Мөр: 1 тэмдэгт: 1

Test-WSMan -Компьютерийн нэр w8c10

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

CategoryInfo: InvalidOperation: (w8c10:String) , InvalidOperationException

FullyQualifiedErrorId: WsManError,Microsoft.WSMan.Management.TestWSManCommand

Enable-PSRemoting командын тусламжтайгаар алсын удирдлагыг идэвхжүүлэх нь Remote Management галт ханын үл хамаарах байдлыг идэвхжүүлдэггүй тул Windows 8 машиныг ping хийх оролдлого амжилтгүй болно гэдгийг санах нь зүйтэй.

PS C:\>ping w8c504

32 байт өгөгдөлтэй w8c504.iammred.net-д ping хийж байна:

Хүсэлтийн хугацаа хэтэрсэн.

Хүсэлтийн хугацаа хэтэрсэн.

Хүсэлтийн хугацаа хэтэрсэн.

Хүсэлтийн хугацаа хэтэрсэн.

192.168.0.56-д зориулсан пинг статистик:

Пакет: Илгээсэн = 4, Хүлээн авсан = 0, Алдагдсан = 4 (100% алдагдал).

Windows Server 2012-ийн хувьд бүх зүйл ажилладаг.

PS C:\>ping w8s504

32 байт өгөгдөлтэй w8s504.iammred.net-д ping хийж байна:

<1ms TTL=128

192.168.0.57-ийн хариу: байт=32 удаа<1ms TTL=128

192.168.0.57-ийн хариу: байт=32 удаа<1ms TTL=128

192.168.0.57-ийн хариу: байт=32 удаа<1ms TTL=128

192.168.0.57-ийн пинг статистик:

Пакет: Илгээсэн = 4, Хүлээн авсан = 4, Алдагдсан = 0 (0% алдагдал),

Ойролцоогоор хоёр талын аялалын хугацаа милли секундээр:

Хамгийн бага = 0мс, Хамгийн их = 0мс, Дундаж = 0мс

Энэ нь WinRM-г идэвхжүүлэхэд зориулагдсан юм.

Эд Вилсон, Майкрософт скрипт бичих залуу

Жинхэнэ:

Энэ нийтлэлд PowerShell 2.0 ашиглан алсаас удирдах сэдвийг дэлгэрэнгүй тайлбарласан болно. Юуны өмнө бид алсаас харилцах үйлчилгээг эхлүүлэх хэрэгтэй.

WinRm үйлчилгээг эхлүүлнэ үү
Алсын удирдлагатай бол PowerShell 2.0 нь Windows 7 болон Windows 2008 R2 дээр анхдагчаар суулгасан WinRM үйлчилгээг ашигладаг. Өмнөх хувилбаруудын хувьд үйлдлийн системҮүнийг нэмэлтээр суулгах шаардлагатай. PowerShell 2.0-ийг суулгах үед заасан үйлчилгээг машин дээр суулгасан болно. WinRM байгаа эсэхийг шалгахын тулд PowerShell 2.0 консолыг ажиллуулаад доторх тушаалыг ажиллуулна уу:
WinRm үйлчилгээ авах
Үр дүн нь дараах байдлаар харагдах болно.

Статусын нэр DisplayName ------ ---- ----------- Winrm Windows Remote Management (WS-Manag...) зогссон.

Таны харж байгаагаар үйлчилгээ байгаа боловч эхлээгүй байна. WinRm-ийг ажиллуулахын тулд та PowerShell 2.0 консолоос администраторын эрх бүхий тушаалыг ажиллуулах ёстой.
Идэвхжүүлэх-PSRemoting
Үйлчилгээний эхлэлийг баталгаажуулахыг хүсэхэд "Y" товчийг дарна уу. Одоо WinRM үйлчилгээ нь "Автоматаар" эхлүүлэх төрлийг оноож байна, өөрөөр хэлбэл. Энэ нь таны компьютерийг эхлүүлэх бүрт ажиллах болно. Enable-PSRemoting команд нь үйлчилгээг эхлүүлж, эхлүүлэх төрлийг өөрчлөхөөс гадна галт ханыг зөв ажиллуулахын тулд зөв тохируулдаг. WinRm үйлчилгээ нь ямар ч IP хаягаас ирсэн хүсэлтийг хүлээн авдаг.

Бид холбогдсон бүх үйлчилгээ үзүүлэгчдийн нэрийг асууж байна:
Get-PSProvider
Таны харж байгаагаар бид WSMan нэртэй өөр үйлчилгээ үзүүлэгчтэй болсон.
Итгэмжлэгдсэн цэгүүдийг оноож байна

PowerShell 2.0 консол дээр администраторын эрх бүхий тушаалуудыг ажиллуулна уу:

Set-Location –Path WSMan: Set-Location –Path localhost\client Get-ChildItem

Анхаарна уу
Эхний командын –Path параметр нь үйлчилгээ үзүүлэгч учраас хоёр цэгийн араас бичигдсэн болохыг анхаарна уу.

Алсын зайнаас ажиллахыг хүссэн компьютер дээрээ энэ машинд ямар сервер холбогдохыг зааж өгөх ёстой. Ийм серверүүдийг "итгэмжлэгдсэн хостууд" гэж нэрлэдэг. Тиймээс, хэрэв та "MyServer" сервер дээр байгаа бол "MyComputer" компьютертэй алсаас ажиллахаасаа өмнө Итгэмжлэгдсэн хостуудыг тохируулах хэрэгтэй. Итгэмжлэгдсэн хостуудыг хуваарилах дараах аргыг компьютер нь Active Directory домэйны хэсэг биш тохиолдолд ашигладаг. Хэрэв компьютер нь Active Directory домэйны нэг хэсэг бол TrustedHosts тохиргоог Бүлгийн Бодлогоор тохируулж болно.

Чухал!
Хэрэв одоогийн лавлахыг WSMan:\localhost\client гэж тохируулаагүй бол доорх тушаал ажиллахгүй (бидний дээр хийсэн командын дуудлагыг харна уу).

Set-Item TrustedHosts *

Та тушаалыг өөр лавлахаас ажиллуулж болно, гэхдээ дараа нь TrustedHosts руу бүрэн замыг зааж өгөх хэрэгтэй:

Set-Item WSMan:\localhost\Client\TrustedHosts *

Баталгаажуулахыг хүсэхэд "Y" товчийг дарна уу.

PowerShell-д TrustedHosts тохиргоонд хийсэн өөрчлөлтүүдийг харахын тулд бид WSMan үйлчилгээг дахин эхлүүлэх хэрэгтэй. Үүнийг дараах тушаалыг ашиглан гүйцэтгэнэ.
Winrm үйлчилгээг дахин эхлүүлэх

Үүнтэй төстэй үйлдлийг DOS-ээс хийж болно. Winrm -? командыг ажиллуулна уу. Та тушаалын ерөнхий тусламжийг харах болно. Одоогийн TrustedHosts утгыг харахын тулд дараах тушаалыг ажиллуулна уу:

winrm winrm/config/client-г авна

мөн утгыг тохируулахын тулд та дараахийг ажиллуулах хэрэгтэй:

winrm тохируулсан winrm/config/client/ @(TrustedHosts="*")

Дээрх тушаалуудад TrustedHosts-ийн хувьд "*" тэмдгийг утга болгон зааж өгсөн боловч та оронд нь тодорхой серверийн нэрийг зааж өгч болно. TrustedHosts-ийг удирдах нь PowerShell-ийн "Get" болон "Set" үйл үгсийг хослуулан ашиглах сонгодог тохиолдол юм: та Get-Item болон Set-Item-ийг ашигладаг.
Алсын PowerShell 2.0 сессийг үүсгэж дуусгах
Доорх командуудад "IpAddress"-ийн оронд хүссэн IP хаягаа, "FQDN"-ийн оронд бүрэн мэргэшсэн домэйн нэрийг зааж өгөх хэрэгтэй.

PSSession IPAddress-ыг оруулна уу

PSSession FQDN-г оруулна уу

Алсын ажлын сессийг дуусгахын тулд дараах тушаалыг ажиллуулна уу:

Enter-PSSession команд нь бүрэн эрхтэй домэйн нэрийг шаарддаг. Жишээлбэл, MyServer.domain.local-ийн хувьд зүгээр л MyServer-ийг зааж өгөх нь ажиллахгүй, гэхдээ IP хаягийг ашиглах нь ийм нөхцөлд үргэлж сайн ажилладаг. PSSession-ийн өөр арга:

New-PSSession -компьютерийн нэр testMachine2 Get-PSSession

Та энэ сессийг дараах байдлаар дуусгаж болно.

Get-PSSession | устгах-PSSession

Хэрэв та алсын зайн ажиллагааг шалгахыг хүсч байгаа боловч хоёрдахь машингүй бол компьютерээсээ өөртэйгөө "алсын холболт" үүсгээрэй. Жишээлбэл, хэрэв таны машин "MyMachine" нэртэй бол дараахыг оролдоно уу:

New-PSSession -компьютерийн нэр MyMachine

Энэ нь танд хачирхалтай бөгөөд логикгүй мэт санагдаж магадгүй ч ийм байдлаар та PowerShell 2.0 дээр алсын зайнаас ажиллах боломжтой хэвээр байна.

Алсын PowerShell 2.0 сесс дээр ажиллаж байна
Алсын холболт үүсгэсний дараа та тушаалын шугамыг PowerShell 2.0 консол дээр ажиллуулж зохион байгуулж болно, гэхдээ үүнтэй зэрэгцэн алсын машин дээр гар дээр байгаа юм шиг, энд биш, тэнд команд бичиж байгаа юм шиг ажиллах болно. . Жишээлбэл, энэ тушаалыг ажиллуулаад үр дүнг харна уу:

Байршлыг тохируулах c:\ | Хүүхэдтэй болох

Энэхүү зааварчилгааны гол зорилго нь танд PowerShell 2.0 алсын холболтын сесс үүсгэхэд тусалж, үүнийг хэрхэн хаахыг харуулах явдал тул алсаас холбогдож байхдаа ямар үйлдлүүдийг хийхээ шийдэх хэрэгтэй болно.

Анхаарна уу
Хэрэв алсын холболтын сессийн үед зарим тушаал ажиллахгүй байна гэж бодож байвал эхлээд өөрийн дотоод төхөөрөмж дээр туршиж үзээрэй.

Таны алсын холболт ажиллаж эхэлмэгц энэ нь танд PowerShell 2.0-г ашиглан сүлжээнд холбогдсон компьютеруудыг удирдах боломжийг олгоно. Та одоо бусад машин дээр скрипт ажиллуулж болно. PowerShell 2.0 дээр олон командлетууд "-computerName" параметрийг дэмждэг боловч алсаас холбогдох нь PSSession бүлгийн командуудыг ашиглахаас гадна Invoke-Command руу залгах боломжийг олгодог (өөрөөр хэлбэл та хүссэн бүхнээ хийж болно).

PowerShell 2.0-тэй алсаас ажиллахад гарсан алдааг олж засварлах

Нэг нийтлэг асуудал бол "Хандалтыг хориглосон" АЛДАА юм.

Шийдэл:
PowerShell 2.0-ийг администраторын эрхээр ажиллуул. "TrustedHosts" тохиргоог * (од тэмдэгт) болгож тохируулсан хоёр машиныг (таны холбогдож байгаа болон холбогдож байгаа машин) туршаад үзээрэй. Энэ сонголт нь хаанаас ч холбогдох боломжийг олгодог гэдгийг санаарай.
WinRm үйлчилгээг дахин эхлүүлэхээ бүү мартаарай, эс тэгвээс "TrustedHosts"-д хийсэн өөрчлөлтүүд хүчин төгөлдөр болохгүй. Үйлчилгээг дахин эхлүүлэхийн тулд PowerShell 2.0 консол дээрх тушаалыг ажиллуулна уу: Restart-Service WinRm
Мөн WSMan үйлчилгээ үзүүлэгчийн нэрийг WinRm үйлчилгээний нэртэй андуурахаас болгоомжил.
Өөр нэг хачирхалтай, гэхдээ заримдаа хэрэгтэй зөвлөгөө: Алсын холболтыг дахин оролдоно уу. Хачирхалтай нь эхний оролдлого дээр ажиллахгүй байж магадгүй ч хоёр, гурав дахь удаагаа ажиллах болно. Тэдгээр. Та тушаалыг дахин ажиллуулах хэрэгтэй: Enter-PSSession -computerName myOtherMachineName

Галт хана, PowerShell 2.0 болон "rpc сервер боломжгүй байна"
Аюулгүй байдлын мэргэжилтнүүд энэ саналд айж, гараа өргөх боловч хэрэв та дээрх алдааг хүлээн авбал хоёр компьютер дээрх галт ханыг идэвхгүй болгохыг зөвлөж байна. Хэрэв бүх зүйлийг идэвхгүй болгосны дараа сайн байгаа бол та 135, 445-р портуудын ашиглалтыг шалгах хэрэгтэй. Галт хананд эдгээр портуудын үл хамаарах зүйлийг тохируулаарай - энэ нь PowerShell 2.0-д алсаас ажиллах боломжийг олгох бөгөөд галт хана нь компьютерийг хамгаалах болно. аюулаас компьютер.

P.S. Enable-PSRemoting команд нь галт ханын тохиргоонд автоматаар өөрчлөлт оруулах ёстой гэдгийг би уншсан боловч миний туршлагаас харахад энэ нь үргэлж тийм байдаггүй.
Бүлгийн бодлогыг ашиглан Windows 8 дээр галт ханыг хэрхэн идэвхгүй болгох талаар уншина уу.

PowerShell 2.0 дээр алсын зайнаас ажиллахад ашигладаг хоёр төрөл
PowerShell 2.0 дээр алсаас ажиллах хоёр сонголт байгааг зарлах цаг болжээ.
Эхний арга нь хоёр дахь машин руу тогтвортой суваг үүсгэхийн тулд cmdlet ашигладаг илүү боловсронгуй хувилбар юм. Ийм командын нэрэнд "PSSession" гэдэг үгийг нэр үг болгон агуулна (комдлетийн нэрийг "Үйл үг-Нэр" дүрмийн дагуу бүтээдэг гэдгийг би танд сануулж байна). Та дараах командыг ашиглан эдгээр командлетуудын жагсаалтыг авах боломжтой.

Get-Command -Нэр үг PSSession

Хоёрдахь арга нь PowerShell 2.0-ийн алсаас ажиллах илүү каноник хэлбэр юм. Энэ арга нь зүгээр л "-computerName" параметрийг нэмснээр локал командуудыг өргөтгөдөг бөгөөд энэ нь үйлдлийг гүйцэтгэх ёстой алсаас байрлах компьютерийг зааж өгдөг. Үүний үр дүнд ийм тушаалуудыг сүлжээнд байрлах өөр машин дээр ажиллуулах болно:

Get-Process -computerName машин2

Ийм энгийн аргаар ашиглаж болох командлетуудын жагсаалтыг (жишээ нь "-computerName" параметрийг агуулсан) дараах тушаалыг ашиглан авч болно.

Get-command | хаана ($_.parameters.keys -"Компьютерийн нэр" агуулна)

Хоёрдахь аргыг ашиглан ажиллах боломжтой командлетуудын бүрэн жагсаалтыг дараах байдлаар авч болно.

Get-command | хаана ($_.parameters.keys -"Компьютерийн нэр"-г агуулна -болон ($_.parameters.keys -"Хурц"-ыг агуулаагүй))

PowerShell 2.0 дээрх алсын зайн ажлыг дүгнэх
PowerShell 2.0-тэй алсаас ажиллах нууц нь дараах үндсийг ойлгох явдал юм.
WinRm суулгасан байх ёстой.
Та Enable-PSRemoting командыг ашиглан алсын холболтыг идэвхжүүлэх ёстой.
Та TrustedHosts-ийг тохируулах хэрэгтэй (жишээ нь, түүний утгыг * болгож тохируулах).
Enter-PSSession командыг ашиглахдаа та бүрэн тохирох хостын нэр эсвэл түүний IP хаягийг зааж өгөхөө санах хэрэгтэй.

Миний танилцуулсан, бага зэрэг засварласан англи хэл дээрх мэдээллийн эх сурвалж.

# Алсын машинд шинэ холболт үүсгэх $s = New-PSSession -компьютерийн нэр TestComputer

# Алсын машин дээр дурын үйлдлүүд хийх, жишээлбэл, C лавлахын агуулгыг харна уу:
Invoke-Command -Session $s -ScriptBlock (ls c:\)

# "%ProgramFiles%\MyCompany\MySoft" алсын машин дээр лавлах үүсгэх
Invoke-Command -Session $s -ScriptBlock (Шинэ зүйл -Path "$env:ProgramFiles\MyCompany\MySoft" -ItemType лавлах)

# Гэсэн хэдий ч командуудыг гараар оруулахгүй, харин алсын машин дээр бэлэн скрипт ажиллуулах нь илүү тохиромжтой.
Invoke-Command -Session $s -FilePath "\\ServerDir\Common Scripts\MyScript.ps1"

# Хурал өндөрлөж байна
$s | устгах-PSSession

03/04/2011 Билл Стюарт

Windows PowerShell 2.0 нь алсын удирдлага гэж нэрлэгддэг алсын компьютерт холбогдох өөр механизмаар хангадаг. Энэ механизм нь Windows Remote Management (WinRM) үйлчилгээг ашигладаг. Энэ нь танд алсын компьютерт холбогдохоос гадна тухайн алсын компьютер дээр ажилладаг командуудыг ажиллуулах боломжийг олгоно

PowerShell 1.0-ийн хөгжүүлэлт нь Windows XP болон Windows OS платформын дараагийн хувилбаруудын удирдлага, автоматжуулалтын хэрэгслүүдийг хөгжүүлэхэд бодит нээлт болсон юм. Платформ дээр суурилсан. NET Framework, PowerShell 1.0 нь тууштай тушаалын бүтэц (cmdlet), хүчирхэг суулгагдсан гаралтын формат, бусад технологи, ялангуяа Windows удирдлагын хэрэгсэл (WMI) хүртээмжийг мэдэгдэхүйц сайжруулсан. Гэсэн хэдий ч, зарим PowerShell 1.0 нийлмэл тушаалууд болон объектууд. NET нь алсын компьютеруудтай холбогдож болно, энэ функц нь тодорхой тохиолдлоос хамааран өөр өөрөөр хэрэгждэг. Алсын холболтыг дэмждэг командууд нь -ComputerName параметртэй; Нэмж дурдахад тэд холболт хийхдээ алсын процедурын дуудлага (RPC) эсвэл DCOM загварыг ашигладаг.

Ихэнх тохиолдолд RPC болон DCOM нь удирдлагын даалгавруудыг сайн гүйцэтгэдэг боловч заримдаа оношлогооны процедурыг гүйцэтгэх, асуудлын шалтгааныг тодорхойлоход бэрхшээлтэй байдаг. Жишээлбэл, Get-Service команд нь -ComputerName параметрийг ашиглан алсын компьютерээс үйлчилгээний өгөгдлийг унших боломжтой боловч энэ тушаалд -Credential параметр байхгүй тул үүнийг ажиллуулахын тулд та дараах зөвшөөрөлтэй бүртгэлээр нэвтэрсэн байх ёстой. алсын системд хандах.

Гэхдээ Windows PowerShell 2.0 хувилбарт алсын удирдлага гэж нэрлэгддэг алсын компьютерт холбогдох өөр механизм хэрэгжсэн. Энэ механизм нь Windows Remote Management (WinRM) үйлчилгээг ашигладаг. Энэ нь алсын компьютерт холбогдохоос гадна тухайн алсын компьютер дээр хэрэгждэг командуудыг ажиллуулах боломжийг олгодог. Би хэлснээ жишээгээр тайлбарлая. Remote Desktop Connections нь GUI-д алсын удирдлагатай холбоотой байдаг тушаалын мөр PowerShell бүрхүүлүүд. Алсын удирдлагатай механизмыг ашиглан нийлмэл командыг ажиллуулах үед тушаал нь алсын компьютер дээр хэрэгждэг боловч та дотоод машин дээр гаралтыг харж болно.

Би Windows PowerShell 2.0-ийг хаанаас авч болох вэ?

PowerShell 2.0 болон WinRM нь Windows 7 болон Windows Server 2008 R2-д багтсан тул хэрэв та эдгээр үйлдлийн системийг ашигладаг бол эдгээр бүрэлдэхүүн хэсгүүдийг суулгах шаардлагагүй. Хэрэв та Windows Vista SP2, Windows XP SP3, Windows Server 2008 SP2 эсвэл Windows Server 2003 SP2 ажиллуулж байгаа бол Windows Management Framework Core багцыг (support.microsoft.com/kb/968930) татаж аваад суулгах шаардлагатай болно.

Алсын удирдлагатай функцийг идэвхжүүлнэ үү

Таны компьютер PowerShell суулгасан алсын системтэй холбогдохын тулд дараах нөхцлийг хангасан байх ёстой.

  1. WinRM үйлчилгээг идэвхжүүлсэн байх ёстой.
  2. Нэг буюу хэд хэдэн IP хаягийн холболтыг хүлээн авах WinRM сонсогч суулгасан байх ёстой.
  3. Windows галт ханыг WinRM-ээр дамжуулан холболтыг зөвшөөрөхийн тулд тохируулсан байх ёстой.
  4. PowerShell сессийг идэвхжүүлж, зөв ​​тохируулсан байх ёстой.

Хэрэв таны компьютер алсын компьютер дээр суулгасан PowerShell-ийн холболтыг хүлээн авахгүй бол эдгээр нөхцөл шаардлагагүй.

Хэрэглэгчдэд аль болох хурдан эхлүүлэхэд нь туслахын тулд Microsoft PowerShell хөгжүүлэгчид эдгээр бүрэлдэхүүн хэсгүүдийг автоматаар тохируулахын тулд Enable-PSRemoting командыг үүсгэсэн. Энэ тохиргоог таны алсаас харилцаж байгаа машин дээр биш, харин алсаас хандах компьютер дээр хийх ёстой. Та PowerShell-ийг администраторын эрхээр ажиллуулж байгаа тохиолдолд л Enable-PSRemoting командыг ажиллуулж болно. Хэрэв та Windows Vista, Server 2008 болон түүнээс хойшхи машинуудтай ажиллаж байгаа бол PowerShell дүрс дээр хулганы баруун товчийг дараад нээгдэх цэснээс Run as administrator командыг сонгоно уу. Хэрэв та Enable-PSRemoting командыг -Force параметрээр ажиллуулбал систем ажиллаж байх үед тохиргооны алхам бүрийг ажиллуулах зөвшөөрөл хүсэхгүй. Enable-PSRemoting нийлмэл командын талаар дэлгэрэнгүй мэдээлэл авахыг хүсвэл командыг ажиллуулна уу

Get-Тусламж идэвхжүүлэх-PSRemoting

Алсын компьютер дээр нэг тушаалыг гүйцэтгэнэ

Алсын компьютер дээр PowerShell-тэй холбогдох хамгийн хялбар арга бол Enter-PSSession командыг ашиглах явдал юм. Анхдагчаар энэ командыг -ComputerName параметрээр гүйцэтгэдэг тул гарнаас оруулахдаа энэ параметрийг орхигдуулж болно. Жишээлбэл, Rigel нэртэй алсын компьютертэй холболт үүсгэхийн тулд та гарнаас оруулах хэрэгтэй

PS C:\> Enter-PSSession riggel

Анхаарна уу: бүрэн гүйцэд болгохын тулд би урилгыг бичвэрт оруулсан болно. Та тушаалын хэсэг болгон мөрийг оруулах шаардлагагүй.

Таныг алсын сессэд орсны дараа PowerShell сануулгын синтакс өөрчлөгдөнө. Энэ нь одоо дөрвөлжин хаалтанд байгаа алсын компьютерийн нэрийг оруулах болно; Энэ нь та алсын компьютертэй холбогдсон гэсэн үг юм. Энэ тохиолдолд урилга дараах байдлаар харагдах болно.

: PS C:\>

Алсын холболтыг үүсгэсний дараа командын мөрөнд оруулсан бүх командууд алсын машин дээр биелэгдэх болно. Тиймээс, хэрэв та тушаалыг оруулбал

: PS C:\> Get-ChildItem C:\

Get-ChildItem командыг алсын машин дээр гүйцэтгэнэ. Үүний гаралт нь алсын компьютерийн C дискэнд хадгалагдсан файл, хавтаснуудын нэрийг агуулна. Алсын сессийг дуусгахын тулд Exit-PSSession командыг ашиглана уу

: PS C:\> Exit-PSSession

Алсын компьютер дээр скрипт блок ажиллуулах

PowerShell алсын удирдлага нь алсын компьютер дээр скрипт блокийг (өөрөөр хэлбэл буржгар хаалтанд хавсаргасан PowerShell кодын блок) гүйцэтгэх боломжийг олгодог. Үүнийг хийхийн тулд Invoke-Command -ComputerName параметрийг ашиглана уу. Жишээлбэл, 1-р зурагт үзүүлсэн команд дээр би Invoke-Command-ыг ашиглан Get-ChildItem-ийг алсын компьютер дээр ажиллуулсан. Зураг 1-ийг харахад би скрипт блокыг ажиллуулахын өмнө алсын компьютерт холболт үүсгэхийн тулд Enter-PSSession командыг ашиглаагүйг анхаарна уу. Enter-PSSession болон Invoke-Command нь алсаас удирдах хоёр өөр арга юм.

Invoke-Command-ын эхний параметр нь -ScriptBlock параметр юм; Энэ нь таны гүйцэтгэх гэж буй кодыг заана. Зураг 1-д би -ScriptBlock параметрийн нэрийг орхисон, учир нь энэ нь сонголттой. -ComputerName параметр нь алсын компьютерийн нэрийг агуулна. Get-ChildItem командын гаралтаас харж байгаачлан PowerShell нь операторын тав тухыг хангах үүднээс гаралтын PSComputerName баганад алсын компьютерийн нэрийг хүртэл жагсаасан байна.

Олон алсын компьютер дээр скрипт блок ажиллуул

Скрипт блокыг олон алсын компьютер дээр ажиллуулж болно. Үүнийг нэгээс олон тохиргоо буюу тархалт гэж нэрлэдэг. Зураг 1-д Invoke-Command-ын -ComputerName параметр нь нэг нэр агуулсан боловч та олон компьютерийн нэрийг оруулж болно. Тиймээ, баг

PS C:\> Invoke-Command (Get-ChildItem env: co*) -Computer titan, rigel

Get-ChildItem командыг хоёр алсын компьютер дээр ажиллуулах боломжийг олгоно. Өгүүллийн текстэд энэ тушаалыг хэд хэдэн мөрөнд хуваасан боловч PowerShell консол дээр нэг мөрөнд оруулах ёстой. Энэ нь хэд хэдэн мөрөнд хуваагдсан бусад командуудад хамаарна. Зураг 1-ийн нэгэн адил гаралтын PSComputerName баганад компьютеруудын нэрс агуулагдана.

Ар талд скрипт блок ажиллуулна уу

PowerShell 2.0 нь далд ажлыг гүйцэтгэх боломжийг олгодог бөгөөд энэ нь оператор тушаалыг далд ажиллуулах боломжтой гэсэн үг юм. Энэ функц нь гүйцэтгэхэд удаан хугацаа шаардагддаг командуудыг ажиллуулахад хэрэгтэй.

Орон нутгийн компьютер дээрээ суурь ажлыг эхлүүлэхийн тулд Start-Job командыг ашиглаж болно. Гэхдээ энэ команд нь -ComputerName параметргүй гэдгийг хэлэх ёстой бөгөөд энэ нь үүнийг гүйцэтгэхэд ашиглах боломжгүй гэсэн үг юм. суурь ажилалсын машин дээр. Үүний оронд та Invoke-Command-ыг -AsJob параметрээр өгөх хэрэгтэй болно. Тиймээс, 2-р зураг дээрх дээд тушаал нь скрипт блокыг алсын титан компьютер дээр суурь ажил болгон ажиллуулахад хүргэдэг. Намайг энэ командыг оруулсны дараа дэлгэцэн дээр нэн даруй сануулга гарч ирэв: PowerShell нь алсын компьютер дээр гүйцэтгэх скрипт блок илгээж, дараа нь хяналтыг надад буцааж өгсөн. Гүйцэтгэсэн тушаал нь консолын цонхонд тохирохгүй байсан тул гаралтад ороогүй гэж анхааруулсан байна. Хэрэв миний консолын цонх илүү өргөн байсан бол PowerShell форматлагч тушаалыг гаралтын жагсаалтад оруулах болно. Id болон Name багана нь ажлыг (түүний ID болон хялбар нэр тус тус) зааж, Төрийн багана нь ажил ажиллаж байгаа, түр зогсоосон эсвэл дууссан төлөвт байгаа эсэхийг заана. HasMoreData багана нь тухайн ажлын бүх өгөгдлийг сэргээсэн, эсвэл ажилд авах шаардлагатай нэмэлт мэдээллийг агуулсан мэдээллийг агуулна.

Суурь ажил дууссан эсэхийг тодорхойлохын тулд Зураг 2-ын хоёр дахь командын дагуу Get-Job-г ажиллуулж болно. Хэрэв та ямар нэгэн параметр ашиглахгүй бол Get-Job нь одоогийн сессийн үед ажиллаж байгаа бүх ажлын статусыг шалгана. Хэрэв танд олон ажил зэрэг ажиллаж байгаа бол -Id эсвэл -Name гэх мэт параметрүүдийг ашиглан ямар ажлыг шалгахыг хүсч байгаагаа зааж өгч болно. Суурь ажил дуусахад гаралтын Төрийн багана Дуусна.

Та үндсэн ажлын үр дүнг уншихын тулд "Ажлыг хүлээн авах" командыг ашиглаж болно. Энэ команд нь Get-Job командын нэгэн адил та ямар ажил сонирхож байгаагаа параметр ашиглаагүй бол одоогийн сессийн үед ажиллаж байгаа бүх ажлын үр дүнг буцаана. Тиймээс, Зураг 2-ын сүүлчийн команд нь -Id параметрийг агуулж байгаа бөгөөд энэ нь таныг ажлын ID 9-ийн гаралтыг авахыг хүсч байна. Энэ нь сонголттой тул би -Id параметрийн нэрийг орхисон. 3-р зурагт алсын зайн ажлын гүйцэтгэлийн сүүлийн мөрүүдийг харуулав.

PowerShell сессүүдийг үүсгэх

Дээрх жишээнүүд нь алсын машин дээр PowerShell prompt-д хэрхэн хандах, алсын машин дээр тушаалуудыг хэрхэн ажиллуулахыг харуулж байна. Миний дурдаагүй зүйл бол алсын зайнаас удирдах нь үргэлж сессийн хүрээнд хийгддэг. Сесс бол PowerShell-ийн амьдардаг газар юм. Та PowerShell консолын цонх эсвэл PowerShell нэгдсэн скрипт орчин (ISE) цонхыг нээх үед сесс үүсгэнэ. Алсын удирдлагагүйгээр бүх сессүүд локал компьютер дээр ажилладаг бөгөөд бие биенээсээ хамааралгүй байдаг. Дээрх бүх алсын удирдлагатай жишээнүүд нь алсын удирдлага дуусах үед автоматаар дуусгавар болох түр зуурын сессүүдийг үүсгэдэг. Мөн алсын зайнаас сешнүүдийг үүсгэж, дахин ашиглах боломжтой. Энэ арга нь алсын компьютерт нэгээс олон удаа хандах шаардлагатай тохиолдолд илүү үр дүнтэй байдаг.

Шинэ сесс үүсгэхийн тулд -ComputerName параметртэй New-PSSession командыг ашиглана уу. Энэ параметрийн нэрийг тушаалуудаас хасаж болно. Тиймээ, баг

C:\> $sessions = Шинэ-PSSession phineas, ferb, perry

Phineas, Ferb, Perry гэсэн гурван компьютер дээр гурван сесс үүсгэдэг. Та $sessions хувьсагч үүсгэснээр эдгээр сешнүүдийг харж болно. Үүнийг хийхийн тулд тушаалын мөрөнд нэрийг оруулна уу

$ сесс

болон enter дарна уу. Invoke-Command-ын -Session параметр нь New-PSSession тушаалаар үүсгэсэн сессийн объектуудыг дэмждэг тул та дараахтай төстэй командыг ашиглаж болно.

C:\> Invoke-Command (Get-ChildItem) -session $sessions

Энэ команд нь Get-ChildItem командыг phineas, ferb, perry дээр гүйцэтгэх боловч холболтыг тасалдаггүй. Та -AsJob параметрийг нэмж, тушаалыг арын дэвсгэр дээр ажиллуулж болно:

C:\> Invoke-Command (Get-ChildItem) -session $sessions -asjob

Ажлын шинэ хандлага

PowerShell алсын удирдлага нь алсын компьютер дээр тушаалуудыг гүйцэтгэх хүчирхэг шинэ механизм юм. Энэ нийтлэл таныг шинэ боломжуудыг судлахад урамшуулна гэж найдаж байна. Алсын удирдлагатай холбоотой дэлгэрэнгүй мэдээллийг, түүний дотор оношлогооны асуудлуудыг technet.microsoft.com/en-us/library/dd347616.aspx дээрх_Remote-ийн тухай PowerShell тусламжийн сэдвүүдээс авах боломжтой.

Билл Стюарт ( [имэйлээр хамгаалагдсан]) - системийн болон сүлжээний администраторФранцын шарил хадгалах компани, Нью Мексико



powershell-ийн алсаас хэрэглүүрийг эхлүүлэх

Интерактив сесс эхлүүлж байна

Нэг алсын компьютерээр интерактив сесс эхлүүлэхийн тулд Enter-PSSession командыг ашиглана уу. Жишээлбэл, алсын компьютер Server01-тэй интерактив сесс эхлүүлэхийн тулд дараахыг оруулна уу:
Enter-pssession Server01
Тушаал хүлээх мөрөнд таны холбогдсон компьютерийн нэрийг харуулах болно. Цаашид командын мөрөнд оруулсан бүх командууд алсын компьютер дээр ажиллах бөгөөд үр дүн нь дотоод компьютер дээр харагдах болно.
Интерактив сессийг дуусгахын тулд дараахыг оруулна уу:
гарах хүсэл тэмүүлэл

Алсын тушаалыг гүйцэтгэж байна

Нэг буюу хэд хэдэн алсын компьютер дээр дурын командыг ажиллуулахын тулд Invoke-Command командыг ашиглана уу. Жишээлбэл, Server01 болон Server02 алсын компьютер дээр Get-UICulture командыг ажиллуулахын тулд дараахыг оруулна уу:

Invoke-command -компьютерийн нэр Server01, Server02 (get-UICulture)
Гаралтыг таны компьютерт буцааж өгөх болно.
Скриптийг нэг буюу хэд хэдэн алсын компьютер дээр ажиллуулахын тулд Invoke-Command командын FilePath параметрийг ашиглана уу. Скриптийг идэвхжүүлсэн эсвэл ашиглах боломжтой байх ёстой орон нутгийн компьютер. Үр дүнг таны дотоод компьютерт буцаана.
Жишээлбэл, дараах тушаал нь DiskCollect.ps1 скриптийг Server01 болон Server02 алсын компьютер дээр ажиллуулдаг.
invoke-command -компьютерийн нэр Server01, Server02 -filepath c:\Scripts\DiskCollect.ps1

Байнгын холболтыг тохируулж байна
Хуваалцсан өгөгдөлтэй холбоотой хэд хэдэн тушаалуудыг ажиллуулахын тулд алсын компьютер дээр сесс үүсгээд дараа нь Invoke-Command командыг ашиглан үүсгэсэн сессийн командуудыг ажиллуулна уу. Алсын сесс үүсгэхийн тулд New-PSSession командлетыг ашиглана уу.
Жишээлбэл, дараах тушаал нь Server01 компьютер дээр алсын сесс, Server02 компьютер дээр өөр алсын сесс үүсгэдэг. Энэ нь $s хувьсагч дахь сессийн объектуудыг хадгалдаг.
$s = new-pssession -компьютерийн нэр Server01, Server02
Сеансуудыг суулгасны дараа та тэдгээр дээр дурын командыг ажиллуулж болно. Сеансууд тогтмол байдаг тул та өгөгдлийг нэг тушаалаар цуглуулж, дараагийн тушаалд ашиглах боломжтой.
Жишээлбэл, дараах тушаал нь Get-Hotfix командыг $s хувьсагч дахь сессийн хооронд ажиллуулж, үр дүнг $h хувьсагчид хадгалдаг. $h хувьсагч нь сесс бүрт $s-д үүсгэгддэг боловч энэ нь орон нутгийн сессэд байхгүй.
invoke-command -session $s ($h = засвар авах)
$h-д байгаа өгөгдлийг одоо дараах тушаалуудад ашиглаж болно. Үр дүн нь таны локал компьютер дээр харагдах болно.

Invoke-command -session $s ($h | хаана ($_.installedby -ne "NTAUTHORITY\SYSTEM")

Бүгдийг https://technet.microsoft.com/ru-ru/library/dd819505.aspx-аас авсан.

Холболт