Açıq
Yaxın

Powershell vasitəsilə başqa kompüterə qoşulma. Powershell: Invoke-Command cmdletindən istifadə. Birdən çox idarəetmə

  • Dərslik

Burada minimum nəzəriyyə, əsasən praktiki hissə var. O, WinRM-i necə konfiqurasiya etməyi, şəbəkə adapteri profilini necə dəyişdirməyi təsvir edir, filtrləmə ilə TrustedHosts-a əlavə etmək üçün skript təqdim edir, etibarlı hostların nə üçün lazım olduğunu izah edir və oturub uzaq maşınları dərhal idarə edə bilməniz üçün səthi uzaq əlaqələri müzakirə edir.

Uzaqdan idarəetməni konfiqurasiya etməyin ən asan yolu işə salmaqdır Aktivləşdirin-PSRemoting Powershell-də administrator hüquqları ilə. Aşağıdakılar baş verəcək:

  • WinRM xidməti başlayacaq (əgər işləyirsə, yenidən başlayacaq)
  • WinRM xidməti vəziyyətə keçəcək - başlanğıcda avtomatik işə salın
  • üçün WinRM dinləyicisi yaradılacaq HTTP limanda trafik 5985 bütün yerli IP ünvanları üçün
  • WinRM dinləyicisi üçün firewall qaydası yaradılacaq. Diqqət, şəbəkə kartlarından hər hansı birinin "ictimai" şəbəkə növü varsa, bu addım səhvlə uğursuz olacaq, çünki belə bir kartda port açmaq yaxşı deyil. Konfiqurasiya edərkən bu xətanı alsanız, bu şəbəkə cmdletinin profilini dəyişdirin Set-NetConnectionProfile və bundan sonra Enable-PSRemoting-i yenidən işə salın. Əgər “İctimai Şəbəkə” profilli şəbəkə kartına ehtiyacınız varsa, Enable-PSRemoting parametrini işə salın -NetworkProfileCheck-i keçin bu halda firewall qaydaları yalnız yerli şəbəkədən yaradılacaq.
Bundan sonra, idarəetmənin həyata keçiriləcəyi maşından uzaq maşına qoşulmağa icazə verməlisiniz. Bu, uzaq bir maşın əvəzinə özünüzü əvəz etməklə uzaqdan idarəetmə seansını və ya DNS-ni sındırmaq riskini azaltmaq və zorla icazə vermədiyiniz maşınlarda skriptlərin icrasının qarşısını almaq üçün təhlükəsizlik məqsədləri üçün edildi.

Hara qoşula biləcəyinizi yoxlamaq üçün istifadə edin:
get-item wsman:\localhost\Client\TrustedHosts
hər kəsə qoşulmaq icazəsi üçün
set-element wsman:localhost\client\trustedhosts -dəyər *
* işarəsi ilə hər kəsə girişi açsanız, WinRM yoxlamadan BÜTÜN maşınlara qoşulacaq. Yadda saxlayın ki, siz yerli şəbəkənizdən potensial sındırmalar üçün özünüzü açırsınız. Qoşulmağınız lazım olan host ünvanlarını göstərmək daha yaxşıdır, onda WinRM bütün digər ünvanları və ya adları rədd edəcək. Əgər idarə olunan maşın bir domendədirsə, o, həmin domendəki bütün maşınlara etibar edəcək. Əgər o, domendə və ya başqa domendə deyilsə, onda siz TrustedHosts-da qoşulacağımız maşının ünvanını və ya adını qeyd etməlisiniz. Qoşulduğumuz maşına özünüzü əlavə etməyə ehtiyac yoxdur.

Yardımda əmrlər var, mən onları bir az skript halına gətirdim
################################################# ######################################################, bu, bir xətt artıq varsa, süzgəcdən keçirilmişdir # Parametri birbaşa göstərərək onu komanda xəttindən çəkə bilərsiniz, məsələn # .\Add-TrustedHost.ps1 192.168.2.1 ##################### ################################################# ######## ###### param ($NewHost = "192.168.2.89") Yazı-Host "əlavə host: $NewHost" $prev = (get-item WSMan:\localhost\Client\TrustedHosts ).value if (($prev .Contains($NewHost)) -eq $false) ( if ($prev -eq "") ( set-element WSMan:\localhost\Client\TrustedHosts -Dəyər "$) 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 !}
belə bir qeydin olub olmadığını yoxlayır, əgər yoxdursa, onu siyahıya əlavə edir; Ünvanı və ya adı göstərərək əmr satırından zəng edə bilərsiniz.

