PowerShell-ის დახმარების დისტანციური მხარდაჭერა. იმუშავეთ Powershell-ის დისტანციურ სესიებთან. სესიების შექმნა PowerShell-ში

გოლოვნა / ძირითადი ფუნქციონირება

Შემაჯამებელი: ნაცნობი იზ მანძილი keruvannyam Windows PowerShell-იდან.

Weekend Scripter: რთავს Windows-ის დისტანციურ ბირთვს.

Microsoft Scripting Guy, ედ უილსონი გამოძახებით. დღეს ვაპირებ გამოვაქვეყნო ნაწყვეტი ჩემი ახალი Windows PowerShell 3.0 ნაბიჯ-ნაბიჯ წიგნიდან, რომელიც ჰგავს Microsoft Press-ს. ამავდროულად, წიგნი ხელმისაწვდომია წინასწარ დაჯავშნისთვის.

WinRM - ამოიღეთ Windows Kernel

Windows Server 2012-ზე WinRM მუშაობს კულისებში, რათა მხარი დაუჭიროს დისტანციური Windows PowerShell ბრძანებების წაშლას. WinRM არის Microsoft-ის მიერ WS-Management Protocol ინდუსტრიის სტანდარტის იმპლემენტაცია. სწორედ ამიტომ იმედოვნებს WinRM ხელით გზადისტანციურ სისტემებზე წვდომამ ერთი შეხედვით ვერ დახურა firewall. იგივე მექანიზმი, რომელიც იგებს ახალ CIM ბრძანებებს. ამ გზით, შეგიძლიათ დაუკავშირდეთ გაშვებულ Windows Server 2012 მოწყობილობას ბრძანებების გასაშვებად ან Windows PowerShell ინტერაქტიული კონსოლის გასახსნელად. Windows 8-ზე, მეორე მხარეს, WinRM დაბლოკილია. ეს არ ნიშნავს რა არის შემდეგი, რა უნდა გაკეთდეს, შემდეგ გაუშვით cmdlet ჩართვა-PSRemoting. ამ cmdlet-ის გაშვებისას გამოჩნდება შემდეგი ხაზები:

1. გაუშვით ან გადატვირთეთ WinRM სერვისი.

2. სერვისის გაშვების ტიპი WinRM დაინსტალირებულია ავტომატურად.

3. მსმენელი იქმნება ყველა IP მისამართის კავშირების მისაღებად.

4. გამორთეთ firewall WS-Man ტრაფიკისთვის.

5. ატვირთულია Microsoft.powershell კონფიგურაცია

6. ატვირთულია Microsoft.powershell.workflow კონფიგურაცია

7. ატვირთულია Microsoft.powershell32 კონფიგურაცია

ამ პროცესის გაჭიმვით, ენერგიული ფუნქცია აუმჯობესებს კანის მდგომარეობას. თუ იცით რა არის ფუნქცია და არ გსურთ ცვლილებების შეტანა მანამდე, შეგიძლიათ გაუშვათ ეს ბრძანება კლავიშით -ძალადა ამ გზით, დადასტურება არ არის ნაჩვენები. ამ ბრძანების სინტაქსი ჩამოთვლილია ქვემოთ.

ჩართვა-PSRemoting-Force

ახლა მოდით ჩავდოთ Enable-PSRemoting ფუნქცია ინტერაქტიულ რეჟიმში, ყველა ნაჩვენები ინფორმაციის ჩათვლით.

PS C:\> Enable-PSRemoting

WinRM სწრაფი კონფიგურაცია

დააჭირეთ ღილაკს "Set-WSManQuickConfig" ამ პროგრამის ეფექტური მართვის უზრუნველსაყოფად Windows Remote Management (WinRM) სერვისის დახმარებით. Ეს მოიცავს:

1. WinRM სერვისის დაწყება ან გადატვირთვა (თუ უკვე დაწყებულია).

2. WinRM სერვისის გაშვების ტიპის დაყენება ავტომატურზე

3. მსმენელის შექმნა ნებისმიერ IP მისამართზე მოთხოვნის მისაღებად

4. Windows Firewall-ის დახარისხებული გამონაკლისების წესების ჩართვა WS-Management ტრაფიკისთვის (მხოლოდ http-ისთვის).

Გინდა გააგრძელო?

WinRM შეიძლება განახლდეს მოთხოვნების მისაღებად.

WinRM სერვისის ტიპი წარმატებით შეიცვალა.

WinRM სერვისი დაიწყო.

WinRM შეიძლება განახლდეს დისტანციური მართვისთვის.

შექმენით WinRM მსმენელი HTTP://*-ზე WS-Man-ის მოთხოვნისთვის ამ აპარატის ნებისმიერ IP-ზე.

WinRM Firewall-ის გამონაკლისი ჩართულია.

microsoft.powershell SDDL:

[Y] დიახ [A] დიახ ყველა [N] არა [L] არა ყველას [S] შეჩერება [?] დახმარება (ნაგულისხმევი არის "Y"):y

დარწმუნებული ხართ, რომ გსურთ ამ მოქმედების შესრულება?

ოპერაციის "Set-PSSessionConfiguration" შესრულება სამიზნეზე "Name:

microsoft.powershell.workflow SDDL:

O:NSG:BAD:P(A;;GA;;;BA)(A;;GA;;;RM)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;; ;W.D.). Ეს მოხდება

ნება მიეცით შერჩეულ მომხმარებლებს დისტანციურად გაუშვან Windows PowerShell ბრძანებები ამ კომპიუტერზე".

[Y] დიახ [A] დიახ ყველა [N] არა [L] არა ყველას [S] შეჩერება [?] დახმარება (ნაგულისხმევი არის "Y"):y

დარწმუნებული ხართ, რომ გსურთ ამ მოქმედების შესრულება?

ოპერაციის "Set-PSSessionConfiguration" შესრულება სამიზნეზე "Name:

microsoft.powershell32 SDDL:

O:NSG:BAD:P(A;;GA;;;BA)(A;;GA;;;RM)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;; ;W.D.). Ეს მოხდება

ნება მიეცით შერჩეულ მომხმარებლებს დისტანციურად გაუშვან Windows PowerShell ბრძანებები ამ კომპიუტერზე".

[Y] დიახ [A] დიახ ყველა [N] არა [L] არა ყველას [S] შეჩერება [?] დახმარება (ნაგულისხმევი არის "Y"):y

ამის შემდეგ, როგორც იქნა ნაპოვნი კონფიგურაცია, შეგიძლიათ შეცვალოთ WinRM პრიორიტეტი დამატებითი cmdlet-ისთვის ტესტი-WSMan. თუ სისტემა სწორად არის დაყენებული, გამოჩნდება ინფორმაცია, რომელიც მსგავსია მიმდინარე.

PS C:\>Test-WSMan -ComputerName w8c504

პროდუქტის ვერსია: OS: 0.0.0 SP: 0.0 Stack: 3.0

ეს cmdlet ასევე მუშაობს Windows PowerShell 2.0 კომპიუტერებზე. მინიშნებები ქვემოთ მოცემულია Windows Server 2008 z დომენის კონტროლერამდე დააინსტალირეთ Windows PowerShell 2.0, რომელზეც WinRM იყო მიმაგრებული.

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 Corporation

პროდუქტის ვერსია: OS: 0.0.0 SP: 0.0 Stack: 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 სერვისისთვის Firewall გამონაკლისი ჩართულია და იძლევა საშუალებას

წვდომა ამ კომპიუტერიდან. ნაგულისხმევად, WinRM Firewall გამონაკლისი საჯარო

პროფილები ზღუდავს წვდომას დისტანციურ კომპიუტერებზე იმავე ლოკალურ ქვექსელში.

ხაზზე:1 char:1

ტესტი-WSMan -ComputerName w8c10

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

CategoryInfo: InvalidOperation: (w8c10:String) , InvalidOperationException

FullyQualifiedErrorId: WsManError,Microsoft.WSMan.Management.TestWSManCommand

გაითვალისწინეთ, რომ დისტანციური მართვის ჩართვა Enable-PSRemoting cmdlet-ით არ გამორთავს დისტანციური მართვის ბუხარს, ამიტომ Windows 8-ის აპარატის პინგის მცდელობა წარუმატებელია.

PS C:\> ping w8c504

pinging w8c504.iammred.net 32 ​​ბაიტი მონაცემებით:

მოთხოვნა ამოიწურა.

მოთხოვნა ამოიწურა.

მოთხოვნა ამოიწურა.

მოთხოვნა ამოიწურა.

პინგ სტატისტიკა 192.168.0.56-ისთვის:

