Category Archives: Group Policy

Uključivanje i podešavanje Windows PowerShell Remoting-a pomoću grupnih polisa

Sa PowerShell-om verzije 2.0 dodata je nova mogućnost udaljenog korišćenja PS-a, PowerShell remoting. Možemo ga uključiti sa jednostavom komandom:

Enable-PSRemoting

Bolja varijanta je da to uradimo preko grupnih polisa (Group Policy), podrazumeva se da je okruženje domensko a ne okruženje radne grupe. Ovo važi za Vistu, Windows 7, Windows Server 2008 i Windows Server 2008R2, za server 2003 i XP je najbolje “pustiti” script koji će uključiti PS remoting.

PS 2.0 i WinRM 2.0 dolaze sa Win 7 i Server 2008R2 dok ih je za starije operativne sisteme potrebno instalirati(najbolje preko WSUS-a).

Prvi korak je da otvorimo Group Policy na domen kontroleru napravimo polisu i odemo pristupimo podešavanju iste, Computer Configuration->Policies->Administrative templates->Windows Components

PSRemoting01 

PSRemoting02

Potrebno je da podesimo automatic listener koji “sluša” stalno da li ima zahteva. Nakon toga je potrebno da postavimo WinRM servis da se automatski startuje sa podizanjem sistema:

PSRemoting04

Sledeća stvar je izvršavanje PS skripti na računarima, možemo izabrati sve skriptove ili samo potpisane:

PSRemoting05

Ostalo je još da podesimo par pravila u firewall-u koji se odnose na WMI i WinRM:

PSRemoting06

PSRemoting07

U podešavanjima iznad možemo isključiti compatibility mode ukoliko u organizaciji imamo samo Win 7 i Server 2008R2

PSRemoting08

PSRemoting09

Pod svakim firewall pravilom imamo podešavanje opsega, pa možemo odrediti sa kojih se IP adresa ili koji se sve korisnici mogu povezati i za koje profile će se podešavanje odnositi.

PSRemoting10

Dodajemo pravilo i za WMI ako ćemo ga koristiti:

PSRemoting11

PSRemoting12

PSRemoting13

Sada možemo proveriti da li smo sve uspešno odradili sa komadnom:

 Invoke-Command -ComputerName imeRačunara -ScriptBlock {shutdown -r -t 10}

Provera da li i WMI radi korektno sa:

Get-WmiObject win32_bios -ComputerName imeRačunara -Credential (Get-Credential RAJCO\adminrajco)

Možemo koristiti i ovu funkciju za proveru portova:

function Test-Port{
     Param([string]$srv,$port=135,$timeout=3000,[switch]$verbose)
     $ErrorActionPreference = "SilentlyContinue"
     $tcpclient = new-Object system.Net.Sockets.TcpClient
     $iar = $tcpclient.BeginConnect($srv,$port,$null,$null)
     $wait = $iar.AsyncWaitHandle.WaitOne($timeout,$false)
     if(!$wait)
     {
         $tcpclient.Close()
         if($verbose){Write-Host "Connection Timeout"}
         Return $false
     }
     else
     {
         $error.Clear()
         $tcpclient.EndConnect($iar) | out-Null
         if($error[0]){if($verbose){write-host $error[0]};$failed = $true}
         $tcpclient.Close()
     }
     if($failed){return $false}else{return $true}
}

Pozivamo je sa:

Test-Port imeRačunara

Sa ovim smo završili podešavanje remotinga, a samim tim otvorili dosta mogućnosti i olakšali održavanje računara i servera.