Ad və ya ünvan göstərmək arasında fərq var. TrustedHosts-da yalnız bir ünvan varsa, o zaman adı ilə sessiya açmaq mümkün olmayacaq və əksinə - bir ad göstərsəniz, o zaman ünvana əlavə etmək mümkün olmayacaq. Bunu nəzərə alın.

fərq nədir

Enable-PSRemoting "winrm quickconfig"dən daha çox şey edir. Set-WSManQuickConfig cmdlet "winrm quickconfig" ilə eyni şeyi edir. Enable-PSRemoting sistemi konfiqurasiya edərkən Set-WSManQuickConfig-i işə salır

Uzaqdan bağlantılar
1. 1-dən 1-ə qədər seanslar
əmrlə açın
Enter-PSSession -ComputerName Testi
Uzaqdan idarə olunan maşında bir qabıq alacaqsınız. Localhost göstərərək özünüzə qoşula bilərsiniz. Alternativ kreditlər parametrlə müəyyən edilir - Etibarnamə, çıxış cmdlet ilə baş verir Çıxış-PSSession

Məhdudiyyətlər aşağıdakılardır:

  • ikinci sıçrayış edə bilməzsiniz - cəmi 1 seans, bir seans ərzində daha çox qoşula bilməzsiniz
  • GUI əmrlərindən istifadə edə bilməzsiniz. Bunu etsəniz, qabıq asılacaq, asmaq üçün Ctrl+C düymələrini basın
  • nslookup, netsh kimi öz qabığı olan əmrləri işlədə bilməzsiniz
  • uzaq maşındakı işə salma siyasəti onları işə salmağa imkan verirsə, skriptləri işlədə bilərsiniz
  • interaktiv sessiyaya qoşula bilməzsiniz, "şəbəkəyə giriş" kimi daxil olursunuz, sanki şəbəkə sürücüsünə qoşulmuşdular. Buna görə də, Giriş skriptləri işləməyəcək və siz uzaq maşında əsas qovluğu əldə edə bilməyəcəksiniz (ev qovluqlarını Giriş skriptləri ilə əlaqələndirməməyin başqa bir səbəbi)
  • istifadəçi orada daxil olsa belə, uzaq maşındakı istifadəçi ilə əlaqə qura bilməyəcəksiniz. Ona pəncərəni göstərə və ya onun üçün heç nə çap edə bilməyəcəksiniz.
Bu üsul sadə əməliyyatlar üçün ən yaxşısıdır: mən daxil oldum, serverə girdim və əlaqəni kəsdim. Dəyişənləri bir yerdə saxlamaq lazımdırsa, uzun bir əməliyyata (çox saat və ya gün) ehtiyacınız varsa, daha çox idarəetmə imkanlarına ehtiyacınız varsa, daha qabaqcıl texnologiyadan istifadə etməlisiniz.
Şərh.
şəbəkə üzərindən ötürülən obyektlər kəsilir və fəaliyyətini dayandırır. Onların üsulları çıxarılır, lakin xüsusiyyətləri qalır. Siz avtomobilinizin üzərinə bir əşya çəkə, bəzi sehrlər edə və onu geri qoya bilməyəcəksiniz. Daha çox ehtiyacınız varsa, yazın, ayrıca əlavə edəcəm.

2. 1-dən çox seans
Çağır-Komanda
Nə edəcəyimizi belə müəyyənləşdiririk:
$sb = (nöqtəli vergüllə ayrılmış uzaq maşın üçün əmrlər)
Test1 və Test2-ni uzaq maşınlara ötürmək
Invoke-Command -ComputerName Test1, Test2 -ScriptBlock $sb
Onu bir anda 32 avtomobilə atmaq olar. Alternativ kreditlər varsa, o zaman -Credential parametrindən istifadə edin

-FilePath yazdığımız -ScriptBlock parametrinin yerinə bütün skripti köçürmək üçün uzaq maşının fayla girişi OLMAZ, o, hissələrə bölünəcək, HTTP vasitəsilə ötürüləcək və digər tərəfdən icra ediləcək.

