Powershell-ga bo'sh parol bilan uzoq kompyuterda ruxsat beriladi. Powershell dasturini masofadan ishga tushiring. Boshqaruv "birga"

PowerShell yordami uchun masofaviy yordam

Ísnuê chimalo masofaviy kompyuterlar bilan ishlash usullari. Є VBScript-da keng qo'llaniladigan Windows Management Instrumentation (WMI). Masofadan boshqarish imkonini beruvchi turli yordamchi dasturlardan foydalaning, Sysinternals yozing. Wiconn yoqilganligi uchun ComputerName parametrini o'rnatish uchun ko'plab PowerShell cmdletlarini navigatsiya qiling masofaviy kompyuterlar.

Zagalom usullari povno, lekin terida ê uning minuslari. Birinchidan, yo'qolib ketish oson bo'lgan turli xil sintaksis. Boshqacha qilib aytganda, deyaki mahalliy darajada uzoqdan hidlanib yoki yo'qligiga qarab o'zini boshqacha tutishni buyuradi. Xo'sh, nareshti, aloqa uchun siz xavfsizlik devoriga qo'shimcha portlarni qo'shishingiz kerak bo'lishi mumkin, bu xavfsizlik nuqtai nazaridan yaxshi emas.

PowerShell masofadan boshqarish virishuє muammolarning ko'proq tavsiflari. Vín Microsoft-ning boshqaruv uchun veb-xizmatlari (WS-Management) protokolini amalga oshirish va vikorist xizmatiga (WinRM) ulanishga asoslanadi. HTTP (qulflash uchun) yoki HTTPS uchun kompyuterlar o'rtasidagi aloqa talab qilinadi. Ikki kompyuter o'rtasidagi barcha trafik protokol bilan bir xilda shifrlangan (ko'z qisish uchun, agar SSL g'olib bo'lsa). NTLM va Kerberos kabi bir qator autentifikatsiya usullari qo'llab-quvvatlanadi.

Vídmínu víd utilít, scho vikoristovuyut turli dasturiy interfeyslarni, PS Remoting pratsyuê bosqichma-bosqich: buyruqlar, scho kiritilishi kerak. mahalliy kompyuter, masofaviy kompyuterga o'tkaziladi va tekshiriladi, so'ngra natija qaytariladi. Barcha jamoalarning parchalari mahalliy sifatida hisoblanadi, yig'indini muhokama qilishning hojati yo'q. Bundan tashqari, PS Remoting faqat bitta talab qiladi ochiq port xavfsizlik devoriga.

PowerShell Remoting-ga yordam berishning ba'zi usullari.

Boshqaruv "birga"

Eng oson yo'li masofaviy parvarishlash— Seansni interaktiv tarzda oching va viskonlar bunga muhtoj. Masalan, seansni SRV4 kompyuterida ko'rib chiqamiz va uni yangi xizmat ko'rsatuvchi do'stda qayta ishga tushiramiz:

Enter-PSSession -ComputerName SRV4
Qayta ishga tushirish-Xizmat - Nom biriktiruvchisi

Biz xizmatdan hayratdamiz va sessiyani yopamiz:

Get-Service - Nom spoler
chiqish-PSSession

Interaktiv ish masofaviy boshqaruvning noqulay vazifalarini hal qilish uchun javob beradi. Agar jarayonni avtomatlashtirishni istasangiz, bu eng yaxshi Invoke-Command cmdlet yordamida amalga oshiriladi. Eksa, shuning uchun ushbu yordam bilan siz xuddi shu narsani ishlab chiqishingiz mumkin:

Invoke-Command -ScriptBlock (Qayta ishga tushirish-xizmat spuler) -ComputerName SRV4

Ushbu buyruq SRV4 da masofaviy seansni ochadi, buyruqlar blokini, -ScriptBlock parametri uchun ko'rsatmalarni oladi va sessiyani yopadi. Va yig'lab fon rejimi, ixtiyoriy ravishda AsJob parametrini belgilashingiz mumkin.

Yodda tutingki, PowerShell fonda bir soat ishlaganlar natijani o'zgartirmaydi. Buni amalga oshirish uchun siz buni Receive-Job cmdlet yordamida bajarishingiz mumkin.

Bir nechta buyruqlarni emas, balki skriptni tanlash uchun Invoke-Command -FilePath parametriga ega bo'lishi mumkin, uni faylga skriptni belgilash uchun -ScriptBlock ga o'zgartirish mumkin. Misol uchun, men zupine xizmatlari ro'yxatini ko'rsatadigan va uni masofaviy SRV4 mashinasida ishga tushiradigan skript yaratdim:

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

"Birdan boyga" boshqaruvi

Bir qator kompyuterlarda bir vazifani oqlash bilan bir vaqtda oqlanishning bir qismini bajarish kerak. Buni bir xil Invoke-Command yordamida osongina qilishingiz mumkin. Masalan, kompyuter nomlari shunchaki komadan o'tishi mumkin:

Invoke-Command -ScriptBlock (Qayta ishga tushirish-xizmat spuler) -ComputerName SRV4,SRV5

Esda tuting:

$servers = @(″SRV1″,″SRV2″,″SRV3″)
Invoke-Command -ScriptBlock (Qayta ishga tushirish-Service spoler) -ComputerName $servers

Yoki fayldan oling:

Invoke-Command -ScriptBlock (Qayta ishga tushirish-Servis spoler) -ComputerName`
(Get-Content .\servers.txt)

Eslatma: Invoke-Command bir soatda ishga tushirilishi mumkin bo'lgan maksimal kompyuterlar soni o'rtasida bo'lgan ThrottleLimit parametriga ega bo'lishi mumkin. Ushbu parametrni qulflash uchun 32 ni qo'shing. Agar kerak bo'lsa, uni o'zgartirishingiz yoki kompyuteringiz protsessoriga va xotirasiga yukni oshirish uchun o'zgartirishingiz mumkin, shuning uchun bu operatsiyani juda ehtiyotkorlik bilan bajarish kerak.

Seanslar

Invoke-Command seansining har boshqa soatlarida yangi seans yaratiladi, bu bir soat va resurslarni oladi. Yo'qolish uchun biz bitta seansni ochib, barcha buyruqlarni yutib olishimiz mumkin. Misol uchun, keling, SRV4 kompyuteriga SRV4 nomli seansni qo'shamiz va uni $sessionga qo'yamiz, keyin biz zavodimizni saqlab qolamiz (masalan, juda ko'p azob chekuvchi spuler):

$session = New-PSSession -ComputerName SRV4 -Name SRV4
Invoke-Command -ScriptBlock (Olish-Service spoler | Stop-Service)`
-Seans $session

Seans faol doti bo'ladi, doki PowerShell konsolidan ko'rinmaydi. Bundan tashqari, sessiyani yopishingiz mumkin - Disconnect-PSSession yoki uni olib tashlash - Remove-PSSession.

Va endi PowerShell 3.0 da paydo bo'lgan bir qator imkoniyatlar. Avvalgidek, sessiyadan chiqqaningizda yoki sessiya yopilganida, PS 3.0 sessiya yopilganda stansiyaga boradi. uzilgan. Biz qaysi kompyuterda yoki boshqa kompyuterda yangi seansni ochishimiz va buyruqni to'g'ridan-to'g'ri ushbu yoqilgan seansda ishga tushirishimiz mumkin. Qanday qilib dumba kompyuterda SRV4 xizmatida boshqa do'stga ishga tushirilganligi, o'tgan vaqt ovozi:

Invoke-Command -ScriptBlock (Start-Service spoler)`
-Kompyuter nomi SRV4 -Ajralgan

Mashg'ulotlarni kiritishning yana bir varianti kunning soatiga qarab sinovlarni boshlashdir. Masalan, SRV4 da LongJob seansini ko'rib chiqamiz va uni ishning fonida ishga tushiramiz, chunki u 1 intervalda xizmatlar ro'yxatini ko'rsatadi:

$session = New-PSSession -ComputerName SRV4 -LongJob nomi
Invoke-Command -Session $session -ScriptBlock`
(Xizmat olish | foreach ($_;sleep 60) ) -AsJob

Biz sessiyani yopish vazifasi qanday nishonlanayotganiga hayron bo'lamiz:

Qabul qilish-Ish -Ishning nomi2
Ajratish-PSSession $session

Demo-ni boshqa kompyuterga o'tkazing va konsolni ko'rsating, LongJob seansiga ulaning va Receive-PSSession cmdlet yordamida vazifaning natijasi olinadi:

Connect-PSSession -Name LongJob -ComputerName SRV4
Qabul qilish-PSSession -LongJob nomi

Yoki boshqa variant, Connect-PSSession yordami uchun sessiyaga aniq ulanishisiz:

$session = Get-PSSession -Name LongJob -ComputerName SRV4
$job = Receive-PSSession $session -OutTarget Job
Qabul qilish-Ish $ish

Eslatma: Natija tizimda qolishi uchun Receive-Job-ni -Keep parametri bilan burish kerak.

Bevosita masofada keruvannya

Yana bir narsa, masofaviy keruvannyaning nostandart usulini bajarish - yashirin masofadan o'chirish. Masofaviy seans yaratmasdan, masofaviy kompyuterda lokal ravishda cmdletlarni ishga tushirish mumkin.

Misol uchun, biz masofaviy boshqaruv yordamisiz bir xil ish stantsiyasini olamiz. Biz SRV4 domen boshqaruvchisi bilan masofaviy seans yaratamiz va sessiyaga Active Directory modulini import qilamiz:

$session = Yangi-PSSession -ComputerName SRV4
Invoke-Buyruq (Import-modul ActiveDirectory) -Session $session

Keyin biz Active Directory cmdletlarini masofaviy seansdan eksport qilamiz va ularni mahalliy RemoteAD moduliga yuboramiz:

Export-PSSession -Session $session -CommandName *-AD* -OutputModule RemoteAD`
-Clobberga ruxsat bering

Buyruq WindowsPowerShell\Modules\RemoteAD jildida yangi PowerShell modulini yaratishdir. Variantlar faqat *-AD* naqshiga mos keladigan nomli cmdletlar bo'ladi. Kim uchun, cmdletlarning o'zi mahalliy kompyuterga ko'chirilmaydi. Mahalliy modul o'ziga xos yorliq bo'lib xizmat qiladi va buyruqlar o'zlari masofaviy domen boshqaruvchisiga joylashtiriladi.

Modul yaratilgandan so'ng, sessiya yopilishi mumkin, endi sizga kerak bo'lmaydi.

Oqimli seansga yangi modulni import qiling (PS 3.0 uchun ushbu bo'limni o'tkazib yuborishingiz mumkin):

Import-modul RemoteAD

Va endi hurmat qiling - biz domen boshqaruvchisi bilan masofaviy seansni bekor qilmaymiz, cmdletlarni o'chirib tashlaymiz. Ushbu sessiyani aniq boshlash shart emas - mumkin bilvosita, masofaviy cmdletda viconatni sinab ko'rganingizdan so'ng:

Yangi-ADUser -Ismi BillGates -Microsoft kompaniyasi
Get-ADUser BillGates

Agar shunday bo'lsa, domen boshqaruvchisiga masofaviy ulanish tasdiqlanadi, shundan so'ng buyruq domen boshqaruvchisiga o'tkaziladi va u erda tugatiladi. Yozish natijasi XML formatida ketma-ketlashtiriladi va kerak bo'lganda mahalliy kompyuterga uzatiladi, u siz PowerShell-dan foydalanishingiz mumkin bo'lgan ob'ektga seriyasizlashtiriladi.

Seans faol bo'ladi, konsolni yopmang yoki RemoteAD modulini o'chirmang.

Bevosita masofaviy keruvannya sizga masofaviy kompyuterda cmdletlar bilan ishlashga imkon beradi, u mahalliy mashinaga o'rnatilgandek deyarli bir xil. Barcha buyruqlar kerak bo'lganda, uni qulay tarzda bajarishingizga ishonch hosil qiling.

Oxirida men nima deyman Narazi PowerShell Remoting Windows operatsion tizimlari tomonidan masofadan qidirish uchun asosiy vositadir. Windows ma'muri bu qobiliyat haqida bilishi va ulardan xabardor bo'lishi oddiygina zarur.

Maqolada PowerShell 2.0 varianti bilan uzoq munosabatlar mavzusi tushuntirilgan. Bizdan oldin xizmatni ishga tushirish kerak, uning yordami uchun biz o'zaro hamkorlik masofasida bo'lishimiz kerak.

WinRm xizmatini ishga tushiring
PowerShell 2.0 ning masofadan o'zaro ishlashi uchun WinRM xizmati almashtiriladi, chunki u Windows 7 va Windows 2008 R2 da qulf orqasida o'rnatilgan. Operatsion tizimning dastlabki versiyalari uchun qo'shimcha ravishda o'rnatish kerak. Xizmat PowerShell 2.0 o'rnatilgan soatda mashinaga o'rnatilishi tayinlangan. WinRM-ga o'tish uchun PowerShell 2.0 konsolini ishga tushiring va quyidagi buyruqni kiriting:
WinRm xizmatini oling
Natija quyidagicha ko'rinadi:

Holat nomi DisplayName ------ ---- ----------- Winrm Windows masofaviy boshqaruvi (WS-Manag...

Yak bachimo - xizmat mavjud, prote ishlamayapti. WinRm-ni ishga tushirish uchun PowerShell 2.0 konsolidan administrator sifatida quyidagi buyruqni ishga tushirishingiz kerak:
Yoqish-PSRemoting
Xizmat boshlanishini tasdiqlash uchun "Y" tugmasini bosing. WinRM xizmati endi "Avtomatik" ishga tushirish turiga o'rnatiladi. kompyuterning boshida darhol ishga tushmaydi. Enable-PSRemoting buyrug'i nafaqat xizmatni ishga tushiradi, balki ishga tushirish turini o'zgartiradi, balki to'g'ri ishlash uchun tegishli xavfsizlik devorini ham o'rnatadi. WinRm xizmati har qanday IP-manzil uchun so'rovlarni qabul qiladi.

Barcha ulangan provayderlarning nomlari so'raladi:
Get-PSProvider
Yak bachimo, bizda WSMan nomi ostida boshqa provayder bor.
Ishonchli tugunlarni tayinlash

PowerShell 2.0 konsolida buyruq administrator huquqlari bilan ishga tushiring:

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

Eslatma
E'tibor bering, birinchi buyruq provayderni ko'rsatuvchi ikki ko'rsatgich bilan tugagan -Path parametr qiymatiga ega.

Sizga ma'lum bo'lgan kompyuterda, qaysi serverlarga mashinaga ulanishga ruxsat berilganligini ko'rsatish yonida ishlashga ruxsat beriladi. Ushbu serverlar "ishonchli universitetlar"ga o'xshaydi. Shu tarzda, agar siz MyServer serverida bo'lsangiz, MyComputer kompyuteri bilan birinchi marta ishlashingiz mumkin bo'lsa, ishonchli tugunlarga (TrustedHosts) rioya qiling. Yo'l-yo'riq Quyida kompyuter Active Directory domeniga kirmasligi uchun g'alaba qozonish orqali ishonchli tugunlarni tanib olish usulidir. Agar kompyuter Active Directory domen omboriga kirmoqchi bo'lsa, TrustedHosts parametrlarini Guruh siyosati orqali sozlash mumkin.

Muhim!
Quyida ko'rsatilgan buyruq amaliy emas, chunki joriy katalogda WSMan:\localhost\client o'rnatilmagan (div. buyruq wick, bizda ko'proq).

TrustedHosts to'plami *

Buyruqni boshqa katalogdan ishga tushirishingiz mumkin yoki TrustedHosts-ga yangi yo'lni belgilashingiz kerak bo'lishi mumkin:

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

Tasdiqlash so'rovida "Y" tugmasini bosing.

PowerShell TrustedHosts sozlamalarida biz qilgan sozlamalarni o'zgartirishi uchun WSMan xizmatini qayta ishga tushirishingiz kerak. Tse hujum buyrug'i yordami uchun kurashish uchun:
Winrm xizmatini qayta ishga tushirish

Xuddi shunday harakat vikonati z-píd DOS bo'lishi mumkin. Winrm-? buyrug'ini ishga tushiring. Jamoa haqida umumiy fikr bildirishingiz mumkin. TrustedHosts qiymatiga aniqroq qarash uchun quyidagi buyruqni bajaring:

winrm winrm/config/client-ni oladi

va qiymatni belgilash uchun - quyidagi vikonaty:

winrm to'plami winrm/config/client/ @(TrustedHosts="*")

Ko'proq buyruqlar uchun, TrustedHosts uchun, "*" belgisining ma'nosi sifatida, lekin uning o'rniga ma'lum serverlar nomlarini belgilashingiz mumkin. TrustedHosts-ni boshqarish havolaga "Get" va "Set" PowerShell-o'chirib qo'yishning klassik usuli hisoblanadi: siz Get-Item va Set-Item yozishingiz mumkin.
Masofaviy PowerShell 2.0 sessiyasini yaratish va tugatish
Quyidagi buyruqlarda "IpAddress" ni kerakli IP manzilga o'zgartiring va "FQDN" ni To'liq malakali domen nomiga o'zgartiring:

PSSession IP-manzilini kiriting

PSSession FQDN-ni kiriting

Masofaviy robot seansini tugatish uchun quyidagi buyruqni bajaring:

Enter-PSSession buyrug'iga ko'proq.name.domain.name kerak. Misol uchun, MyServer.domain.local bo'lsa, oddiy MyServer yozuvi ishlamaydi, ammo IP-manzilni tanlash har doim bunday vaziyatlarda yaxshi ishlaydi. Muqobil PSSession usuli:

Yangi-PSSession-kompyuter nomi testMachine2 Get-PSSession

Ushbu sessiya ishini quyidagicha yakunlashingiz mumkin:

Get-PSSession | o'chirish-PSSession

Agar siz robotga masofada norozilik bildirmoqchi bo'lsangiz, boshqa mashinangiz bo'lmasa, u holda kompyuteringizning o'zingiz bilan "masofaviy aloqasi" ni yarating. Misol uchun, agar sizning mashinangiz MyMachine deb nomlangan bo'lsa, quyidagilarni sinab ko'ring:

New-PSSession -kompyuter nomi MyMachine

Bu sizga g'alati va mantiqsiz tuyulishi mumkin, ammo shu tarzda siz PowerShell 2.0 da masofaviy ishni sinab ko'rishingiz mumkin.

Masofaviy PowerShell 2.0 seanslarida ishlash
Masofaviy ulanishni amalga oshirganingizdan so'ng, siz PowerShell 2.0 konsolida ularni boshqaradigan buyruq quvurlarini tashkil qilishingiz mumkin, lekin agar shunday qilsangiz, yomon hid masofaviy mashinada olib tashlanadi, lekin siz klaviatura orqasida bo'lishingiz va buyruqlarni bu erda emas, u erda yozishingiz kerak. Masalan, quyidagi buyruqni bajaring va ish natijasini ko'ring:

Joylashuvni o'rnatish c:\ | Get-childitem

Ushbu dastlabki yordamning asosiy vazifasi PowerShell 2.0 ning masofaviy ulanish seansini yaratishga yordam berish va uni qanday yopish kerakligini ko'rsatishdir, keyin siz buni o'zingiz qilishingiz kerak bo'ladi, operatsiyalar kabi, masofaviy ulanish soatini vikonati píd qilishingiz kerak.

Eslatma
Agar sizda masofaviy ulanish seansi yo'qligi haqida savol tug'ilsa, masalan, buyruq kabi - mahalliy kompyuteringizda orqaga qarab norozilik bildiring.

Agar sizga masofaviy ulanish kerak bo'lmasa, u sizga tarmoqqa ulangan kompyuterlar uchun PowerShell 2.0 dasturini yutib olish imkoniyatini beradi. Endi siz boshqa mashinalarning stsenariylarini ko'rishingiz mumkin. PowerShell 2.0 da "-computerName" parametrini kesish uchun juda ko'p cmdletlar mavjud, ammo kelajakda u PSSession oilasidan buyruqlarni yutib olish, shuningdek Invoke-Command-ga qo'ng'iroq qilish imkonini beradi (shunda siz hamma narsani har doim ishga tushirishingiz mumkin) .

PowerShell 2.0 ning masofaviy ishlashi bilan bog'liq muammolar haqida bilib oling

Bir tipik muammo– REPAIR "Kirish taqiqlangan" (kirish taqiqlangan).

Yechim:
PowerShell 2.0 ni administrator sifatida ishga tushiring. Ikkala mashinada ham sinab ko'ring (ulanayotganingizda va ulanayotganingizda) "TrustedHosts" qiymatini * (z) ga o'rnating. Shuni unutmangki, ushbu parametr ovozni ulash imkonini beradi.
WinRm xizmatini qayta ishga tushirishni unutmang, aks holda siz "TrustedHosts" uchun "TrustedHosts" ni o'zgartira olmaysiz. Xizmatni qayta ishga tushirish uchun PowerShell 2.0 konsolida quyidagi buyruqni bajaring: WinRm-ni qayta ishga tushiring.
Bundan tashqari, hurmatli bo'ling va WSMan provayderi nomini WinRm xizmati nomi bilan aralashtirib yubormang.
Yana bir ajoyib, lekin ba'zida qo'shimcha quvonch: masofaviy ulanish sinovini takrorlashga harakat qiling. Bu ajoyib, lekin siz birinchi namunani so'rashingiz mumkin emas, lekin siz boshqa yoki uchinchisini so'rashingiz mumkin. Tobto. buyruqni takrorlashingiz kerak: Enter-PSSession -computerName myOtherMachineName

Xavfsizlik devori, PowerShell 2.0 va "rpc serveri mavjud emas" ( RPC serveri mavjud emas)
Fakhívtsí z z bezpeka in zhahu bunday taklifda qo'llaringizni ko'taring, ammo, tayinlangan ko'proq kechirim vaqtida, men ikkala kompyuterda xavfsizlik devorini yoqishingizni aytaman. Agar hamma narsa yoqilgan bo'lsa, bu yaxshi, demak, 135 va 445 portlarining sozlamalarini o'zgartirish kerak. Ushbu portlarni xavfsizlik devorlarida yoqish uchun sozlash - PowerShell 2.0 ni yoqish uchun

P.S. Men Enable-PSRemoting buyrug'ini qabul qilish mumkinligini o'qidim avtomatik kiritiladi xavfsizlik devorini o'zgartiring, lekin mening fikrimcha, uni shunday qoldirmang.
Ular haqida, masalan, yordam uchun guruh siyosati Windows 8 da xavfsizlik devorini yoqing, o'qing.

Masofaviy PowerShell 2.0 uchun moslashtirilayotgan ikkita teepe
PowerShell 2.0 da masofaviy ishlashning ikkita variantini qanday o'rganishni ko'rsatish vaqti keldi.
Birinchi usul - bu vitonchenish o'zgarishi bo'lib, unda cmdletlar yaratilib, boshqa mashinaga barqaror kanal yaratiladi. Bunday buyruqlarning nomlari nom sifatida "PSSession" so'zi bilan almashtiriladi (menimcha, cmdletlarning nomlari "Dieslovo-Name" qoidasiga amal qiladi). Quyidagi buyruq yordamida ushbu cmdletlarning tarjimasini olib tashlashingiz mumkin:

Get-Command -ot PSSession

Boshqa usul ham PowerShell 2.0 masofaviy ishining kanonik shaklidir. Tsey yo'li oddiygina mahalliy buyruqlarni kengaytirish, ularga "-computerName" parametrini qo'shish, buning yordami uchun kompyuterni kengaytirish kerakligi ko'rsatilgan, bunda operatsiyani bajarish kerak. Natijada, bu buyruqlar massivdagi boshqa mashinada bajariladi:

Get-Process -computerName machine2

Muqobil cmdlet, shuning uchun siz shunday oddiy usuldan foydalanishingiz mumkin (u jim, siz omboringizda "-computerName" parametridan foydalanishingiz mumkin) yordam uchun quyidagi buyruqdan foydalanishingiz mumkin:

get-command | bu erda ($_.parameters.keys -"Kompyuter nomi" ni o'z ichiga oladi)

Boshqa usul bilan ta'qib qilinishi mumkin bo'lgan eng so'nggi cmdlet o'zgarishi quyidagicha o'zgartirilishi mumkin:

get-command | qaerda ($_.parameters.keys -"Kompyuter nomi"ni o'z ichiga oladi -va ($_.parameters.keys -notContains "Session"))

PowerShell 2.0 da víddalena robot haqida Pidbivaemo pídpomok
Buning siri kelajakda PowerShell 2.0 dan asosiy nutqlarni tushunishi kerak bo'lganlar uchun yordam uchun foydalanishi kerak bo'lganlar uchun:
Keyingi WinRm-ni o'rnating.
Enable-PSRemoting buyrug'i yordami uchun siz masofaviy shovqinni yoqishingiz kerak.
TrustedHosts-ni o'rnatish kerak (masalan, * qiymat sifatida belgilang).
Enter-PSSession buyrug'ini tanlaganingizda, tugun nomini yoki uning IP manzilini ko'rsatishni unutmang.

Anglomovna dzherelo vikladenoí va men tomonidan qayta ishlangan ma'lumotlar trochs.

# Masofaviy mashinaga yangi ulanish seansini yarating $s = New-PSSession -kompyuter nomi TestComputer

# Vikonuemo buni masofaviy mashinada bajaring, masalan - C katalogiga hayron bo'ling:
Invoke-Command -Session $s -ScriptBlock (ls c:\)

# "%ProgramFiles%\MyCompany\MySoft" masofaviy mashina katalogida yaratilgan
Invoke-Command -Session $s -ScriptBlock (Yangi element -Path "$env:ProgramFiles\MyCompany\MySoft" -ItemType katalogi)

# Prote, buyruqlarni qo'lda kiritmagan ma'qul, lekin masofaviy kompyuterda ishga tushirish uchun skript allaqachon tayyor:
Invoke-Command -Session $s -FilePath "\\ServerDir\Common Scripts\MyScript.ps1"

# Seansni yakunlash
$s | o'chirish-PSSession

04.03.2011 Bill Styuart

Versiya Windows PowerShell 2.0 masofaviy kompyuterlarga ulanishning muqobil mexanizmini amalga oshirish, bu masofadan boshqarish deb ataladi. G'alaba xizmatining butun mexanizmi masofaviy parvarishlash Windows (Windows masofadan boshqarish, WinRM). Win masofaviy kompyuterga ulanishni, shuningdek, ushbu masofaviy kompyuterga ulangan buyruqlarni ishga tushirishni ta'minlaydi

PowerShell 1.0 qobig'ining rivojlanishi Windows XP ning yadrosi va avtomatizatsiyasi, shuningdek, Windows OS platformasining so'nggi versiyalari rivojlanishida yutuq bo'ldi. Yaka platformaga asoslangan. NET Framework PowerShell 1.0 texnologiyasi bir kishilik buyruqlar tuzilmasini (cmdletlar) o'z ichiga oladi, u chiqish ma'lumotlarini formatlashning murakkab usullari va boshqa texnologiyalar mavjudligini sezilarli darajada oshirishni ta'minlaydi va biz yo'naltiramiz - íinstrumentaríyu Windows boshqaruvi(WMI). Biroq, agar siz PowerShell 1.0 buyruqlarini saqlamoqchi bo'lsangiz, u ob'ekt. NET masofaviy kompyuterlarga ulanishi mumkin va funktsiya ma'lum bir turga qarab differentsial tarzda amalga oshiriladi. Bu pídtremuyut víddalení z'êdnannya, mayut -ComputerName buyruqlar; Bundan tashqari, tizim o'rnatilganda, hid vikoristovuyut vikliki vyddalennyh protseduralari (RPC), yoki DCOM modeli.

Turli xil RPC va DCOM holatlarida menejment bilan kurashish, g'alabali diagnostika muolajalarini qo'llash yaxshidir va agar nosozliklar sabablari aniqlansa, ular ba'zan muammolarni ayblashadi. Masalan, Get-Service buyrug'i -ComputerName parametri yordamida masofaviy kompyuterdan xizmat ma'lumotlarini o'qiy oladi, jarayon buyrug'i -Credential parametriga ega emas, ovoz balandligi uchun ro'yxatdan o'tish kerak. yuz rekordi, bu masofaviy tizimga kirishga ruxsat berishi mumkin.

Ale allaqachon kirgan Windows versiyalari PowerShell 2.0 masofaviy kompyuterlarga ulanish uchun remoting deb ataladigan muqobil mexanizmni amalga oshiradi. Bu Windows masofaviy nazorat xizmatining (Windows masofaviy boshqaruvi, WinRM) g'alabali ishlashi mexanizmi. Win masofaviy kompyuterga ulanishni, shuningdek, ushbu masofaviy kompyuterga ulangan buyruqlarni ishga tushirishni ta'minlaydi. Bir misol bilan tushuntiraman. PowerShell buyruq satriga masofadan ulanganidek, koristuvachaning grafik interfeysiga kirish uchun masofaviy ish stoliga ulanish imkoniyatini yarating. Agar siz masofaviy ta'sir o'tkazish uchun qo'shimcha mexanizm uchun ombor buyrug'ini ishlatsangiz, buyruq aslida masofaviy kompyuterda bajariladi, ammo natijalarni mahalliy mashinada olishingiz mumkin.

Windows PowerShell 2.0 dan qayerda foydalanishingiz mumkin

PowerShell 2.0 qobig'i va WinRM xizmati Windows 7 va Windows Server 2008 R2 tizimlari zaxirasiga kiritilgan, shuning uchun bu komponentlarni o'rnatishga hojat yo'q. Tizimlar bilan qanday ishlaysiz Windows Vista SP2, Windows XP SP3, Windows Server 2008 SP2 yoki Windows Server 2003 SP2 uchun Windows Management Framework Core paketini (support.microsoft.com/kb/968930) o'rnatishingiz kerak bo'ladi.

Bir-birining orasidagi masofada ortib borayotgan funktsiyalar

Kompyuterning PowerShell qobig'i o'rnatilgan boshqa tizimlar bilan ulanishi uchun bunday aqlni ta'minlash kerak.

  1. WinRM xizmatini faollashtirishingiz kerak.
  2. Bir yoki boshqa IP-manzildan qo'ng'iroqlarni qabul qiladigan WinRM tinglovchisini o'rnatishingiz kerak.
  3. Merezheviy windows ekrani aybdor buti nalashtovaniya bunday martaba, schob z' paydo bo'ldi mozhlivist vstanovlenya z'ednan WinRM orqali.
  4. Oxirgi, lekin eng muhimi, PowerShell sessiyasini yakunlashning odatiy marosimi.

Kompyuter sifatida boshqa kompyuterlarda o'rnatilgan PowerShell qobig'ini tanib bo'lmaydi, aqllar tilini o'zgartirish kerak.

Xakerlar robotga osonroq aytishlari uchun Microsoft PowerShell sotuvchilari Enable-PSRemoting buyrug'ini yaratdilar, bu esa taxmin qilingan komponentlarning avtomatik ravishda sozlanishini ta'minlaydi. Buni mashinada emas, balki masofadan turib ishlayotgan kompyuterda tuzatish kerak, shu vaqtgacha siz masofadan turib sayohat qilasiz. Enable-PSRemoting buyrug'ini faqat shu tarzda ishga tushirishingiz mumkin, chunki siz PowerShell qobig'ini administrator huquqlari bilan ishlatasiz. Qanday mashq qilasiz Windows mashinalari Vista, Server 2008 va undan keyingi versiyalar, o'ng tugma PowerShell belgisini bosing va menyudan Administrator sifatida ishga tushirish-ni tanlang. Enable-PSRemoting buyrug'ini -Force parametri bilan ishlatsangiz, u muvaffaqiyatsiz bo'lsa, tizim teri konfiguratsiyasi bosqichini o'chirish uchun ruxsat olish uchun siz bilan bog'lanmaydi. Enable-PSRemoting ombor buyrug'i haqidagi hisobotlarni ko'rish uchun buyruqni bosing

Get-Yordamni yoqish-PSRemoting

Masofaviy kompyuterda bitta buyruqni tomosha qilish

Masofaviy kompyuterda PowerShell muhitiga ulanishning eng oson yo'li Enter-PSSession buyrug'i bilan unga kirishdir. Yozilgandan so'ng, buyruq -ComputerName parametri bilan bog'lanadi, shuning uchun klaviaturadan kiritilganda parametr o'tkazib yuborilishi mumkin. Misol uchun, rigel nomi bilan masofaviy kompyuterni o'rnatish uchun siz klaviaturadan kiritishingiz kerak

PS C:\> Enter-PSSession dasturi

Hurmatingizni ushlang: to'liqlik uchun men so'rov matnini chuqurlashtiraman. Buyruqning so'ralgan qismini kiritishingiz shart emas.

Masofaviy seans kiritilganda, PowerShell so'rovi sintaksisi o'zgaradi. Endi u masofaviy kompyuterning kvadrat qo'llariga kiritilmaydi; Bu siz masofaviy kompyuterni o'rnatganingizni anglatadi. Ushbu ko'rinishda so'ralgan ko'rinish quyidagicha ko'rinadi:

: PS C:\>

Masofaviy ulanishni o'rnatganingizdan so'ng, buyruq qatoriga kiritilgan barcha buyruqlar masofaviy qurilmada ko'rsatiladi. Shunday qilib, agar siz buyruqni kiritsangiz

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

Get-ChildItem buyrug'i masofaviy kompyuterda o'chiriladi. Ma'lumotlar masofaviy kompyuterning C xotirasidan saqlangan fayl va papkalar nomlaridan o'chiriladi. Masofaviy rejimda sessiyani tugatish uchun Exit-PSSession buyrug'i bilan shoshiling

: PS C:\> Exit-PSSession

Masofaviy kompyuterda skript blokini tomosha qilish

Podpomogoyu PowerShell uchun Vidalenya vza'modíya masofaviy kompyuter bloki skript yoki skript blokida vykonuvaty imkonini beradi (PowerShell kodini blokirovka qilish, kamon shaklida joylashtirish uchun). Buning uchun Invoke-Command buyrug'ini -ComputerName parametri bilan tezlashtirish kerak. Masalan, 1-ekranda ko'rsatilgan buyruq uchun men masofaviy kompyuterda Get-ChildItem-ni bekor qilish uchun Invoke-Command buyrug'ini bekor qilaman. 1-ekranga qarab, esda tutingki, undan oldin masofaviy kompyuterdan ulanishni o'rnatish uchun skript blokini qanday ishga tushirish kerak, men Enter-PSSession buyrug'ini yutmaganman. Enter-PSSession va Invoke-Command buyruqlari masofaviy o'zaro ta'sir qilishning ikki xil usulidir.

Invoke-Commandning birinchi parametri -ScriptBlock; Vín kodni ko'rsatadi, qaysi vy vikonati tanlangan. 1-ekranda -ScriptBlock parametrining nomini o'tkazib yuborish orqali parchalar majburiy bo'lmagan tilda ko'rsatiladi. -ComputerName parametri masofaviy kompyuter nomini almashtiradi. Chiqish ma'lumotlaridagi Get-ChildItem buyrug'idan qanday foydalanishingiz mumkin, chiqish ma'lumotlarining PSComputerName ustunida masofaviy kompyuter nomini belgilash uchun operator shaffofligi uchun PowerShell muhiti.

Ko'p sonli masofaviy kompyuterlarda skript blokini tomosha qilish

Skript bloki xohlagancha ko'p kompyuterlarda ishlashi mumkin. Tse konfiguratsiyasi "birdan boyga" yoki tomoqlarning flakoniga deyiladi. 1-ekranda Invoke-Command buyrug'ining -ComputerName parametri bitta nomning o'rnini bosishi mumkin, lekin yangisiga bir nechta kompyuter nomlarini almashtirish mumkin. Ha, jamoa

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

Get-ChildItem buyrug'i ikkita masofaviy kompyuterda ishlashiga ishonch hosil qiling. Maqolaning matnida buyruq satrlar purkagichiga bo'lingan, ammo PowerShell konsolida quyidagini bitta qatorga kiriting. Bu boshqa jamoalar uchun bir xil bo'lib, sprat qatorlariga bo'lingan. Shunday qilib, xuddi 1-ekrandagi kabi, chiqish ma'lumotlaridagi PSComputerName ham bir xil kompyuter nomlari.

Skript blokini fon rejimida tomosha qilish

PowerShell 2.0 sizga fondagi ishlarni bajarish imkonini beradi, shunda operator fonda buyruqni bajarishi mumkin. Bunday imkoniyat buyruqlarni ishga tushirish uchun bir soat kerak bo'ladi, uni bajarish uchun bir soat kerak bo'ladi.

Mahalliy kompyuterda fon ishni bajarish uchun siz Start-Job buyrug'ini bajarishingiz mumkin. Ammo shuni ta'kidlash kerakki, buyruqda -ComputerName parametri yo'q, lekin uni masofaviy kompyuterda fon ishini bajarish uchun urib bo'lmaydi degan ma'noni anglatadi. Hozircha -AsJob parametri bilan Invoke-Command buyrug'ini kiritishingiz kerak bo'ladi. Shunday qilib, 2-ekrandagi yuqori buyruq masofaviy kompyuter titanidagi fon vazifasi oldida skript blokini boshlaydi. Shundan so'ng, men ushbu buyruqni kiritganimda, ekranda so'rov paydo bo'ldi: PowerShell qobig'i kompyuterni masofadan boshqarish uchun skript blokini ishga tushirdi va shundan so'ng boshqaruv menga aylandi. Oldindan, viconan buyrug'i oxirgi konsolga mos kelmagan va tashqi ma'lumotlarga kiritilmaganlar mavjud. Yakby vykno konsoli men chiqish ma'lumotlar ro'yxatiga buyruqni o'z ichiga tomonidan kengroq, zasib formatuvannya PowerShell qobig'i bor edi. Id va Name ustunlarida vazifa ko'rsatilgan (sizning identifikatoringiz va tushunarli ismingiz aniq) va Davlat ustunlari vazifa stantsiyasida ko'rsatilgan: tekshirilgan, to'xtatilgan, bajarilgan. HasMoreData provayderi barcha ma'lumotlarni tekshirganlar, keyingi vazifaga ehtiyoj borligi yoki g'alaba izi kabi katta hajmdagi ma'lumotlarni qoplash vazifasi haqida xabar berish uchun ma'lumotga ega.

Fon ishi tugaganiga ishonch hosil qilish uchun siz 2-ekranda boshqa buyruqni ko'rsatish uchun Get-Job buyrug'ini ishga tushirishingiz mumkin. Agar biron bir parametrni bekor qilmasangiz, Get-Job oqimning har soatida bajariladigan barcha ishlarni bekor qiladi. sessiya. Agar siz bir vaqtning o'zida vazifani yutib olishni istasangiz, vazifa uchun -Id yoki -Name kabi parametrlarni, o'zgartirmoqchi bo'lgan vazifaning o'zi kabi parametrlarni yutib olishingiz mumkin. Agar fon vazifasi tugallangan bo'lsa, fon vazifasining holati "Bajarildi" ga o'rnatiladi.

Fon ishining natijalarini o'qish uchun Qabul qilish-Ish belgisini qo'yishingiz mumkin. Ushbu buyruq, xuddi Get-Job kabi, oqim seansining har soatida bajariladigan barcha ishlarning natijasini aylantiradi, chunki siz ularni bajarish parametrini bekor qilmagansiz, masalan, vazifaning o'zi sizni chaqiradi. Shunday qilib, 2-ekrandagi buyruqning qolgan qismi -Id parametrini o'z ichiga oladi, bu esa identifikator 9 bo'lgan vazifa haqida ma'lumotlarni hisobga olish kerakligini ko'rsatadi. Men tilda ko'rsatilmagan -Id parametr nomini o'tkazib yuboraman. 3-ekranda dam olish kunlari haqidagi ma'lumotlarning qolgan qatorlari ko'rsatiladi, ular ko'rib chiqilayotgan uzoq fon ekraniga o'tadi.

PowerShell-da sessiyalar yaratish

Masofaviy PowerShell mashinalarida so'rovga qanday kirishni va masofaviy kompyuterlarda buyruqlarni qanday bajarishni ko'rsatish uchun uni yaqinroq yo'naltiring. Ale, hozircha, o'zaro ta'sirdan uzoqda bo'lganlar haqida o'ylamasdan, ular sessiya kontekstida yaratilmoqda. Seans, aytaylik, PowerShell yashaydigan joy. PowerShell konsol oynasini yoki PowerShell Integrated Scripting Environment (ISE) oynasini ochsangiz, sessiya yaratasiz. Masofaviy o'zaro ta'sirlardan foydalanmasdan, barcha seanslar mahalliy kompyuterda saqlanadi va bir-birining yonida yotadi. Barcha mo'ljalga olish to'ntaklarida, uzoq o'zaro modallikda, vaqtli sessiyalar yaratiladi, chunki ular masofaviy o'zaro modallik tugagandan so'ng avtomatik ravishda biriktiriladi. Bundan tashqari, haqiqatan ham uzoq munosabatlardagi sessiyalar misollarini yaratish va ularni qayta yutish mumkin. Agar uzoq kompyuterlarga bir necha marta kirish kerak bo'lsa, bunday pidhid muvaffaqiyatsizlikka uchragan taqdirda samaraliroq bo'ladi.

Yangi seanslar yaratish uchun -ComputerName parametri bilan New-PSSession buyrug'idan foydalaning. Buyruqlardagi ushbu parametr nomini o'tkazib yuborish mumkin. Ha, jamoa

C:\> $sessions = Yangi-PSSession phineas, ferb, Perry

Men Phineas, Ferb va Perry nomli uchta kompyuterda uchta seans yarataman. $sessions ni oʻzgartirish orqali seanslaringizni koʻrishingiz mumkin. Kim uchun buyruq satriga im'ya kiritish kerak

$sessiyalar

va enter tugmasini bosing. Invoke-Command buyrug'ining -Session parametri New-PSSession buyrug'i yordamida yaratilgan sessiya ob'ektini olib tashlaydi, shuning uchun siz buyruqni tajovuzkorga o'xshash tarzda burishingiz mumkin:

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

Bu buyruq phineas, ferb va perry mashinalarida Get-ChildItem buyrug'ini bajara olmaydi, lekin kunni ochmaydi. Fon rejimida buyruqqa -AsJob parametrini qo'shishingiz mumkin:

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

Ishlash uchun yangi pidhid

podpomogoyu zasobív PowerShell uchun Víddalena vzaimodiya - vyddalennyh kompyuterlarda vykonannya buyruqlar yangi qattiq mexanizmi narxi. Men spodívayus, tsya statya sizni doslydzhennya yangi imkoniyatlarga undaydi. Masofaviy hamkorlikka oid hisobotlarni, shu jumladan diagnostika muammolarini technet.microsoft.com/en-us/library/dd347616.aspx manzilidagi about_Remote bo'yicha kengaytirilgan PowerShell mavzularida topish mumkin.

Bill Styuart ( [elektron pochta himoyalangan]) - French Mortuary kompaniyasining tizim ma'muri, Nyu-Meksiko



  • darslik

Minimal nazariya bor, eng muhimi amaliy. WinRM-ni qanday sozlashni, profilni qanday o'zgartirishni tasvirlab bering twill adapter, skript filtrlash bilan TrustedHosts-ga qo'shilish uchun beriladi, u ishonchli xostlarga bo'lgan ehtiyoj asosida tushuntiriladi va ular yuzaki ko'rib chiqiladi. masofaviy ulanish shunday qilib, siz bulo tizimi va vydrazu vídminiti víddalení avtomobillar mumkin.

Masofadagi vikonati boshqaruvini sozlashning eng oddiy usuli Yoqish-PSRemoting obolontsida administrator huquqlari bilan yashash. Bu shunday bo'lganda:

  • WinRM xizmatini ishga tushiring (qayta ishga tushirilganda)
  • WinRM xizmati lagerga boradi - ishga tushirilganda avtomatik ishga tushirish
  • uchun WinRM-ni tinglash orqali yaratiladi http port trafiki 5985 barcha mahalliy IP manzillar uchun
  • WinRM tinglovchisi uchun xavfsizlik devori qoidasi yaratiladi. Hurmat, ushbu band imkon qadar tezroq yakunlanadi, agar faqat kartalarni birlashtirish natijasida birlashma turi "ommaviy" bo'lsa, chunki Bunday kartada portni ochish yaxshi emas. Agar konfiguratsiya paytida sizda bunday kechirim mavjud bo'lsa, tarmoq profilini cmdlet bilan o'zgartiring Set-NetConnectionProfile va yana Enable-PSRemoting-ni ishga tushiring. Agar sizga “Davlat xazinasi” profili bilan bog‘langan karta kerak bo‘lsa, Enable-PSRemoting-ni parametr bilan ishga tushiring. -SkipNetworkProfileCheck qaysi biri kamroq yaratilgan xavfsizlik devori qoidalariga ega bo'ladi mahalliy chiziqlar.
Agar kerak bo'lsa, o'sha mashinadan uzoqdagi mashinaga ulanish mumkin, bu bilan boshqarish kerak. Zrobleno tse z metoyu xavfsizlik uzoqdan keruvannya yoki DNS yovuz sessiya xavfini o'zgartirish maqsadida o'zini masofaviy mashina o'rniga va mashinalarda zapobigti vykonannya skriptiv, ruxsat yo'q primusovo kabi.

Vikoristovuemo-ni qaerga ulashingiz mumkinligini qayta tekshirish uchun:
get-item wsman:\localhost\Client\TrustedHosts
barchaga ulanish imkonini beradi
set-element wsman: localhost\client\trustedhosts -qiymat *
Agar siz barcha ko'rsatilganlar uchun kirishni yoqsangiz * WinRM BARCHA mashinalarga qayta o'tkazmasdan ulanadi. Mahalliy o'lchovning potentsial yovuzligi uchun o'zingizga nima deyotganingizni eslang. Muxtasar qilib aytganda, ulanishingiz kerak bo'lgan xost manzillarini belgilang, keyin WinRM boshqa barcha manzillar yoki nomlarga ruxsat beradi. Mashinaning domenda bo'lishi qanday boshqarilsa, bu domendagi barcha mashinalarga ishoniladi. Agar u domenda emas, balki boshqa domenda bo'lsa, TrustedHosts-ga manzilni kiritish kerak yoki mashina nomi unga ulanadi. Biz ulanmaguncha o'zingizga mashinada qo'shing.

Yordam buyruqlari berilgan, men ulardan bir nechtasini skriptdan qayta qurdim
################################################# ################################# Filtrlash bilan TrustedHost ro'yxatiga NewHost qo'shing, shuning uchun bu qator allaqachon bo'lishi mumkin # smicati s buyruq qatori parametrni o'rtasiz belgilash #.\Add-TrustedHost.ps1 192.168.2.1 ######################################## ### ############################################## ## # param ($NewHost = "192.168.2.89") Write-Host "xost qo'shish: $NewHost" $prev = (get-item WSMan:\localhost\Client\TrustedHosts).value if (($prev.Contains() $NewHost) )) -eq $false) ( if ($prev -eq "") ( sozlama elementi WSMan:\localhost\Client\TrustedHosts -Value "(!LANG:(!LANG:$NewHost)" } else { set-item WSMan:\localhost\Client\TrustedHosts -Value "$prev, $NewHost" } } Write-Host "" Write-Host "Now TrustedHosts contains:" (get-item WSMan:\localhost\Client\TrustedHosts).value !} !}
vín revíryaê chi ê bunday rekord, ro'yxatga hech narsa qo'shmagandek. Qo'ng'iroq qilish buyruq satridan manzil yoki ismni kiritish orqali amalga oshirilishi mumkin.

Є ryznitsya kazuvati im'ya chi manzili. TrustedHosts-da faqat manzillar mavjud bo'lsa, sessiyani ko'rinmaydigan nom bilan oching va navpaki - agar siz im'ya ni ko'rsatsangiz, ko'rinmaydigan manzilga biriktiring. Tse ga qo'ng'iroq qiling.

nega boshqacha

Yoqish-PSRemoting ko'proq o'z qo'llaringiz bilan rob, "winrm quickconfig" ni pasaytiring. Set-WSManQuickConfig cmdlet "winrm quickconfig" bilan bir xil ishlaydi. Enable-PSRemoting, agar siz tizimni sozlagan bo'lsangiz, Set-WSManQuickConfig-ni ishga tushiradi.

Masofaviy ulanish
1. Seanslar 1 dan 1 gacha
- deb qichqirdi jamoa
Enter-PSSession -ComputerName testi
Masofadagi mashinada korpusni yechib olasiz. Siz localhost-ga kirish orqali o'zingizga ulanishingiz mumkin. Parametr bilan muqobil kreditlar tayinlanadi - Ishonchnoma, cmdlet orqali chiqdi chiqish-PSSession

Shu tarzda almashish:

  • boshqa soch turmagi bilan ishlash mumkin emas - 1 seansdan kamroq, sessiya o'rtasida keyingi ulanish mumkin emas
  • Grafik interfeys yaratish uchun buyruqlarni yutib bo'lmaydi. Agar siz qobiqni osib qo'ymoqchi bo'lsangiz, uni osib qo'yish uchun Ctrl + C tugmalarini bosing
  • siz o'zingizning buyruqlaringizni bajara oladigan buyruqlarni bajara olmaysiz, masalan, nslookup, netsh
  • skriptlarni ishga tushirishingiz mumkin, chunki siyosat ularni masofaviy kompyuterda ishga tushirishga imkon beradi
  • interaktiv seansga qo'shila olmaysiz, siz "tarmoqqa kirish" kabi ketasiz Birlashtirilgan diskga biriktirilgan nibi Tom tizimga kirish skriptini ishga tushirmaydi va siz masofaviy kompyuterda uy papkasini ololmaysiz (argument uy papkasini va tizimga kirish skriptlarini xaritalash uchun emas)
  • Siz u erda bir xil vinolarni topish uchun masofaviy mashinadagi muxbir bilan muloqot qila olmaysiz. Oxirida sizga ko'rsatishga yoki siz bilan do'stlashishga shoshilmang.
Bu usul server savdo va ulanish so'ng, oddiy operatsiyalar, zaishov uchun eng yaxshi hisoblanadi. Agar siz olomondagi o'zgarishlarni bartaraf etishingiz kerak bo'lsa, sizga uch martalik operatsiya kerak (ko'p yillar yoki undan ko'p kunlar), siz ma'muriyat uchun ko'proq imkoniyatlarga muhtojsiz, keyin siz so'rab texnikani yutib olishingiz kerak.
Izoh.
to'rdan o'tgan jismlar hosil bo'ladi va yashashni to'xtatadi. Hidi usullar bilan ko'rinadi, hokimiyatni tashlab ketmoqda. Sizning mashinangizda Vityagti ob'êkt, pochakluvat va orqaga surmanglar. Agar ko'proq yozish kerak bo'lsa, men uni to'g'ri qo'shaman.

2. Seanslar 1-dan ko'pga
Chaqiruv - Buyruq
ko'rishimiz mumkin bo'lgan narsani quyidagi tarzda bildiramiz:
$sb = (koma bilan ajratilgan masofaviy mashina uchun buyruqlar)
masofaviy Test1 va Test2 mashinalariga uzatiladi
Invoke-Command -ComputerName Test1, Test2 -ScriptBlock $sb
bir vaqtning o'zida siz 32 ta mashinani tashlashingiz mumkin. Muqobil kredit sifatida, keyin -Credential parametri g'alaba qozonadi

-ScriptBlock parametrini almashtirish uchun skriptni qayta o'tkazish uchun -FilePath yozing, masofaviy kompyuterda faylga kirish shart EMAS, zaxira qismlarni tartibga solish, HTTP orqali uzatish va shu tomondan yopilish.

Esda tutingki, u tomonda yangi osprey bo'ladi, shuning uchun skriptingiz konsolingizdagi qiymatni bekor qilmaydi va o'zgartirilgan skriptlar bo'sh ko'rinishi mumkin. Buning uchun parametrlar bilan tayyor ko'rsatmalar va skriptlarni yuboring.

Invoke-Command-ni to'liq qayta yozish uchun siz satrlarni skript bloklariga o'zgartirishingiz kerak. Masalan, sizda bunday ro'yxatda yotish buyrug'i bor, siz qator yaratishingiz, uni ScriptBlock-ga o'zgartirishingiz va uni masofaviy kompyuterga yuborishingiz kerak:
$sb = ::Create($SomeString)
quda78
Maqolada yana bir muhim moment - parametrlarni skriptdan masofaviy mashinaga o'tkazish yo'q qilindi.

$deployRemote = (
param(
$targetEnvName,
$targetUsername)
$Global:ErrorActionPreference = "To'xtatish"
#…
}

Invoke-Command -Session $session -ScriptBlock $deployRemote -ArgumentList($targetEnvName, $targetUsername)


Shunday qilib, haqiqiy kamchiliklar. Zrobiv svidomo, parametrlar va tavsiflar bilan qarashni bezovta qilmaslik uchun. Rahmat. -ArgumentList parametri skript bloklari bilan ham, skriptlar bilan ham ishlaydi

3. Seanslar
Agar u tomondan xotirada doimiy osib qo'yish uchun vishik nusxasi yaratilsa va unga buyruqlar yuboriladi. Natijada, unga qayta ulanish, vikonannya uchun centity-ni ishga tushirish, turli skriptlardan yoki turli xil koristuvachalardan foydalanish mumkin. Misol uchun, sizda bir vaqtning o'zida bitta vazifani bajaradigan skriptlar to'plami mavjud, ularni bitta masofaviy sessiyaga ulashingiz, oldinga buyruqlar ishining natijalarini ishga tushirishingiz, modullardan biri, oxirgi o'zgarish, oxirgi to'xtash. , oxirigacha.

Seans New-PSSession cmdleti tomonidan yaratilgan, natijani o'zgartirish bilan saqlash mumkin
$DC01 = Yangi PSSession -ComputerName DC01 $Controllers = Yangi PSSession DC01, DC02, DC03
Invoke-Command-dagi kabi bir xil ulanish parametrlaridan foydalanishingiz mumkin

Yak vikoristovuvati:
Yakscho 1dan 1ga
Kirish-PSSession -Session $DC01
Yakscho 1-dan ko'pga
Invoke-Command -Sessions $Controllers -ScriptBlock (get-eventlog -logname security -newest 50)
Get-PSSession yordami uchun seansni ko'rishingiz mumkinligini ko'rishingiz mumkin, Remove-PSSession-ni yoping
barcha seanslarni yoping
Get-PSSession | O'chirish-PSSession
Connect-PSSession yordamida sessiyaga ulanishingiz, Disconnect-PSSession orqali ulanishingiz mumkin.

Invoke-Command darhol uzilgan seansni yaratishi, uyg'onish va ulanish uchun buyruqlarni ishga tushirishi mumkin, keyinroq siz qayta ulanishingiz va ish natijalarini olishingiz mumkin. -Disconnected parametri bilan kurashing. Recieve-PSSession cmdlet orqali natijalar olinmoqda.

Seanslar juda moslashtirilgan bo'lishi mumkin, buyruqlar, modullar va boshqalar to'plami bilan sessiyalarni yaratish mumkin. Maxsus so'nggi nuqtalar deb ataladi

Xulosa: Windows PowerShell-ning omon qolish qobiliyatini tushunish.

Weekend Scripter: Windows masofaviy kerningni yoqadi.

Microsoft Scripting Guy, Ed Wilson qo'ng'iroqda. Bugun men yangi Windows PowerShell 3.0 Step by Step kitobimdan parchani nashr etmoqchiman, u Microsoft Press-ga o'xshaydi. Shu bilan birga, kitobni oldindan bron qilish mumkin.

WinRM - Windows yadrosini olib tashlang

Windows Server 2012 da WinRM uning ishlashini ta'minlash uchun qulf ortida ishlaydi Windows buyruqlari PowerShell. WinRM - Microsoft-ning WS-Management Protocol sanoat standartini amalga oshirishi. Shuning uchun WinRM bir qarashda masofaviy tizimlarga kirishning qulay usuliga ega, u xavfsizlik devorini yopishga muvaffaq bo'ldi. Yangi CIM buyruqlarini yutib yuboradigan xuddi shu mexanizm. Shu tarzda buyruqlarni bajarish yoki Windows PowerShell interaktiv konsolini ochish uchun ishlaydigan Windows Server 2012 mashinasiga ulanishingiz mumkin. Windows 8 da, boshqa tomondan, WinRM bloklangan. Bu keyingi nima bo'lishini, nima qilish kerakligini anglatmaydi, keyin cmdletni ishga tushiring Yoqish-PSRemoting. Ushbu cmdletni ishga tushirishda quyidagi qatorlar ko'rsatiladi:

1. WinRM xizmatini ishga tushiring yoki qayta yoqing.

2. WinRM xizmatini ishga tushirish turi avtomatik ravishda o'rnatiladi.

3. Barcha IP manzillar uchun ulanishlarni qabul qilish uchun tinglovchi yaratiladi.

4. WS-Man trafigi uchun xavfsizlik devorini o'chiring.

5. Yuklangan Microsoft.powershell konfiguratsiyasi

6. Yuklangan Microsoft.powershell.workflow konfiguratsiyasi

7. Yuklangan Microsoft.powershell32 konfiguratsiyasi

Ushbu jarayonni cho'zish orqali terining holatini yaxshilash uchun energiya berish funktsiyasi. Agar siz funktsiya nima ekanligini bilsangiz va undan oldin o'zgartirishlar kiritish niyatingiz bo'lmasa, ushbu buyruqni kalit bilan bajarishingiz mumkin - kuch va shu tarzda, tasdiqlash ko'rsatilmaydi. Ushbu buyruqning sintaksisi quyida keltirilgan.

Yoqish-PSRemoting - Majburlash

Endi Enable-PSRemoting funksiyasini interaktiv rejimga, shu jumladan ko'rsatiladigan barcha ma'lumotlarni o'tkazamiz.

PS C:\> Yoqish-PSRemoting

WinRM tezkor konfiguratsiyasi

Windows Remote Management (WinRM) xizmati yordamida ushbu dasturni samarali boshqarishni ta'minlash uchun "Set-WSManQuickConfig" tugmasini bosish. Bunga quyidagilar kiradi:

1. WinRM xizmatini ishga tushirish yoki qayta ishga tushirish (agar allaqachon boshlangan bo'lsa).

2. WinRM xizmatini ishga tushirish turini Avtomatik qilib sozlash

3. Har qanday IP manzil bo'yicha so'rovlarni qabul qilish uchun tinglovchi yaratish

4. WS-Management trafigi uchun Windows xavfsizlik devori tartiblangan istisno qoidalarini yoqish (faqat http uchun).

Davom etishni xohlaysizmi?

WinRM so'rovlarni qabul qilish uchun yangilanishi mumkin.

WinRM xizmati turi muvaffaqiyatli o'zgartirildi.

WinRM xizmati ishga tushirildi.

WinRM masofaviy boshqaruv uchun yangilanishi mumkin.

Ushbu mashinadagi istalgan IP-ga WS-Man so'rovlari uchun HTTP://* da WinRM tinglovchisi yaratildi.

WinRM Firewall istisnosi yoqilgan.

microsoft.powershell SDDL:

[Y] Ha [A] Hammaga ha [N] Yoʻq [L] Hammaga yoʻq [S] Toʻxtatib turish [?] Yordam (standart “Y”):y

Haqiqatan ham bu amalni bajarmoqchimisiz?

"Ism" maqsadi bo'yicha "Set-PSSessionConfiguration" operatsiyasini bajarish.

microsoft.powershell.workflow SDDL:

O:NSG:YOMON:P(A;;GA;;;BA)(A;;GA;;RM)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;; ;W.D.). Bu bo'ladi

tanlangan foydalanuvchilarga ushbu kompyuterda Windows PowerShell buyruqlarini masofadan boshqarishga ruxsat bering".

[Y] Ha [A] Hammaga ha [N] Yoʻq [L] Hammaga yoʻq [S] Toʻxtatib turish [?] Yordam (standart “Y”):y

Haqiqatan ham bu amalni bajarmoqchimisiz?

"Ism" maqsadi bo'yicha "Set-PSSessionConfiguration" operatsiyasini bajarish.

microsoft.powershell32 SDDL:

O:NSG:YOMON:P(A;;GA;;;BA)(A;;GA;;RM)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;; ;W.D.). Bu bo'ladi

tanlangan foydalanuvchilarga ushbu kompyuterda Windows PowerShell buyruqlarini masofadan boshqarishga ruxsat bering".

[Y] Ha [A] Hammaga ha [N] Yoʻq [L] Hammaga yoʻq [S] Toʻxtatib turish [?] Yordam (standart “Y”):y

Shundan so'ng, konfiguratsiya topilgandan so'ng, siz qo'shimcha cmdlet uchun WinRM ustuvorligini o'zgartirishingiz mumkin Test-WSMan. Agar tizim to'g'ri sozlangan bo'lsa, joriy ma'lumotlarga o'xshash ma'lumotlar ko'rsatiladi.

PS C:\>Test-WSMan -ComputerName w8c504

Mahsulot versiyasi: OS: 0.0.0 SP: 0.0 stack: 3.0

Ushbu cmdlet Windows PowerShell 2.0 kompyuterlarida ham ishlaydi. Quyidagi maslahatlar Windows Server 2008 z-da domen boshqaruvchisiga qadar ilustraê Windows-ni o'rnating WinRM o'rnatilgan PowerShell 2.0.

PS C:\>Test-WSMan -ComputerName dc1

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

Protokol versiyasi: http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd

Mahsulot sotuvchisi: Microsoft korporatsiyasi

Mahsulot versiyasi: OS: 0.0.0 SP: 0.0 stack: 2.0

Agar WinRM o'rnatilmagan bo'lsa, kechirim haqidagi bildirishnoma o'chiriladi. Windows 8 operatsion tizimi bilan bir nuqtada, ogohlantirish keladi.

PS C:\>Test-WSMan -ComputerName w8c10

Test-WSMan:

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

Machine="w8c504.iammred.net">WinRM-ni unutmang. Tasdiqlash

ko'rsatilgan kompyuter nomi to'g'ri ekanligini, kompyuter orqali kirish mumkin

tarmoq va WinRM xizmati uchun xavfsizlik devori istisnosi yoqilgan va ruxsat beradi

ushbu kompyuterdan kirish. Odatiy bo'lib, umumiy uchun WinRM Firewall istisnosi

Profillar bir xil mahalliy quyi tarmoq ichidagi masofaviy kompyuterlarga kirishni cheklaydi.

Satrda: 1 ta belgi: 1

Test-WSMan -Kompyuter nomi w8c10

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

CategoryInfo: InvalidOperation: (w8c10:String) , InvalidOperationException

FullyQualifiedErrorId: WsManError,Microsoft.WSMan.Management.TestWSManCommand

Yodda tutingki, Enable-PSRemoting buyrug'i bilan masofadan boshqarishni yoqish Masofaviy boshqaruv xavfsizlik devorini o'chirib qo'ymaydi, shuning uchun Windows 8 mashinasiga ping kiritishga urinish muvaffaqiyatli bo'lmadi.

PS C:\> ping w8c504

32 bayt ma'lumot bilan w8c504.iammred.net ping:

So‘rov muddati tugadi.

So‘rov muddati tugadi.

So‘rov muddati tugadi.

So‘rov muddati tugadi.

192.168.0.56 uchun ping statistikasi:

Paketlar: Yuborilgan = 4, Qabul qilingan = 0, Yo'qolgan = 4 (100% yo'qotish).

Hammasi Windows Server 2012 uchun ishlaydi.

PS C:\> ping w8s504

32 bayt ma'lumot bilan w8s504.iammred.net ping:

<1ms TTL=128

192.168.0.57 dan javob: bayt=32 vaqt<1ms TTL=128

192.168.0.57 dan javob: bayt=32 vaqt<1ms TTL=128

192.168.0.57 dan javob: bayt=32 vaqt<1ms TTL=128

192.168.0.57 uchun ping statistikasi:

Paketlar: Yuborilgan = 4, Qabul qilingan = 4, Yo'qolgan = 0 (0% yo'qotish),

Yozgi soatda taxminan aylanish vaqtlari:

Minimal = 0ms, Maksimal = 0ms, O'rtacha = 0ms

WinRM-ni yaxshilash uchun kerak bo'lgan hamma narsa shu.

Ed Uilson, Microsoft skriptchisi

Asl:

Texnologiyalar