პაკეტები: გაგზავნილი = 4, მიღებული = 0, დაკარგული = 4 (100% ზარალი).

ყველაფერი მუშაობს Windows Server 2012-ისთვის.

PS C:\> ping w8s504

pinging w8s504.iammred.net 32 ​​ბაიტი მონაცემებით:

<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 ms, მაქსიმალური = 0ms, საშუალო = 0ms

ეს არის ყველაფერი, რაც საჭიროა WinRM-ის გასაუმჯობესებლად.

ედ უილსონი, მაიკროსოფტის სკრიპტირების ბიჭი

Ორიგინალური:

ახლახან მქონდა შანსი დავკარგო სამი საათი Powershell-ის საშუალებით დისტანციური წვდომისთვის. ასეთი სახელმძღვანელო მოცემულია რიგ შემთხვევებში Remote Desktop Services-ის მძლავრ ალტერნატივად (გადატვირთეთ სერვისი დისტანციურ VDS ჰოსტინგზე, გააკეთეთ სარეზერვო ასლი, კვლავ გადახედეთ სისტემის სისტემას).

Powershell-ის დისტანციური სესიების შექმნის შესაძლებლობა დაინერგა მე-2 ვერსიაში. რისთვისაც გამოიყენება Enter-PSSession/Invoke-Command cmdlet. პროტე, გამარჯვებული სტუდენტების წინაშე, მოამზადე შუა.

რა არის რობიმო სერვერზე:

Krok 1:გახსენით Powershell კონსოლი და დაუშვით დისტანციური სესია Enable-PSRemoting cmdlet-ის გამოყენებით Force კლავიშით.

Enable-PSRemoting -Force

Krok 2:გადახედეთ, რომ WinRM სერვისი მუშაობს.

Start-Service WinRM

Krok 3:ჩვენ შევცვალეთ წესები ბრენდმაუერში, რათა შესაძლებელი იყოს შეყვანის კავშირი.

Კომპიუტერზე კლიენტი tezh აუცილებელია vikonati kіlka diy:

Krok 1:დაუშვით კავშირი დისტანციურ კვანძებთან. ნებისმიერ კვანძზე წვდომისთვის, შეგიძლიათ დააჩქაროთ შეტევითი სტრუქტურა:

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

Krok 2:დარწმუნდით, რომ ბრენდმაუერი არ ბლოკავს დღის გარეთ.

ახლა, Powershell-ის საშუალებით დისტანციურ კვანძთან დასაკავშირებლად, შეგიძლიათ გააკეთოთ ეს ასე:

Enter-PSSession 192.168.1.160 - სერთიფიკატი VMNAME\მომხმარებელი

მნიშვნელობა 192.168.1.160 და VMNAME\User უნდა შეიცვალოს დისტანციური ჰოსტის მისამართით და სერვერზე Windows ჰოსტის სახელით.

ახლა დისტანციური წვდომა Powershell-ის საშუალებით შესაძლებელია. დაიცავით კიდევ ერთი ნიუანსი. შესაძლოა ზოგიერთი თქვენგანი იყოს პროფილირებული Powershell-ში. პროფილები არის სპეციალური სკრიპტები, რომლებიც იხსნება თავად კონსოლის დასაწყისში. აქ, მაგალითად, თქვენ შეგიძლიათ მიუთითოთ ყველა საჭირო მეტსახელი და ვიკონი თქვენს წინაშე.

პრობლემა, როგორც ჩანს, ის არის, რომ პროფილები არ იწყება სესიების დასრულებიდან ერთი საათის განმავლობაში. შეგიძლიათ შეამოწმოთ დახმარება სხვადასხვა კავშირის კონფიგურაციებთან დაკავშირებით. რისთვისაც აუცილებელია კონფიგურაციის რეგისტრაცია დისტანციურ სერვერზე. ამის გაკეთება შეგიძლიათ Register-PSSessionConfiguration ბრძანების მოტყუებით. ნებისმიერი კანის კონფიგურაციით, შეგიძლიათ ამის იმედი გქონდეთ. კანის კონფიგურაციისთვის, შეგიძლიათ ჩასვათ ბილიკი სკრიპტისკენ, რომელიც შემოწმდება სესიის დასაწყისში.

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

ამის შემდეგ, დისტანციურ კვანძთან დაკავშირებისას, როდესაც Enter-PSSession ბრძანება განსხვავებულია, მიუთითეთ კონფიგურაციის სახელი.

Enter-PSSession 192.168.1.160 -ConfigurationName Config1 - Credential VMNAME\User

ახლა შესაძლებელია არ გამოიყენოთ სერვერის რესურსები კავშირის სესიის შესაქმნელად Remote Desktop Services-ის მეშვეობით და სერვერისგან მოშორებით Powershell-ის დახმარებისთვის.

powershell დისტანციური გაშვების პროგრამები

ინტერაქტიული სესიის დაწყება

ერთი დისტანციური კომპიუტერიდან ინტერაქტიული სესიის დასაწყებად, აკრიფეთ Enter-PSSession cmdlet. მაგალითად, ინტერაქტიული სესიის დასაწყებად დისტანციური კომპიუტერიდან Server01, შეიყვანეთ:
enter-pssession Server01
ბრძანების სტრიქონზე გამოჩნდება კომპიუტერის სახელი, სანამ არ დაუკავშირდებით. ბრძანების სტრიქონში შეყვანილი ყველა ბრძანება გაშვებულია დისტანციურ კომპიუტერზე და შედეგები ნაჩვენებია ადგილობრივ კომპიუტერზე.
ინტერაქტიული სესიის დასასრულებლად შეიყვანეთ:
გასასვლელი-სესია

ვიკონანია გუნდის დისტანციაზე

გაიმარჯვეთ Invoke-Command cmdlet-ზე ბრძანების გამოსახატავად ერთ ან რამდენიმე დისტანციურ კომპიუტერზე. მაგალითად, Get-UICulture ბრძანების გასაშვებად დისტანციურ კომპიუტერებზე Server01 და Server02, შეიყვანეთ:

გამოძახება-ბრძანება -კომპიუტერის სახელი Server01, Server02 (get-UICulture)
გამომავალი მონაცემები დაბრუნდება თქვენს კომპიუტერში.
სკრიპტის ერთ ან მეტ კომპიუტერზე გასაშვებად, ჩართეთ Invoke-Command cmdlet-ის FilePath პარამეტრი. სკრიპტი არის დამნაშავე ან შენიშვნაში ან ხელმისაწვდომია ადგილობრივი კომპიუტერისთვის. შედეგები გადაინაცვლებს ადგილობრივ კომპიუტერზე.
მაგალითად, ბრძანება გაუშვებს სკრიპტს DiskCollect.ps1 დისტანციურ კომპიუტერებზე Server01 და Server02.
invoke-command -კომპიუტერის სახელი Server01, Server02 -ფაილის გზა c:\Scripts\DiskCollect.ps1

მუდმივი კავშირის დაყენება
იმისათვის, რომ გაამართლოთ მრავალი ბრძანება მაღალი მონაცემებიდან, შექმენით სესია დისტანციურ კომპიუტერზე და შემდეგ გაამართლეთ Invoke-Command cmdlet, რათა გაამართლოთ ბრძანებები შექმნილი სესიიდან. წაშლილი სესიის შესაქმნელად მონიშნეთ New-PSSession cmdlet.
მაგალითად, შემდეგი ბრძანება არის დისტანციური სესიის შექმნა Server01 კომპიუტერზე და სხვა დისტანციური სესიის შექმნა Server02 კომპიუტერზე. ვონი იღებს ობიექტებს $s ცვლილების სესიაზე.
$s = new-pssession -კომპიუტერის სახელი Server01, Server02
სესიის დამყარების შემდეგ, შეგიძლიათ ბრძანების visconate. სესიების ქულები მუდმივია, შეგიძლიათ შეაგროვოთ მონაცემები ერთ გუნდში და მოიგოთ ისინი შეტევაში.
მაგალითად, შემდეგი ბრძანება იქნება Get-Hotfix ბრძანების უგულებელყოფა სესიებზე, რათა შეცვალოს $s და მიიღოს $h ცვლილების შედეგები. შეცვლა $h იქმნება კანის სესიაში $s, მაგრამ ის არ მუშაობს ლოკალურ სესიაზე.
invoke-command -სესია $s ($h = მიღება-გასწორება)
ახლა თქვენ შეგიძლიათ მოიგოთ გამარჯვება შემტევ გუნდებში, როგორიცაა შემტევი. შედეგები გამოჩნდება ადგილობრივ კომპიუტერზე.