Unutmayın ki, o tərəfdə yeni bir miqyas olacaq, buna görə skriptiniz konsolunuzdan dəyərlər almayacaq və skript dəyişənləri bu tərəfdə boş ola bilər. Buna görə, tamamilə hazır təlimatları və skriptləri parametrləri ilə bir anda köçürün.

Invoke-Command-dan tam istifadə etmək üçün siz xətləri skript bloklarına çevirə bilməlisiniz. Məsələn, bəzi siyahıdan asılı olan əmrləriniz var, siz xətt yaratmalı, onu ScriptBlock-a çevirməli və uzaq kompüterə göndərməlisiniz:
$sb = ::Create($SomeString)
quda78
Məqalə çox vacib bir məqamı qaçırdı - parametrləri uzaq bir maşındakı skriptə ötürmək.

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

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


Bəli, həqiqətən də qaçırdım. Baxışı parametrlər və təsvirlərlə qarışdırmamaq üçün bunu qəsdən etdim. Çox sağ ol. -ArgumentList parametri həm skript blokları, həm də skriptlərlə işləyir

3. Sessiyalar
Bu, kodun bir nüsxəsinin digər tərəfdən daim yaddaşda asılı olaraq yaradıldığı və ona əmrlərin göndərildiyi zamandır. Nəticədə, siz ona yenidən qoşula, icra üçün işə salmaq üçün uzun müddət çəkə və ya müxtəlif skriptlərdən və ya fərqli istifadəçilərdən qoşula bilərsiniz. Məsələn, bir problemi hissə-hissə həll edən skriptlər dəsti var, onların hər biri öz növbəsində bir uzaq sessiyaya qoşula, əvvəlki əmrlərin nəticələrinə baxa, eyni yüklənmiş modullara, ümumi dəyişənlərə, ümumi mühitə sahib ola bilər. sessiya məcburi bağlanır.

Sessiya New-PSSession cmdletindən istifadə etməklə yaradılır, nəticə dəyişəndə ​​yerləşdirilə bilər
$DC01 = New-PSSession -ComputerName DC01 $Controllers = New-PSSession DC01, DC02, DC03
Invoke-Command-da olduğu kimi eyni əlaqə parametrlərindən istifadə edə bilərsiniz

Necə istifadə etməli:
1-ə 1 olarsa
Giriş-PSSession -Sessiya $DC01
1-dən çoxsa
Invoke-Command -Sessions $Controllers -ScriptBlock (get-eventlog -logname təhlükəsizliyi -en yeni 50)
Get-PSSession istifadə edərək hansı seansların açıq olduğunu görə bilərsiniz, Remove-PSSession-u bağlayın
bütün seansları tamamilə bağlayın
Get-PSSession | Sil-PSSession
Connect-PSSession istifadə edərək sessiyaya əlavə edə, Disconnect-PSSession istifadə edərək əlaqəni kəsə bilərsiniz

Invoke-Command dərhal əlaqəsi kəsilmiş seans yarada bilər, o, icra üçün əmrlər göndərir və daha sonra işin nəticələrini bağlaya və yükləyə bilərsiniz; Bu -Disconnected parametri ilə edilir. Recieve-PSSession cmdletindən istifadə edərək nəticələrin alınması.

Sessiyaların çoxlu parametrləri var, hətta kəsilmiş əmrlər, modullar və s. dəsti ilə sessiyalar yaratmaq mümkündür. Fərdi son nöqtələr adlanır

Bir müddət əvvəl Powershell vasitəsilə uzaqdan giriş qurmaq üçün bir az vaxt sərf etməli oldum. Bu yanaşma mənə bir sıra hallarda Uzaq Masaüstü Xidmətlərinə çox yaxşı alternativ kimi görünür (uzaq VDS hostinqində xidməti yenidən başladın, ehtiyat nüsxələri çıxarın, sistem statusuna baxın və s.).

Uzaqdan Powershell seansları yaratmaq imkanı 2-ci versiyada təqdim edilib. Bunun üçün Enter-PSSession / Invoke-Command cmdletindən istifadə edin. Ancaq onlardan istifadə etməzdən əvvəl ətraf mühit hazırlanmalıdır.

Biz nə edirik serverdə:

Addım 1: Powershell konsolunu açın və Force düyməsi ilə Enable-PSRemoting cmdletindən istifadə edərək uzaq sessiyaları aktivləşdirin.

Enable-PSRemoting -Force

Addım 2: WinRM xidmətinin işlədiyinə əmin olun.

Başlanğıc Xidməti WinRM

Addım 3: Biz təhlükəsizlik duvarında qaydaları konfiqurasiya edirik ki, daxil olan əlaqələr mümkün olsun.

Kimi istifadə ediləcək kompüterdə müştəri Siz həmçinin bir neçə addım yerinə yetirməlisiniz:

Addım 1: Uzaq hostlara qoşulmağa icazə verin. İstənilən qovşaqlara daxil olmaq üçün aşağıdakı konstruksiyadan istifadə edə bilərsiniz:

Set-Item wsman:\localhost\client\trustedhosts * -Force

Addım 2: Firewallunuzun gedən bağlantıları blok etmədiyinə əmin olun.

İndi Powershell vasitəsilə uzaq qovşağa qoşulmaq üçün bunu edə bilərsiniz:

Daxil olun-PSSession 192.168.1.160 -Krediyent VMNAME\User

192.168.1.160 və VMNAME\User dəyərləri serverdəki uzaq hostun ünvanı və Windows istifadəçi adı ilə əvəz edilməlidir.

İndi Powershell vasitəsilə uzaqdan giriş işləyir. Bununla belə, daha bir nüans var. Bəlkə də bəziləriniz Powershell-də profillərdən istifadə edirsiniz. Profillər, konsolun özü işə salındıqda işə salınan xüsusi skriptlərdir. Burada, məsələn, bütün lazımi ləqəbləri təyin edə və ilkin addımları yerinə yetirə bilərsiniz.

Problem ondadır ki, uzaqdan seanslardan istifadə edərkən profillər başlamaz. Bu, müxtəlif əlaqə konfiqurasiyalarından istifadə etməklə həll edilə bilər. Bunu etmək üçün əvvəlcə uzaq serverdə konfiqurasiyanı qeydiyyatdan keçirməlisiniz. Bunu Register-PSSessionConfiguration cmdletini işlətməklə edə bilərsiniz. Bu halda, hər bir konfiqurasiyaya bir ad verilir. Hər bir konfiqurasiya üçün skriptə gedən yolu təyin edə bilərsiniz, bu da sessiya başlayanda yerinə yetiriləcək.

Register-PSSessionConfiguration -name Config1 -startupScript c:\scripts\Startup.ps1

Sonra, uzaq hosta qoşulduqda Enter-PSSession cmdletindən istifadə edərkən konfiqurasiya adını göstərməlisiniz.

Enter-PSSession 192.168.1.160 -ConfigurationName Config1 -Etibarnamə VMNAME\User

İndi Uzaq Masaüstü Xidmətləri vasitəsilə əlaqə seansı yaratmaq üçün server resurslarını israf etməyin qarşısını ala və Powershell-dən istifadə edərək serveri uzaqdan idarə edə bilərsiniz.

powershell proqramının uzaqdan işə salınması

İnteraktiv sessiyaya başlamaq

Tək uzaq kompüterlə interaktiv seansa başlamaq üçün Enter-PSSession cmdletindən istifadə edin. Məsələn, uzaq kompüter Server01 ilə interaktiv seansa başlamaq üçün daxil edin:
daxil pssession Server01
Komanda sorğusu qoşulduğunuz kompüterin adını göstərəcək. Gələcəkdə komanda xəttinə daxil edilmiş bütün əmrlər uzaq kompüterdə işlədiləcək və nəticələr yerli kompüterdə göstəriləcəkdir.
İnteraktiv sessiyanı bitirmək üçün daxil edin:
çıxış-ehtiras

Uzaqdan əmrin icrası

Bir və ya bir neçə uzaq kompüterdə hər hansı əmri yerinə yetirmək üçün Invoke-Command cmdlet-dən istifadə edin. Məsələn, Server01 və Server02 uzaq kompüterlərində Get-UICulture əmrini işə salmaq üçün daxil edin:

Invoke-command -kompüter adı Server01, Server02 (get-UICulture)
Çıxış kompüterinizə qaytarılacaq.
Skripti bir və ya bir neçə uzaq kompüterdə işə salmaq üçün Invoke-Command cmdletinin FilePath parametrindən istifadə edin. Skript aktiv və ya yerli kompüterdə mövcud olmalıdır. Nəticələr yerli kompüterinizə qaytarılacaq.
Məsələn, aşağıdakı əmr DiskCollect.ps1 skriptini uzaq kompüterlərdə Server01 və Server02 işlədir.
invoke-command -kompüter adı Server01, Server02 -filepath c:\Scripts\DiskCollect.ps1