Invoke-command -sesion $s ($h | სადაც ($_.installedby -ne "NTAUTHORITY\SYSTEM")

ყველაფერი აღებულია https://technet.microsoft.com/en-us/library/dd819505.aspx-დან

სისტემის ადმინისტრატორების ერთ-ერთი ყველაზე პოპულარული ამოცანაა დისტანციურ კომპიუტერზე ნებისმიერი ბრძანების გაშვება სამუშაოდან ადგომის გარეშე. შეიძლება დაგჭირდეთ პროგრამების ან კომუნალური პროგრამების დაყენება, დაყენებული თუ არა დაყენების შეცვლა, ან სხვაგვარად. და, ძალიან იშვიათად, არის ერთზე მეტი კომპიუტერი, ხშირად ბრძანება უნდა განხორციელდეს სხვადასხვა სამუშაო სადგურებზე ან სერვერებზე.

Oskіlki zavdannya tsya პოპულარული, ის გზები vyrіshennya іsnuє უპიროვნო. დაწყებული ჯგუფური პოლიტიკით (რომელიც შეიძლება შეჩერდეს შესვლის ან ავტომატური შესვლის სკრიპტირების მიზნით) და დამთავრებული რთული მართვის სისტემებით, მაგალითად System Center Essentials ან System Center Configuration Manager. და ამ სტატიაში მინდა შევხედო თვალისთვის ხელმისაწვდომი მეთოდებს ბრძანების ხაზიან ფაილები სკრიპტებში და ეს არ იმოქმედებს აგენტების ინსტალაციაზე და სხვა პრობლემებზე. Vtіm, yakіs poperednі vimogi, zvichayno, є. მაგალითად, თქვენ ხართ პასუხისმგებელი კომპიუტერის ადმინისტრაციულ გადაფარვაზე, რომელზეც გსურთ ბრძანების გაშვება (პროქსის სკრიპტის გულისთვის, მაგრამ სხვა რამის შესახებ).

Psexec.exe

ამ ამოცანის შესრულების ერთ-ერთი ჩემი საყვარელი გზაა PsExec.exe ბრძანების ხაზის პროგრამა, რომელიც დაწერილია მარკ რუსინოვიჩის მიერ, რომელზეც თავისუფლად შეგიძლიათ წვდომა Windows SysInternals ვებსაიტიდან. Possilannya მასზე შეიძლება ცნობილი იყოს სტატიაში. სისტემაში დაინსტალირება არ არის საჭირო, შეგიძლიათ უბრალოდ დააკოპიროთ ის ერთ-ერთ საქაღალდეში, რომელიც შეიძლება განთავსდეს შეცვლილ %path%-ში და დააწკაპუნოთ ბრძანების სტრიქონზე: Cmd ან PowerShell.

PsExec ჰაკი საკმაოდ მარტივია. მაგალითად, მთავარ კომპიუტერზე ipconfig /flushdns-ის გამოსაყენებლად, უბრალოდ გაუშვით შემდეგი ბრძანება:

psexec \\ მთავარი ipconfig /flushdns

ipconfig ბრძანება გაშვებული იქნება მთავარ კომპიუტერზე თქვენი სკინგის ქვეშ. როდესაც ipconfig სამუშაო დასრულდება, ყველა ტექსტური ფაილი გადაეცემა თქვენს კომპიუტერს და ასევე დაბრუნდება ბრძანების გასვლის კოდი (შეცდომის კოდი). ამავდროულად, გუნდი წარმატებული იყო, მოგების დრო 0 იყო.

გამიჩნდა, რომ PsExec რა შესაძლებლობით არ მთავრდება. კომუნალურ პროგრამაზე პარამეტრების გარეშე დაწკაპუნებით, შეგიძლიათ გადახედოთ სხვა ხელმისაწვდომი ვარიანტებს. მათ საქციელს ნაკლებად ვცემ პატივს.

Გასაღები -დროგორც ჩანს, PsExec არ არის აუცილებელი ბრძანების შემოწმება, მაგრამ საკმარისია უბრალოდ გაუშვათ її და დაივიწყოთ იგი. ამგვარად, ჩვენ არ წავართმევთ მონაცემებს კონსოლის უტილიტადან, ან შეიძლება არ შევამოწმოთ წინა ბრძანების დასრულება სხვების გასაშვებად. ეს უფრო რთულია, რადგან თქვენ უნდა გაუშვათ, მაგალითად, პროგრამის ინსტალერი დესკტოპ კომპიუტერებზე.

PsExec-ის ჩაკეტვის შემდეგ, ბრძანებები გამორთულია მიმაგრებულ რეჟიმში, ასე რომ სისტემა, როდესაც ბრძანება გამორთულია, არ გამოჩნდება ყოველ მეორე დღეს ან დიალოგები. თუმცა, შესაძლებელია ამ ქცევის შეცვლა დამატებითი გასაღებისთვის -მე. შემდეგ შეგიძლიათ მიუთითოთ სესიის ნომერი, რომელ ფანჯარაში იქნება ნაჩვენები, ან ვერ მიუთითოთ, ინტერფეისი გამოჩნდება კონსოლის სესიაზე.

ამ თანმიმდევრობით, მთავარ კომპიუტერზე ოპერაციული სისტემის ვერსიის შესახებ ინფორმაციის სანახავად, გაუშვით PsExec შემდეგი თანმიმდევრობით:

psexec -i \\main winver.exe

თუ გსურთ აკრიფოთ ბრძანება ზედიზედ რამდენიმე კომპიუტერზე, თქვენ უნდა შეძლოთ მათი სახელების წაკითხვა ტექსტური ფაილების სიიდან.

psexec @c:\comps.txt systeminfo.exe

კარგად, PsExec-ის ერთ-ერთი საუკეთესო მახასიათებელია კომპიუტერებს შორის შეყვანის/გამოსვლის ინტერაქტიულად გადამისამართების შესაძლებლობა, რაც საშუალებას გვაძლევს გავუშვათ, მაგალითად, cmd.exe დისტანციურ სერვერზე, მივცეთ მას ბრძანებები და მივიღოთ შედეგები ადგილობრივ კომპიუტერზე. .

როგორ მუშაობს PsExec?

ყველაფერი გენიალურად მარტივია. ბოროტი PsExec.exe ფაილის რესურსებს აქვს კიდევ ერთი ბოროტი ფაილი - PSEXESVC, რომელიც არის Windows სერვისი. ბრძანების დახურვამდე PsExec ხსნის რესურსს მიმაგრებულ ადმინისტრაციულ საქაღალდეში დისტანციურ კომპიუტერზე, ფაილში: \\Im'yaComputer\Admin$\system32\psexesvc.exe. მაგალითად, -c გადამრთველის დახმარებით, მათ მიუთითეს, რომ აუცილებელია ფაილების კოპირება, რომლებიც კოპირებულია ამ სისტემაში, ისინი ასევე დაკოპირდება ამ საქაღალდეში.

PsExec-ის მომზადების დასრულების შემდეგ, ის დააინსტალირებს და იწყებს სერვისს Windows API-ის ფუნქციების გამოყენებით, რათა განიკურნოს სერვისები. PSEXESVC-ის გაშვების შემდეგ, იქმნება რამდენიმე არხი მასსა და PsExec-ს შორის მონაცემების გადასატანად (შეყვანის ბრძანებები, შედეგები და ა.შ.). სამუშაოს დასრულების შემდეგ, PsExec იწყებს სერვისს და ხედავს მას სამიზნე კომპიუტერიდან.

Windows მართვის ინსტრუმენტი (WMI)

პოპულარული დავალების განხორციელების შემდეგი გზა, იმის შესახებ, რაც მინდა ვიცოდე - Windows Management Instrumentation. WMI ხელმისაწვდომია Microsoft-ის ყველა ოპერაციულ სისტემაზე დაწყებული Windows 2000-დან და Windows 9x-ზე და მისი ინსტალაცია შესაძლებელია ok პაკეტიდან. WMI დაცულია ჩაკეტვისთვის და არ საჭიროებს დამატებით შესწორებას. იოგასთვის არის საკმარისი ადმინისტრაციული უფლებები, რომლებიც დაშვებულია firewall-ზე DCOM პროტოკოლზე. WMI-ს აქვს დიდი პოტენციალი სისტემების მართვისთვის, მაგრამ ჩვენ გვჭირდება მხოლოდ ერთი მათგანი ერთდროულად.

პროცესების დასაწყებად ჩვენ გვჭირდება Win32_Process კლასის Create მეთოდი. Vikoristovuvati იოგას გაკეთება მარტივია. PowerShell-მა ასე უნდა გააკეთოს:

$კომპიუტერი = "მთავარი"
$Command = "cmd.exe /c systeminfo.exe >
("\\$კომპიუტერი\root\cimv2:Win32_Process").create($Command)

აქ, როგორც პროცესი, რომელიც იწყება, შევდივარ cmd.exe და თქვენც კი არგუმენტად გასცემ ბრძანებას. ეს არ არის აუცილებელი, რადგან თქვენ უნდა შეცვალოთ დისტანციური კომპიუტერის სიმკვეთრე ან გამოიყენოთ cmd.exe ოპერატორები, როგორიცაა " > » ხედის ფაილზე გადასატანად. Create მეთოდი არ ამოწმებს პროცესის დასრულებას და არ ამოწმებს შედეგებს, შემდეგ გვეუბნება მისი ID - ProcessID.

თუ თქვენ გაქვთ კომპიუტერი, რომელსაც ჯერ არ აქვს დაინსტალირებული PowerShell, შეგიძლიათ დარეკოთ WMI მეთოდი VBScript სკრიპტიდან. მაგალითად, ღერძი არის:

ჩამონათვალი #1 - WMI პროცესის გაშვება (VBScript)

კომპიუტერი = "PC3"
Command = "cmd.exe /c systeminfo.exe > \\server\share\%computername%.txt"
დააყენეთ objWMIService = GetObject ("winmgmts:\\" & კომპიუტერი & "\root\cimv2:Win32_Process")
შედეგი = objWMIService.Create ("calc.exe", Null, Null, intProcessID)

ასევე ადვილია wmic.exe ბრძანების ხაზის გამოყენება WMI რობოტის სახელმძღვანელო ინტერფეისზე წვდომისთვის და ოპერაციული სისტემის საწყობში შესასვლელად, დაწყებული Windows XP-დან. იმისათვის, რომ გაუშვათ, მაგალითად, კალკულატორი მთავარ კომპიუტერზე, საკმარისია დააჭიროთ ბრძანებას:

wmic /node:main პროცესის ზარის შექმნა calc.exe

როგორც თქვენ წარმოიდგინეთ, WMI-ის შესაძლებლობები არ შემოიფარგლება მხოლოდ გაშვებული პროცესებით. ტექნოლოგიებისგან თავის დასაცავად, გირჩევთ გაეცნოთ კოსტიანტინ ლეონტიევის სტატიებს, WMI ცნობებს და შეგიძლიათ იცოდეთ მაგალითად სტატიები.

WSH დისტანციური სკრიპტირება

ასე რომ, გასაკვირი არ არის, რომ Windows Script Host-ს შეუძლია სკრიპტების გაშვება სხვა კომპიუტერებზეც. მართალია, ამ ფუნქციამ დიდი პოპულარობა ვერ მოიპოვა და ყველაფერს აჯობებდა მათ, ვისაც ბევრი მოსამზადებელი მიდგომა ჰქონდა და ნატომისტობას ბევრი შესაძლებლობა არ ჰქონდა. ოღონდ იგივეს გეტყვით ამ მეთოდის შესახებ, რომ ღირდეს.

ასევე, სკრიპტის სხვა კომპიუტერზე გასაშვებად WSH-ის დახმარებით, უნდა გავაკეთოთ შემდეგი:

    ადმინისტრატორის უფლებები დისტანციურ კომპიუტერზე. აზრი ჰქონდა და აუცილებელია ყველა სხვა მეთოდის გამოყენება სტატიაში განცხადებების გასაშვებად.

    ჩართეთ WSH დისტანციური სკრიპტირება დისტანციური რეესტრის ჩანაწერის დაყენებით "1"-ის ტოლი რეესტრის გასაღებში HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings

    შეწყალების საშუალებით, აღწერილია სტატიაში Microsoft-ის ცოდნის ბაზის ნომერი 311269, Windows XP-ის მქონე სისტემებზე, შესაძლოა დაგჭირდეთ wscript –regserver ბრძანების გამოყენება.

    თუ კომპიუტერზე გატეხილია firewall, აუცილებელია DCOM-თან კავშირის ჩართვა. უფრო მეტიც, თქვენ უნდა იმუშაოთ არა მხოლოდ კერამიკულ კომპიუტერზე, არამედ მასზე, რომელზეც გსურთ სკრიპტის გაშვება.

    Windows XP სისტემებისთვის Service Pack 2-ით, შესაძლოა დაგჭირდეთ DCOM უსაფრთხოების პარამეტრების შეცვლა. წე შეიძლება ზრობიტი დახმარებისთვის ჯგუფის პოლიტიკა. კვანძის კომპიუტერული კონფიგურაცია \ Windows პარამეტრები \ უსაფრთხოების პარამეტრები \ ლოკალური პოლიტიკა \ უსაფრთხოების ოფციები უნდა დაინსტალირდეს შემდეგი თანმიმდევრობით:

    1. DCOM: მანქანაზე წვდომის შეზღუდვები უსაფრთხოების აღწერის განმარტების ენის (SDDL) სინტაქსში
      იხილეთ ჯგუფები ანონიმური შესვლა და ყველას დაშვება ლოკალური დაშვება და დისტანციური წვდომის დაშვება

      DCOM: მანქანით გაშვების შეზღუდვები უსაფრთხოების აღწერის განმარტების ენის (SDDL) სინტაქსში
      იხილეთ ადმინისტრატორების ჯგუფი დაშვებული Local Launch, Allow Remote Launch, Allow Local Activation, Allow Remote Activation
      დაჯგუფება ყველას – დაუშვით ლოკალური გაშვება, დაუშვით ლოკალური აქტივაცია

კარგად, ყველა ამ პროცედურის შემდეგ, შეგიძლიათ სცადოთ თქვენი სკრიპტის გაშვება სხვა კომპიუტერზე.

სცენარის მაგალითი, ერთგვარი გამარჯვებული ტექნოლოგია:

ჩამონათვალი #2 - WSH დისტანციური სკრიპტირება (VBScript)

დააყენეთ objController = CreateObject ("WshController")
დააყენეთ objRemoteScript = objController.CreateScript("C:\test.vbs", "PC5")WScript.ConnectObject objRemoteScript, "remote_"
objRemoteScript.Execute
Do while objRemoteScript.Status<> 1
WScript.Sleep 1000
მარყუჟი
MsgBox "სკრიპტი დასრულებულია"
Sub remote_Error
Dim objError
დააყენეთ objError = objRemoteScript.Error
WScript.Echo "Error - Line:" & objError.Line & _
", Char: " & objError.Character & vbCrLf & _
"Description: " & objError.Description
WScript.Quit -1
დასასრული ქვე

მეორე ხაზზე, CreateScript ფუნქციის პარამეტრად, მითითებულია სკრიპტის ფაილის გზა, რომელიც შესრულდება დისტანციურ კომპიუტერზე და ამ კომპიუტერის შუქზე.

ამ ტექნოლოგიის შესახებ მოხსენება შეგიძლიათ წაიკითხოთ სტატიაში გაფართოებული VBScript ამისთვის Microsoft Windowsადმინისტრატორები - თავი 6: დისტანციური სკრიპტირება(Div. Posilannya).

დავალების განრიგი

დამგეგმავის კონტროლი შესაძლებელია ბრძანების ხაზიდან ორი კომუნალური პროგრამის გამოყენებით - at.exe და schtasks.exe. კომუნალური პროგრამის შეურაცხყოფა საშუალებას გაძლევთ აჩვენოთ დავალების დისტანციური კომპიუტერის სახელი და ასევე, საშუალებას გაძლევთ შეცვალოთ ჩვენი დავალება. სხვათა შორის, ჩვენ შეგვიძლია მხოლოდ schtasks.exe-ს შევხედოთ, ფრაგმენტებს მეტი შესაძლებლობა აქვს.

მიუხედავად იმისა, რომ სხვა კომპიუტერებზე ბრძანებები არ არის დამგეგმავის მთავარი მახასიათებელი, ისინი იძლევა რამდენიმე განსხვავებული სცენარის განხორციელების საშუალებას. მაგალითად, იოგასთვის, შეგიძლიათ გაზარდოთ ინსტალაცია პროგრამული უზრუნველყოფაყოველდღიური შეფერხების პერიოდში. წინააღმდეგ შემთხვევაში, როდესაც თქვენი კორისტუვაჩები ხვდებიან სხვა საათს, გაშვება შეიძლება გადაიდოს კომპიუტერის უმოქმედობის სიმღერის პერიოდის შემდეგ.

schtasks /create /s server6.td.local /tn install /tr \\main\data\install.cmd /sc ერთხელ /st 13:00 /ru სისტემა

მნიშვნელოვანია გვესმოდეს, რომ სახელით რაიმე სახის oblіkovogo ჩანაწერი დანიშვნის. ამ აპლიკაციისთვის, მე მივუთითე ღირებულების სისტემა პარამეტრისთვის / ru, ასე რომ, კომპიუტერის ღრუბლოვანი ჩანაწერის ინსტალაციისთვის დაგჭირდებათ წვდომა, რომ წაიკითხოთ merezhu საქაღალდეპროგრამული უზრუნველყოფის დისტრიბუციით.

საუკეთესო გადაწყვეტილების მისაღებად, მე უფლება მაქვს დავგეგმო, არის თუ არა ეს დღე, კარგ დროს, და მე დავინახავ დავალება მხოლოდ ჩემი წარმატების დასადასტურებლად. ასე რომ, თქვენ შეგიძლიათ შექმნათ მარტივი სერიული ფაილი, რომელიც იწყებს პროგრამის ინსტალერს, ამოწმებს მის დასრულებას და ამოწმებს, რომ პროგრამა წარმატებით დაინსტალირდა. თითქოს ასეა, თქვენ იხილეთ დავალება დამგეგმავისგან თქვენს კომპიუტერში. ასეთი ფაილის მაგალითი:

ჩამონათვალი #3 - პროგრამების ინსტალაცია შორეული სამუშაოებიდან (Windows Batch)

msiexec /qn /package\server\share\subinacl.msi
თუ არსებობს "c:\program files\Windows Resource Kits\Tools\subinacl.exe" (
subinacl /tn Install_Subinacl /f

WinRM (WS Management)

WinRM არის Microsoft-ის DMTF (Distributed Management Task Force) სტანდარტის იმპლემენტაცია, რომელიც სისტემებს საშუალებას აძლევს გამოიყენონ სხვა ვებ სერვისები. მე არ ჩავუღრმავდები ტექნოლოგიის მიმაგრებას, მხოლოდ მოკლედ აღვწერ რა არის საჭირო ჩემი ძიებისთვის.

ვერსია WinRM 1 და მეტი შედის ოპერაციული სისტემების მარაგში, დაწყებული Windows Vista-დან და Windows Server 2008-ით. Windows XP-ისა და Windows Server 2003-ისთვის, შეგიძლიათ დააინსტალიროთ WinRM როგორც okremy პაკეტი (განაწილებული პაკეტი).

იმისათვის, რომ სწრაფად დააკონფიგურიროთ კომპიუტერი ახალი ვიკორისტის სტანდარტულ პორტთან დასაკავშირებლად და ადმინისტრაციულ ღრუბლოვან ჩანაწერებთან დაკავშირების დასაშვებად, საკმარისია გამოიყენოთ ბრძანება:

winrm quickconfig

Winrm-ისთვის დადასტურების მოთხოვნის გარეშე, შეგიძლიათ დაამატოთ ზარის ღილაკი -quiet. დაწვრილებით დაყენების შესახებ დამატებითი ინფორმაციისთვის შეგიძლიათ იხილოთ winrm-ის დახვეწა:

winrm დახმარების კონფიგურაცია

თითქოს ვებ სერვერი მუშაობს კერამიკულ კომპიუტერზე, WinRM-ის დაყენება შეუძლებელია, მიუხედავად იმისა, რომ სტანდარტული HTTP პორტია. Vіn perekhoplyuvatime ნაკლები კავშირი, აღიარებულია სპეციალურად ახალი.

ცხადია, ადვილი არ არის ბრძანების ხელით აკრეფა კანის კომპიუტერზე, რისი კონტროლიც გინდა. Usі nebkhіdnі nalashtuvannya ადვილად zrobiti დახმარების ჯგუფის პოლიტიკისთვის. ვის სჭირდება:

  1. დააყენეთ WinRM სერვისი (Windows Remote Management) ავტომატური დაწყება
  2. კომპიუტერის კონფიგურაციის კონფიგურაცია \ ადმინისტრაციული შაბლონები \ Windows კომპონენტები \ Windows დისტანციური მართვა (WinRM) \ WinRM სერვისი \ მსმენელთა ჯგუფის პოლიტიკის ელემენტის ავტომატური კონფიგურაციის დაშვება. აქ აუცილებელია IP მისამართის დიაპაზონის მითითება, საიდანაც ნებადართულია კავშირები.
  3. მე გამოვიცანი, თქვენ მაინც დაგჭირდებათ დაუშვათ კავშირი თავისუფალ პორტთან (80-ის ჩაკეტვისთვის) Windows Firewall.

მიუხედავად იმისა, არის თუ არა HTTP პორტი (80) გადატვირთული თუ HTTPS (443), WinRM გადაცემის ტრაფიკი დაშიფრულია (ასე რომ თქვენ აშკარად არ ჩართავთ ამ პარამეტრს). სტანდარტული ავთენტიფიკაციისთვის, Kerberos პროტოკოლი უგულებელყოფილია.

ალე ლაპარაკზე რომ ვისაუბროთ, უფრო სწორად გადავიდეთ ბოროტებაზე შუალედის გარეშე. თუ winrm უტილიტა გაძლევთ საშუალებას დააკონფიგურიროთ WinRM სერვისი, ასევე ჩართოთ WMI მაგალითად, ჩვენ გვჭირდება winrs. ასო RS აქ ნიშნავს Remote Shell-ს. WinRS მუშაობს PsExec ან WinRM ტექნოლოგიის მსგავსად. კომპიუტერის სახელი დაყენებულია -r ღილაკით და ახალი შემდეგი ბრძანების შემდეგ აუცილებელია ვიკონატი. შუბის კონდახის ღერძი:

winrs -r: Core ver.exe

ფრაგმენტები winrs და ასე იგებს cmd.exe როგორც დისტანციური გარსი, ბრძანებებში შეგიძლიათ მარტივად გადახვიდეთ შორეულ ცვლილებებზე, ან შეგიძლიათ გამოიყენოთ სხვა cmd.exe ბრძანებები:

winrs -r:Core "dir c:\temp > c:\temp\list.txt"

PsExec-ის მსგავსად, winrs უტილიტა საშუალებას გაძლევთ გახსნათ ინტერაქტიული სესია დისტანციურ კომპიუტერზე:

winrs -r:main cmd.exe

ეს ფუნქცია ტელნეტის სესიის მსგავსია, მაგრამ winrs ნამდვილად უკეთესია ვიდრე telnet და ნავიგაცია PsExec უსაფრთხოების თვალსაზრისით. მიუხედავად იმისა, არის თუ არა HTTP პორტი (80) ან HTTPS (443) გადაფარული, WinRM გადაცემის ტრაფიკი დაშიფრულია (ასე რომ თქვენ აშკარად არ ჩართავთ ამ პარამეტრს). სტანდარტული ავთენტიფიკაციისთვის, Kerberos პროტოკოლი უგულებელყოფილია.

Windows PowerShell 2.0 დისტანციურად

გინდა მეგობარი ვინდოუსის ვერსია PowerShell სტატიის დაწერის დროს ჯერ კიდევ ბეტა ტესტირებაშია, შორეული ბრძანებების სფეროში її შესაძლებლობის შესახებ ახლა სულ სხვაა. სცადეთ თავად, შეგიძლიათ აიღოთ ძველი ვერსია (div. possilannya) ან Windows 7-ის ან Windows Server 2008 R2-ის ბეტა ვერსიის საწყობში.

PowerShell Remoting ინფრასტრუქტურა დაფუძნებულია WinRM ვერსია 2.0-ზე და, შესაბამისად, კლებულობს ტექნოლოგიის ყველა უპირატესობა, როგორიცაა გადაცემული მონაცემების დაშიფვრა და სტანდარტული HTTP/HTTPS პორტების მიღმა მუშაობის შესაძლებლობა. მაგრამ მოდით გავმდიდრდეთ Windows PowerShell-ის გადაადგილების შესაძლებლობებით და კიდევ უფრო გავხადოთ ობიექტებთან მუშაობა. ამ დროისთვის, WinRM2.0 პაკეტი ჯერ კიდევ ბეტა ტესტირებაშია და ხელმისაწვდომია მხოლოდ Windows Vista-სთვის და Windows 2008-ისთვის. ვინდოუსის სისტემები 7 და Windows Server 2008R2 კვლავ დაიწყება PowerShell 2.0-ის შემდეგ.

განახლება: სტატიის საიტზე გამოქვეყნებამდე ფინალი PowerShell ვერსიები 2.0 და WinRM 2.0 უკვე ხელმისაწვდომია ყველა დამხმარე პლატფორმისთვის. Windows Server 2008R2 და Windows 7-ის მარაგამდე, სუნი უკვე შედის სისტემის უხილავ კომპონენტად, ხოლო Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008. საჭირო კომპონენტებითქვენ შეგიძლიათ ნახოთ პაკეტი, სახელწოდებით Windows Management Framework.

სანამ ყველა წინსვლას მიაღწევთ, PowerShell Remoting უნდა იყოს გააქტიურებული როგორც მყარ, ასევე მყარ კომპიუტერებზე. ამის გაკეთება მარტივია cmdlet-ის გაშვებით ( Windows ბრძანება PowerShell) Enable-PSRemoting. უფრო მეტიც, თუ დაამატებთ -Force კლავიშს, მაშინ შემდეგი დადასტურება არ იქნება მოთხოვნილი. ეს cmdlet, საჭიროების შემთხვევაში, უწოდებს winrs quickconfig-ს და ქმნის blaming-ს Windows Firewall-ში, ასე რომ თქვენ არ გჭირდებათ დამატებითის დამატება.

ალტერნატიულად, შეგიძლიათ მარტივად აკრიფოთ ბრძანებები სხვა კომპიუტერებზე Invoke-Command cmdlet-ის (ან მეტსახელი icm) გამოყენებით:

Invoke-Command -ComputerName Main -ScriptBlock (netsh ინტერფეისის dump > c:\ipconfig.txt)

როგორც ხედავთ, ბრძანება შეიძლება მოგვიანებით დაემატოს სიას და -ComputerName პარამეტრისთვის მიუთითოთ არა მხოლოდ ერთი, არამედ რამდენიმე კომპიუტერის სახელები. შემდეგი თანმიმდევრობა საშუალებას გაძლევთ შეიყვანოთ Explorer.exe ფაილის ვერსია სამი კომპიუტერიდან.

$Command = ((მიიღეთ ელემენტი c:\Windows\explorer.exe).VersionInfo.FileVersion)
Invoke-Command -ComputerName Main, Server7, Replica -ScriptBlock $Command

როგორც ხედავთ, შესაძლებელია ბრძანებების თაიგულის გადატანა ერთ ბლოკში, მათი შედეგების განთავსება დესკტოპ კომპიუტერებზე ცვლილების დროს და შემდეგ მათი დამუშავება სამუშაო სადგურზე Windows PowerShell-ის ობიექტებთან მუშაობის შესაძლებლობის გამოყენებით.

Vtіm, PowerShell Remoting-ის შესაძლებლობა tіlki pochinayutsya-ზე. Enter-PSSession cmdlet-თან დაკავშირებით დახმარებისთვის შეგიძლიათ გადახვიდეთ ინტერაქტიულზე Windows სესია PowerShell დისტანციურ კომპიუტერზე. თქვენ შეგიძლიათ გახვიდეთ ასეთი სესიიდან Exit-PSSession cmdlet-ის გამოყენებით, ან უბრალოდ გახვიდეთ.

New-PSSession cmdlet ქმნის სესიებს დისტანციური კომპიუტერები, yakі-ის ინდიკატორები შეიძლება შეიცვალოს და შემდეგ გადავიტანოთ როგორც არგუმენტი Invoke-Command-ისთვის, შეგიძლიათ შეცვალოთ ბრძანება ზედიზედ რაც შეიძლება ბევრ კომპიუტერზე. კონდახი ჩანს ეკრანის სურათზე, სადაც მე ვხედავ ბრძანებების თანმიმდევრობას ზედიზედ დეკალ კომპიუტერებზე c:\computers.txt სიიდან.

პროქსუვანია

ეს მეთოდი ხელახლა განიხილება მიმდინარე ჩამონათვალის ფონზე და ემსახურება როგორც სხვა ამოცანების მოწოდებას, მაგრამ არანაკლებ აქტუალური. თუ განახლების დელეგირება შეუძლებელია, წინააღმდეგ შემთხვევაში ჩვენ გვეძლევა დიდი შესაძლებლობები, ჩვენ გაძლევთ საშუალებას მისცეთ უზენაეს კორისტუვაჩევს ბრძანება მოიგოს, თითქოს თქვენ გჭირდებათ ადმინისტრაციული პრივილეგიები და არ მიანიჭოთ ადმინისტრატორის პაროლი.

უფრო ხშირად, ვიდრე არა, ადამიანები ცდილობენ ამ პრობლემების გადაჭრას დამატებითი კომუნალური საშუალებებისთვის, როგორიცაა cpau.exe (div. power), რათა შექმნან ფაილი პაროლით დაშიფრული ადმინისტრაციული ჩანაწერიდან, რომელიც საშუალებას გაძლევთ გაუშვათ ერთი პროგრამა. თუმცა, პრობლემა არის მათთვის, ვისაც სურს პაროლი და დაშიფვრა, უნდა გაშიფროს იგი კომუნალური პროგრამის გაშვებამდე. თქვენ შეგიძლიათ გაიმარჯვოთ უტილიტა, რომელიც იმეორებს პაროლის გაშიფვრის ალგორითმს და ამოიცნოთ იგი, ასე რომ, ჩვენ შეგვიძლია გავიმარჯვოთ სხვა პროგრამების გასაშვებად ან დამატებითი პრივილეგიების ჩამორთმევის მიზნით. პრაქტიკული გამოჩენილი კორისტუვაჩივი, Scho არ vodіyut spetіalnymi znannannym, მაგრამ, tim არ არის ნაკლები, რაც შეიძლება მეტი. კიდევ ერთხელ განვმარტავ, რომ ეს არ არის კონკრეტული უტილიტა, მაგრამ ასეთი მიდგომის პრობლემა გაქრა.

კიდევ ერთი ვარიანტია runas უტილიტის /savecred პარამეტრის გამოყენება დავალების შესასრულებლად. მაგრამ აქ ორი პრობლემაა. პირველ რიგში, როგორც ზემოთ იყო აღწერილი, პაროლი ინახება koristuvach-ის კომპიუტერში და, მოგვიანებით, შეიძლება მოხდეს გაშიფვრა, თუ გსურთ გქონდეთ ადგილობრივი ადმინისტრატორის უფლება ამ რუნაზე. სხვა გზით, runas ინახავს გარეგნობის მონაცემებს, კონკრეტული ბრძანების ჩვენების გარეშე, ასე რომ, თქვენ შეგიძლიათ გაუშვათ იგი ამ ბრძანების მსგავსი უფლებებით, წვდომა იმაზე, რაც გსურთ მოგცეთ, მაგრამ be-yaku іnsh.

ამ პრობლემების თავიდან ასაცილებლად, კონკრეტული ბრძანების აკრეფის დასაშვებად, შეგიძლიათ დაამარცხოთ ტექნიკა, როგორც მას "პროქსინგს" უწოდებენ.

ივარჯიშეთ ამ გზით. კომპიუტერზე სკრიპტი მუდმივად მუშავდება მაღალი პრივილეგიებით. მაგალითად, ჩვენი ტიპის ღვინოს ექნება საჯარო ჩანაწერის გაშვება, რომელსაც შეიძლება ჰქონდეს ადმინისტრატორის უფლებები ფაილ სერვერზე. კორისტუვაჩის სიგნალის შემდეგ ვიკონუვათიმეთ ერთი, გუნდს წინასწარ დავნიშნავ. თითოეული კონდახისთვის - დახურეთ ყველა ფაილი, გახსენით ისინი ხაზის მეშვეობით.

სისტემის ორგანიზებისთვის მას სერვერზე ვათავსებთ, მაგალითად, საქაღალდეში c:\scripts\ command files Server.cmd და Action.cmd .

ჩამონათვალი #4 - Server.cmd (Windows Batch)

დააყენეთ trigger=c:\commandShare\trigger.txt
დააყენეთ action=c:\scripts\action.cmd
დააყენეთ log=c:\scripts\log.txt
:დაიწყე
თუ არსებობს %trigger% დაწყება %action% & echo %time% %date%>>%log% & del %trigger%
sleep.exe 5
უნდა დაიწყოს

ჩამონათვალი #5 - Action.cmd (Windows Batch)

/f-სთვის "skip=4 tokens=1" %%a y ('net files') გააკეთეთ net ფაილები %%a /close
გასასვლელი

Server.cmd შეამოწმეთ ფაილის ნიშანი sing სივრცეში და მისი გამოტოვების შემდეგ გაუშვით ფაილი ბრძანებებით - Action.cmd. მივხვდი, რომ ჩემი პაპები არ არიან დამნაშავენი სწორი წვდომის გამო. Server.cmd-ის ავტომატური გაშვება კომპიუტერის გაშვებისას შეიძლება ორგანიზებული იყოს განრიგის მეორე დავალების შექმნით:

schtasks /შექმნა /ru domain\administrator /rp /sc onstart /tn ProxyScript /tr c:\scripts\server.cmd

/ru პარამეტრის მითითების შემდეგ ფიზიკური ჩანაწერი, თუ სკრიპტი უნდა შეიცვალოს (ჩვენს მომხმარებელს არ აქვს ადმინისტრატორის უფლებები სერვერზე), მაშინ /rp პარამეტრის შემდეგ პაროლი არ არის მითითებული - ამოცანის შექმნისას თქვენ გააქტიურდებით. /sc ოფცია საშუალებას გაძლევთ მიუთითოთ როდის უნდა დაიწყოს სკრიპტი, ჩვენს შემთხვევაში, კომპიუტერის სახელი. კარგად, /tn და /tr საშუალებას გაძლევთ მიუთითოთ დავალების სახელი და ფაილი, რომელიც უნდა დააკოპიროთ.

ახლა, იმისათვის, რომ სკრიპტებმა მყისიერად გამოაგზავნონ სიგნალი, ჩვენ შევქმნით c:\commandShare საქაღალდეს და საჭიროებისამებრ გავხდით მას ხელმისაწვდომს. ამ საქაღალდეში ჩანაწერზე წვდომა მხოლოდ კორისტუვაჩის დედას ევალება ბრძანების შესრულებაზე.

როგორც კი საკმარისი იქნება, თქვენ მოათავსებთ კორისტუვაჩევს სამუშაო სტილის ფაილზე Run.cmd.

ჩამონათვალი #6 - Run.cmd (Windows Batch)

echo ტესტი > \\server\commandShare\trigger.txt

როდესაც ამას გააკეთებთ, ფაილი \\server\commandShare\trigger.txt შეიქმნება coristuvach-ის სახელით. Server.cmd სკრიპტმა, რომელიც მონიშნა, გაუშვით Action.cmd ფაილი თქვენი პრივილეგიებით, დაამატეთ ჩანაწერი c:\scripts\log.txt ფაილში მიმდინარე საათის შესახებ და შემდეგ წაშალეთ trigger.txt ისე, რომ ბრძანება აღარ ელოდება კორისტუვაჩის შეტევის სიგნალს.

Server.cmd სკრიპტი იყენებს Sleep.exe პროგრამას, რომელიც საშუალებას აძლევს სკრიპტს შეაჩეროს ამოცანები ერთი საათის განმავლობაში. თქვენ არ გჭირდებათ ოპერაციული სისტემის საწყობში შესვლა, მაგრამ შეგიძლიათ აიღოთ ის Resource Kit Tools-დან და უბრალოდ დააკოპიროთ ნებისმიერ კომპიუტერზე.

  • სახელმძღვანელო

თეორია არის მინიმუმი, ყველაზე მნიშვნელოვანი ნაწილი პრაქტიკულია. აღწერეთ როგორ დააყენოთ WinRM, როგორ შეცვალოთ პროფილი twill ადაპტერი, სკრიპტი მოცემულია TrustedHosts-ში დასამატებლად ფილტრაციით, ის განმარტავს სანდო ჰოსტების საჭიროებებს და კავშირები ზედაპირულად არის დათვალიერებული დისტანციურად ისე, რომ შესაძლებელი იყოს სისტემის დათვალიერება და დისტანციურად დათვალიერება.

უმარტივესი გზაა ნალაშტუვატი დისტანციურად ვიკონათის მართვაში ჩართვა-PSRemoting ობოლონცში მცხოვრები ადმინისტრატორის უფლებებით. როცა ხდება ასე:

  • გაუშვით WinRM სერვისი (როგორც მან დაიწყო გადატვირთვა)
  • WinRM სერვისი მიდის ბანაკში - ავტომატური დაწყება გაშვებისას
  • შეიქმნება WinRM-ის მოსმენით httpპორტის მოძრაობა 5985 ყველა ადგილობრივი IP მისამართისთვის
  • WinRM მსმენელისთვის შეიქმნება firewall-ის წესი. პატივისცემით, ეს პუნქტი დასრულდება უმოკლეს ვადაში, თუ მხოლოდ შერწყმის ბარათებიდან, შერწყმის ტიპი არის „საჯარო“, რადგან ასეთ ბარათზე პორტის გახსნა არ არის კარგი. თუ ასეთი შეწყალება გაქვთ კონფიგურაციისას, შეცვალეთ ქსელის პროფილი cmdlet-ით Set-NetConnectionProfile და შემდეგ კვლავ გაუშვით Enable-PSRemoting. თუ დაგჭირდებათ გადაბმული ბარათი "Public Treasury" პროფილით, გაუშვით Enable-PSRemoting პარამეტრით. -SkipNetworkProfileCheckრომელზე ნაკლები ექნება ფაირვოლ-ის წესები შექმნილი ადგილობრივი ხაზები.
საჭიროების შემთხვევაში შესაძლებელია იმ მანქანიდან შორეულ მანქანასთან დაკავშირება, რომლითაც საჭიროა კონტროლი. Zrobleno tse z metoyu უსაფრთხოების მიზნით შეცვალოს რისკის ბოროტი სხდომა დისტანციური keruvannya ან DNS დასაბუთებული თავად შეცვალოს დისტანციური მანქანა და zapobigti vykonannya skriptiv მანქანებზე, როგორიცაა თქვენ primusovo დაუშვებელია.

ხელახლა დასადასტურებლად, თუ სად შეგიძლიათ დააკავშიროთ vikoristovuemo:
get-item wsman:\localhost\Client\TrustedHosts
ყველასთან დაკავშირების საშუალებას მოგცემთ
კომპლექტი ელემენტი wsman:localhost\client\trustedhosts -მნიშვნელობა *
თუ ჩართავთ წვდომას ყველა მითითებულზე * WinRM დაუკავშირდება ყველა მანქანას ხელახალი გაყვანის გარეშე. დაიმახსოვრეთ რას ეუბნებით საკუთარ თავს ადგილობრივი განზომილების პოტენციური ბოროტების გამო. მოკლედ, მიუთითეთ ჰოსტის მისამართები, სადაც გჭირდებათ დაკავშირება, შემდეგ WinRM დაუშვებს ყველა სხვა მისამართს ან სახელს. თუ მანქანა იმართება, ის უნდა იყოს დომენში, რომელსაც ენდობა ამ დომენის ყველა მანქანა. თუ ის არ არის დომენში, ან სხვა დომენში, თქვენ უნდა შეიყვანოთ მისამართი TrustedHosts-ში, წინააღმდეგ შემთხვევაში მანქანა დაუკავშირდება მას. დაამატეთ საკუთარ თავს მანქანით, სანამ ჩვენ არ ვართ დაკავშირებული.

დახმარების ბრძანებები მოცემულია, რამდენიმე მათგანი სკრიპტიდან აღვადგინე
################################################ ################################## დაამატეთ NewHost TrustedHost სიაში გაფილტვრით, ასე რომ ეს მწკრივი უკვე შეიძლება იყოს # # .\Add-TrustedHost.ps1 192.168.2.1 ###################################################################################### ################################################ ## პარამეტრი ($NewHost = "192.168.2.89") ჩაწერეთ-მასპინძელი "დაამატებს მასპინძელს: $NewHost" $prev = (მიიღეთ ელემენტი WSMan:\localhost\Client\TrustedHosts). მნიშვნელობა, თუ (($prev . შეიცავს( $ NewHost)) -eq $false) ( if ($prev -eq "") ( set-item 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іryає chi є ისეთი ჩანაწერი, თითქოს სიას არაფერს უმატებს. დარეკვა შეიძლება განხორციელდეს ბრძანების ხაზიდან მისამართის ან სახელის შეყვანით.

Є ryznitsya kazuvati im'ya chi მისამართი. თუ TrustedHosts-ში მხოლოდ მისამართებია, მაშინ გახსენით სესია სახელით, რომელიც არ ჩანს, და navpaki - თუ მიუთითებთ im'ya, მაშინ მიამაგრეთ მისამართი, რომელიც არ ჩანს. დაურეკე ცე.

რატომ არის განსხვავებული

Enable-PSRemoting rob more diy, ქვედა "winrm quickconfig". Set-WSManQuickConfig cmdlet მუშაობს ისევე, როგორც "winrm quickconfig". Enable-PSRemoting გადის Set-WSManQuickConfig, თუ სისტემა კონფიგურირებული გაქვთ

დისტანციური კავშირი
1. სესიები 1-დან 1-მდე
ყვიროდა გუნდი
Enter-PSSession -ComputerName ტესტი
თქვენ ამოიღებთ გარსაცმას დისტანციურ მანქანაზე. თქვენ შეგიძლიათ დაუკავშირდეთ საკუთარ თავს ლოკალჰოსტში შესვლით. პარამეტრით ენიჭება ალტერნატიული სესხები -სერთიფიკატი, გამოვიდა cmdlet-ით გასვლა-PSSssion

გაცვალეთ ასე:

  • შეუძლებელია სხვა თმის შეჭრა - 1 სესიაზე ნაკლები, სესიის შუაში შეუძლებელია შემდგომი დაკავშირება
  • თქვენ ვერ მოიგებთ ბრძანებებს, იაკი მაიუტ გრაფიკული ინტერფეისი. თუ გსურთ ჭურვი ჩამოკიდოს, დააჭირეთ Ctrl + C, რომ ჩამოკიდოთ
  • თქვენ არ შეგიძლიათ გაუშვათ ბრძანებები, რომლებსაც შეუძლიათ საკუთარი ბრძანებების გაშვება, მაგალითად nslookup, netsh
  • თქვენ შეგიძლიათ გაუშვათ სკრიპტები, რადგან პოლიტიკა საშუალებას აძლევს მათ გაშვებას დისტანციურ მანქანაზე
  • ვერ შეუერთდება ინტერაქტიულ სესიას, თქვენ მიდიხართ როგორც "ქსელის შესვლა"გაერთიანებულ დისკზე მიმაგრებული nibi Tom არ გაუშვებს შესვლის სკრიპტს და თქვენ არ შეგიძლიათ სახლის საქაღალდის აღება დისტანციურ მანქანაზე (არგუმენტი არ არის მთავარი საქაღალდის და შესვლის სკრიპტების რუკა)
  • თქვენ არ შეგიძლიათ დაუკავშირდეთ კორესპონდენტთან დისტანციურ მანქანაზე, რომ იპოვოთ იქ იგივე ღვინოები. ნუ ჩქარობთ ბოლომდე გაჩვენოთ ან დაგიმეგობრდეთ.
ეს მეთოდი საუკეთესოა მარტივი ოპერაციებისთვის, zaishov, სერვერზე ვაჭრობის და დაკავშირების შემდეგ. თუ თქვენ გჭირდებათ ბრბოში ცვლილებების აღმოფხვრა, გჭირდებათ სამმაგი ოპერაცია (ბევრი წელი ან მეტი დღე), გჭირდებათ მეტი შესაძლებლობა ადმინისტრაციისთვის, მაშინ თქვენ უნდა მოიგოთ ტექნიკა თხოვნით.
კომენტარი.
ბადის მეშვეობით გავლილი ობიექტები იქმნება და წყვეტს ცოცხლობას. სუნი მეთოდებით ჩანს, ხელისუფლებას ტოვებენ. Vityagti ob'єkt თქვენს მანქანაში, pochakluvat და shove უკან არ წავიდეთ. თუ მეტის დაწერაა საჭირო, სწორად დავამატებ.

2. სესიები 1-დან ბევრამდე
გამოძახება-ბრძანება
ჩვენ აღვნიშნავთ იმას, რასაც ვხედავთ შემდეგნაირად:
$sb = (დისტანციური აპარატის ბრძანებები დაყოფილია კომით)
გადატანილია დისტანციურ მანქანებზე Test1 და Test2
Invoke-Command -ComputerName Test1, Test2 -ScriptBlock $sb
ერთდროულად შეგიძლიათ ჩააგდოთ 32 მანქანა. როგორც ალტერნატიული კრედიტი, მაშინ -Credential პარამეტრი არის გამარჯვებული

სკრიპტის ხელახლა გადასატანად -ScriptBlock პარამეტრის ჩასანაცვლებლად ჩაწერეთ -FilePath, დისტანციურ მანქანაში არ არის საჭირო ფაილზე წვდომა, იქნება სათადარიგო ნაწილების მოწყობა, HTTP-ით გადარიცხვები და ამ მხრიდან დახურვა.

გაითვალისწინეთ, რომ ამ მხარეს იქნება ახალი ოსპრეი, ასე რომ თქვენი სკრიპტი არ აჭარბებს მნიშვნელობას თქვენი კონსოლიდან და შეცვლილი სკრიპტები შეიძლება გამოჩნდეს ცარიელ ნავზე. ამისათვის გაგზავნეთ მზა ინსტრუქციები და სკრიპტები პარამეტრებით.

Invoke-Command-ის სრული გადაწერისთვის, თქვენ უნდა შეცვალოთ რიგები სკრიპტის ბლოკებად. მაგალითად, თქვენ გაქვთ ბრძანებები ტყუილის შესახებ ასეთ სიაში, თქვენ უნდა შექმნათ მწკრივი, გადაიყვანოთ იგი ScriptBlock-ში და დაარედაქტიროთ დისტანციური კომპიუტერი:
$sb = ::შექმნა ($SomeString)
kuda78
სტატიას აკლია რკალი მნიშვნელოვანი მომენტი- პარამეტრების გადატანა სკრიპტიდან დისტანციურ მანქანაზე.

$deployRemote = (
პარამეტრი (
$targetEnvName,
$targetUsername)
$Global:ErrorActionPreference = "შეჩერება"
#…
}

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


ასე რომ, ნამდვილი გამოტოვება. Zrobiv svidomo, რათა არ შევიწროვდეს მზერა პარამეტრებით და აღწერებით. Გმადლობთ. -ArgumentList პარამეტრი მუშაობს როგორც სკრიპტის ბლოკებთან, ასევე სკრიპტებთან

3. სესიები
თუ ამ მხრიდან იქმნება ვიშიკის ასლი, რომ მუდმივად ჩამოკიდოს მეხსიერებაში და მას ბრძანებები ეგზავნება. შედეგად, შესაძლებელია მასთან ხელახლა დაკავშირება, სენსიტის გაშვება vikonannya-სთვის, ზარები სხვადასხვა სკრიპტებით ან სხვადასხვა კორისტუვაჩებით. მაგალითად, თქვენ გაქვთ სკრიპტების ნაკრები, რომლებიც ერთდროულად ასრულებენ ერთ დავალებას, შეგიძლიათ დააკავშიროთ ისინი ერთ დისტანციურ სესიაზე, გაუშვათ წინსვლის ბრძანებების მუშაობის შედეგები, დედა ერთი მოდული, ბოლო ცვლილება, ბოლო გაჩერება , ბოლომდე.

სესია იქმნება New-PSSession cmdlet-ით, შედეგის შენახვა შესაძლებელია ცვლილებებით
$DC01 = New-PSSession -ComputerName DC01 $Controllers = New-PSSession DC01, DC02, DC03
თქვენ შეგიძლიათ გამოიყენოთ იგივე კავშირის პარამეტრები, როგორც Invoke-Command-ში

იაკ ვიკორისტოვატი:
Yakscho 1-to-1
Enter-PSSession -სესია $DC01
Yakscho 1-დან ბევრამდე
Invoke-Command -Sessions $Controllers -ScriptBlock (get-eventlog -logname Security -უახლესი 50)
შეგიძლიათ ნახოთ, ხედავთ თუ არა დახმარების სესიას Get-PSSession, დახურეთ Remove-PSSession
ყველა სესიის დახურვა
Get-PSSession | Remove-PSSession
შეგიძლიათ დაუკავშირდეთ სესიას Connect-PSSession-ის დახმარებით, დაკავშირება Disconnect-PSSession-ის მეშვეობით

Invoke-Command-ს შეუძლია დაუყოვნებლივ შექმნას გათიშული სესია, აწარმოოს ბრძანებები გასაღვიძებლად და დასაკავშირებლად, მოგვიანებით შეგიძლიათ ხელახლა დაკავშირება და სამუშაოს შედეგების მიღება. ბრძოლა -Disconnected პარამეტრით. შედეგების მიღება Recieve-PSSession cmdlet-ის მეშვეობით.

სესიები შეიძლება იყოს უხვად მორგებული, შესაძლებელია სესიების შექმნა ბრძანებების ნაკრებით, მოდულები და ა.შ. მოუწოდა მორგებული საბოლოო წერტილები

© 2022 androidas.ru - ყველაფერი Android-ის შესახებ