Daimi əlaqənin qurulması
Paylaşılan məlumatlarla əlaqəli əmrlər seriyasını yerinə yetirmək üçün uzaq kompüterdə sessiya yaradın və sonra yaradılmış sessiyada əmrləri işə salmaq üçün Invoke-Command cmdletindən istifadə edin. Uzaqdan seans yaratmaq üçün New-PSSession cmdletindən istifadə edin.
Məsələn, aşağıdakı əmr Server01 kompüterində uzaq sessiya və Server02 kompüterində başqa bir uzaq sessiya yaradır. O, sessiya obyektlərini $s dəyişənində saxlayır.
$s = new-pssession -kompüter adı Server01, Server02
Seanslar qurulduqdan sonra onlar üzərində istənilən əmri işlədə bilərsiniz. Seanslar davamlı olduğundan, məlumatları bir komandada toplaya və sonrakı bir əmrdə istifadə edə bilərsiniz.
Məsələn, aşağıdakı əmr Get-Hotfix əmrini $s dəyişənindəki seanslar arasında işlədir və nəticələri $h dəyişənində saxlayır. $h dəyişəni hər sessiyada $s-da yaradılır, lakin yerli sessiyada mövcud deyil.
invoke-command -session $s ($h = düzəliş almaq)
$h-dakı məlumatlar indi aşağıdakı kimi sonrakı əmrlərdə istifadə edilə bilər. Nəticələr yerli kompüterinizdə göstəriləcək.

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

Hər şey https://technet.microsoft.com/ru-ru/library/dd819505.aspx saytından götürülüb

Bu gün PowerShell Remoting Windows əməliyyat sistemlərinin uzaqdan idarə edilməsi üçün əsas vasitədir. Buna görə də, hər bir Windows sistem administratoru onun imkanlarını bilməli və gündəlik işlərində istifadə etməlidir. PowerShell Remoting istifadə edərək uzaq kompüterlərdə əmrləri yerinə yetirmək üçün Powershell cmdletindən istifadə edə bilərsiniz Çağır-Komanda(icm təxəllüsü).

Invoke-Command cmdletinin funksionallığı İdarəetmə üçün Veb Xidmətləri protokoluna əsaslanır ( WS-İdarəetmə) və Windows Uzaqdan İdarəetmə xidməti ( WinRM), ünsiyyət üçün istifadə olunur. Kompüterlər arasında əlaqə HTTP (standart) və ya HTTPS vasitəsilə həyata keçirilir. İki kompüter arasındakı bütün trafik protokol səviyyəsində şifrələnir. NTLM və Kerberos daxil olmaqla bir neçə autentifikasiya metodu dəstəklənir. Uzaqdan seanslar yaratmaq imkanı Powershell 2.0-da təqdim edilmişdir.

PowerShell Remoting vasitəsilə kompüterə uzaqdan qoşulmaq üçün onda bir sıra parametrləri yerinə yetirməlisiniz:

  1. Uzaqdan bağlantılara icazə verməlisiniz: Enable-PSRemoting -Force
  2. WinRM xidmətini işə salın: Start-Service WinRM
  3. Bu protokoldan istifadə edərək daxil olan əlaqələrə icazə verən Windows Firewall qaydası yaradın.

PowerShell Remoting vasitəsilə digər kompüterləri/serverləri uzaqdan idarə etməyi planlaşdırdığınız kompüter də konfiqurasiya edilməlidir:

  1. Uzaq sistemlərə qoşulmağa icazə verməlisiniz. Bütün uzaq kompüterlərə girişi təmin etmək üçün aşağıdakı əmrdən istifadə edin: Set-Item wsman:\localhost\client\trustedhosts * -Force
  2. Firewallunuzun gedən əlaqələri blok etmədiyinə əmin olun.

İndi Powershell Remoting vasitəsilə uzaq maşında əmri yerinə yetirmək üçün (məsələn, Birikdirici çap xidmətini yenidən işə salmaq istəyirsiniz) aşağıdakı əmri yerinə yetirməlisiniz:

Invoke-Command -kompüter adı server1 -etimadnamə domeni\istifadəçi1 -skript bloku (Yenidən başladın-Servis spoler)

Bu əmr əmri yerinə yetirir Yenidən başladın-Xidmət qoruyucusu adlı uzaq kompüterdə server1. Etibarnamə parametri domen istifadəçi domeni\user1-in təhlükəsizlik kontekstində əmri işə salmaq üçün istifadə olunur.

İstifadəçi adını göstərdiyiniz zaman, Windows PowerShell istifadəçi1 hesabı üçün parol təqdim etməyinizi xahiş edən bir dialoq qutusu göstərir. Buruq mötərizələrdə göstərilən əmr daha sonra uzaq kompüterdə yerinə yetirilir və nəticələri konsola qaytarır. Əmr yerinə yetirildikdən sonra uzaqdan PoSh sessiyası başa çatır.

Arxa fonda tapşırığı yerinə yetirmək üçün siz -AsJob parametrini təyin edə bilərsiniz.

Arxa fonda əmr işlətdiyiniz zaman PowerShell nəticələrini qaytarmır. Onları qəbul etmək üçün siz Receive-Job cmdletindən istifadə etməlisiniz.

Get-job –id 3 |Qəbul-İş

Tək bir əmri deyil, bütün PowerShell skriptini işə salmaq üçün Invoke-Command cmdletində skript faylına gedən yolu müəyyən etmək üçün -ScriptBlock əvəzinə istifadə edilməli olan xüsusi arqument -FilePath var. Məsələn, dayandırılmış xidmətlərin siyahısını göstərən kiçik bir PoSh skripti yaratdım. Gəlin bu skripti uzaq kompüterdə işə salaq:

Invoke-Command -kompüter adı server1 -FilePath .\list.ps1

Burada qeyd etmək vacibdir ki, ps1 skript faylını özünüz uzaq kompüterə köçürməyə ehtiyac yoxdur. Skript icrasının nəticələri konsola çıxarılır.

Çox vaxt eyni əmri/skripti bir neçə kompüterdə eyni vaxtda yerinə yetirməyə ehtiyac var. Invoke-Command istifadə edərək, bu olduqca sadə şəkildə həyata keçirilir. Arqumentdə vergüllə ayrılmış kompüter adlarını sadalaya bilərsiniz -Kompüter Adı.

Invoke-Command -ScriptBlock (Yenidən başladın-Service spoler) -KompüterAdı server1,server2,server3

Və ya onu bir sıraya qoyun:

$srv_list = @(″server4″,″server5″,″server6″)
Invoke-Command -ScriptBlock (Yenidən başladın-Service spoler) -ComputerName $servers

Və ya test faylından yükləyin:

Invoke-Command -ScriptBlock (Yenidən başladın-Service spoler) –ComputerName (Get-Content .\servers_list.txt)

Komanda hər bir kompüterdə yerinə yetiriləcək və onun icrasının nəticələri konsolda göstəriləcək.

Qeyd. Invoke-Command cmdletinin parametri var Qaz Limiti bu, eyni əmrin eyni vaxtda yerinə yetirilə biləcəyi kompüterlərin maksimum sayını təyin etməyə imkan verir. Varsayılan olaraq, nömrə kompüter tərəfindən rəqəmlə məhdudlaşdırılır 32 . Lazım gələrsə, bu rəqəm artırıla bilər, lakin unutmayın ki, bu parametrin artırılması kompüterinizin prosessoruna və yaddaşına yükü artırır, ona görə də bu əməliyyat ehtiyatla aparılmalıdır.

Quraşdırıldıqda, boru kəmərlərindən istifadə edərək AD-dən seçilmiş bir neçə kompüterdə əmrləri eyni vaxtda icra etmək mümkün olur:

Get-ADComputer -Filter * -xassələr adı | seçin (Name="computername";Expression=($_."name"))| Invoke-Command -ScriptBlock (host adı)

Hər dəfə Invoke-Command işə salındıqda bəzi CPU vaxtını və resurslarını sərf edən yeni sessiya yaradılır. Resursları israf etməmək üçün bütün əmrləri yerinə yetirmək üçün bir seansdan istifadə edə bilərsiniz. Məsələn, kompüter kompüteri1 ilə yeni sessiya sessiyası1 yaradaq və onu $session dəyişəninə təyin edək və sonra bu sessiyada tapşırığımızı yerinə yetirək:

$sessiya = Yeni-PSSession -KompüterAdı kompüter1 -Sess1 adı
Invoke-Command -ScriptBlock (Yenidən Başlat-Service spoler) -Session $session

Siz PowerShell konsolunu bağlayana qədər bu Sessiya aktiv qalacaq. Siz həmçinin sessiyanı bağlaya bilərsiniz (Disconnect-PSSession) və ya silə bilərsiniz (Remove-PSSession).

Powershell o qədər sərindir ki, o, yalnız uzaq kompüterlərdə bəzi əmrləri yerinə yetirməyə deyil, həm də kompüterə tamamilə qoşulmağa və əmrləri sanki yerli kompüterdə işlətməyə imkan verir. Varsayılan olaraq, bu zövq təhlükəsizlik səbəbi ilə deaktiv edilir. Onu yandırmaq və qurmaq heç də çətin deyil, amma nədənsə çoxları bunu bilmir.

Uzaqdan idarəetmə üçün iki şərt lazımdır: birincisi, hər iki kompüterdə təbii olaraq Powershell, .NET Framework və Windows Uzaqdan İdarəetmə xidmətinin (2.0 və daha yuxarı versiyadan olan bütün komponentlər) quraşdırılması, ikincisi, onların quraşdırılması zəruridir. uzaqdan idarəetmə üçün konfiqurasiya edilmişdir. Windows 7 və daha yüksək versiyalar üçün heç bir şey quraşdırmanıza ehtiyac yoxdur, Windows XP/2003 üçün hər şey artıq mövcuddur;

Lazım olan hər şey quraşdırıldıqdan sonra uzaqdan bağlantılara icazə vermək üçün qoşulmalı olduğunuz kompüteri konfiqurasiya etməlisiniz. Bunun üçün winrm quickconfig və ya winrm qc əmrini işlətməlisiniz. Bu əmr eyni anda bir neçə işi yerinə yetirir:

  • WinRM xidmətini işə salır
  • WinRM xidmətinin başlanğıc növünü avtomatik olaraq dəyişdirir
  • İstənilən IP ünvanından gələn sorğuları qəbul etmək üçün dinləyici yaradır
  • WS-Management trafiki üçün firewall qaydalarını dəyişdirir (yalnız HTTP)

Bu məqamda kompüterin uzaqdan əlaqə qurmağa hazır olduğunu deyə bilərik, lakin praktikada Enable-PSRemoting əmrini də işə salmaq lazım gələ bilər.

Hamısı! Kompüterin quraşdırılması tamamlandı və siz ona qoşula bilərsiniz. İndi necə əlaqə qurmaq barədə bir neçə kəlmə. Ən asan yol cmdletdən istifadə etməkdir Giriş-PSSession , ardınca qoşulmaq istədiyiniz kompüterin adı, məsələn:

PSSession NameOfRemoteComputer daxil edin

Bu üsulla, əgər kompüterlər domenin üzvüdürsə və ya uzaq kompüterdə cari istifadəçi ilə eyni loqin və şifrə ilə “İdarəçilər” qrupunun üzvü olan istifadəçi varsa, qoşula biləcəksiniz.

Yeri gəlmişkən, standart olaraq, yalnız "İdarəçilər" qrupunun üzvləri uzaq kompüterə qoşula bilər (bunu başqa dəfə necə düzəltmək barədə danışacağıq).

Bəs kompüterlər bir domendə (və ya müxtəlif domenlərdə) deyilsə və administratorların giriş və parolları fərqlidirsə necə?

Bu halda, cmdlet Giriş-PSSession parametrlə istifadə edilməlidir- Etibarnamə , əlaqə üçün lazımi etimadnaməsini daxil etməyə imkan verir. Ancaq kompüterinizə qoşulmazdan əvvəl onu Etibarlı Hostlar siyahısına əlavə etməlisiniz. Bu əmrlə edilir:

Set-Element WSMan:\localhost\Client\TrustedHosts -dəyər KompüterAdı

harada Kompüter Adı — qoşulacağımız kompüterin adı. Siz həm kompüterin adını, həm də onun IP ünvanını təyin edə bilərsiniz, lakin yadda saxlamalısınız ki, buraya daxil etdiyiniz şey sonradan əlaqə üçün istifadə edilməlidir, yəni. IP ünvanını göstərsəniz, onun adını göstərərək kompüterə qoşula bilməyəcəksiniz və əksinə IP ünvanını göstərməlisiniz.