# Projekt - Zarządzanie systemi Windows / Zarządzanie usługami w systemie Windows
### Michał Grajzer, Iwo Dębski. CDV 2020.
## Spis treści
1. [Opis Projektu](#Opis-Projektu)
2. [Specyfikacja techniczna sieci oraz stacji roboczych](#Specyfikacja)
3. [Instalacja Active Directory na środowisku Windows Server 2016 (DataCenter)](#Instalacja-Active-Directory-na-%C5%9Brodowisku-Windows-Server-2016-DataCenter)
4. [Konfiguracja WSUS](#Konfiguracja-WSUS)
5. [Połączenie z Active Directory](#Połączenie-z-Active-Directory)
6. [Skrypty](#Skrypty-u%C5%82atwiaj%C4%85ce-prace)
## Opis projektu
Propozycja wyposażenia uczelni CDV z uwzględnieniem wyposażenia zarówno serwerownii jak i sal komputerowych. Dla tego projektu przyjęto uwzględnienie jednej w pełmni wyposażonej serwerowni oraz osiem sal komputerowych posiadających 41 stanowisk pracy.
Projekt w całości został przygotowany przez Michała Grajzera oraz Iwo Dębskiego w ramach zaliczenia przedmiotów Zarządzanie Systemami Windows oraz Zarządzanie Usługami w Systemach Windows w semestrze letnim 2020.
## Specyfikacja techniczna sieci oraz stacji roboczych
#### Serwerownia:
2 x Szafa rack NetShelter SX 42U (model: AR3100) - 26316,46zł
3 x Listwa zasilająca 230V Base Link - 245,98zł
9 x Przełącznik DELL 48P (model: N3048P52102091) - 130491,00zł
4 x Serwer rack Dell PowerEdge R540 - 38396zł
#### Pracownie komputerowe:
328 x monitor Dell UP3218K - 4654648,20zł
328 x komputer Dell Precision 3431 SFF - 4113448,00zł
#### ŁĄCZNY KOSZT: 8963545,64zł
## Instalacja Active Directory na środowisku Windows Server 2016 (DataCenter)
1. Zaloguj się jako **administrator** do stworzonego wcześniej serwera
2. W Server Manager wybierz opcje **'Add roles and features'**

3. W pierwszym oknie wybierz **'Next'**

4. Wybierz opcję **'Role-based'**

6. Wybierz server

7. Wybierz opcje **'Active Directory Domain Services'** i kliknij **'Add Features'**

8. Wybierz wszystkie niezbędne dodatki

9. Kliknij **'Next'** w oknie AD DS
10. Potwierdź instalacje klikając **'Install'**
11. Instalacja kończy się informacją **'Configuration required'**

12. Aby móc korzystać z AD należy go skonfigurować. Kliknij na ikonę flagi(zaświeci się obok niej wykrzynik) oraz wybierz **'Promote this server to a domain controller'** w Server Manager.
13. W oknie konfiguracyjnym wybierz **'Add a new forest'** oraz podaj root domain name.

14. Podaj hasło DSRM.

15. Kliknij **'Next'** w oknie 'DNS options'
16. Zweryfikuj netBIOS domain name

17. Podaj ścieżki do bazy danych, logów oraz sysvol (na obrazku defaultowe)

18. W następnym kroku można pobrać skrypt PS do automatycznej konfiguracji AD. Klikamy **'Next'**.
19. Po sprawdzeniu wymagań klikamy **'Install'**. Po konfiguracji serwer zrestartuje się automatycznie.

## Konfiguracja WSUS
1. Instalacja WSUS'a wygląda analogicznie jak przy instalacji AD (pkt.1-10).
2. W Menu Start wyszukujemy narzędzie WSUS.

3. Uruchamia się kreator konfiguracji. Klikamy "Next".

4. Wybieram źródło pobieranych aktualizacji. W tym konkretnym przypadku jest to serwer MS. Klikamy "Next".

5. Jeżeli tego wymaga konfiguracja możemy skonfigurować serwer proxy. Pomijamy, klikając "Next".

6. Weryfikujemy konfigurację. Klikamy "Start Connecting", czekamy na wykonanie się operacji, następnie klikamy "Next".



7. Wybieramy, dla których systemów operacyjnych mają być pobierane i dystrybuowane aktualizacje. W naszym przykładzie jest to nasza wersja Windows Server oraz Windows 10 Professional. Następnie klikamy "Next".

8. Wybieramy typ aktualizacji, który ma być pobierany i dystrybuowany. Klikamy "Next".

9. Ustawiamy sposób synchronizacji z serwerami aktualizacji MS. Klikamy "Next".

10. Kończymy konfigurację klikając "Finish".

11. Po uruchomieniu WSUS widać ekran z aktualnymi statystykami.

## Połączenie z Active Directory
Aby dodać użytkownika należy skonfigurować DNS oraz dodać użytkownika do lokalnego dostępu z RDP (jeśli używamy VM). Po zalogowaniu jako user z AD możemy zobaczyć, że polityki zostały zaktualizowane:

## Skrypty ułatwiające prace
1. Sprawdzanie ilości wolnego miejsca na wszystkich dyskach (**VBScript**):
```
Const HARD_DISK = 3
strComputer = "."
outFile="C:\logs\freespace" & Right("0" & Month(Now), 2) & "-" & Right("0" & Day(Now), 2) & "-" & Year(Now) & ".log"
Set objFSO=CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile(outFile,True)
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery ("SELECT * FROM Win32_LogicalDisk WHERE DriveType = " & HARD_DISK & "")
For Each objDisk in colDisks
objFile.Write "Device ID: " & objDisk.DeviceID & " Free Disk Space: " & (objDisk.FreeSpace / 1024 / 1024 / 1024 ) & " GB"
Next
objFile.Close
```
2. Usuwanie plików z folderu 'Download' starszych niż 5 dni (**VBScript**):
```
Set oFileSys = WScript.CreateObject("Scripting.FileSystemObject")
sRoot = "C:\Downloads"
today = Date
nMaxFileAge = 5
DeleteFiles(sRoot)
Function DeleteFiles(ByVal sFolder)
Set oFolder = oFileSys.GetFolder(sFolder)
Set aFiles = oFolder.Files
Set aSubFolders = oFolder.SubFolders
For Each file in aFiles
dFileCreated = FormatDateTime(file.DateCreated, "2")
If DateDiff("d", dFileCreated, today) > nMaxFileAge Then
file.Delete(True)
End If
Next
For Each folder in aSubFolders
DeleteFiles(folder.Path)
Next
End Function
```
3. Sprawdzanie jak długo server/komputer stoi (**PowerShell**)
```
$ComputerName = $env:COMPUTERNAME
$userSystem = Get-WmiObject win32_operatingsystem -ComputerName $ComputerName -ErrorAction SilentlyContinue
if ($userSystem.LastBootUpTime) {
$sysuptime= (Get-Date) - $userSystem.ConvertToDateTime($userSystem.LastBootUpTime)
Write-Output ("Last boot: " + $userSystem.ConvertToDateTime($userSystem.LastBootUpTime) )
Write-Output ("Uptime : " + $sysuptime.Days + " Days " + $sysuptime.Hours + " Hours " + $sysuptime.Minutes + " Minutes" )
}
else {
Write-Warning "Unable to connect to $computername"
}
```
4. Export użytkowników AD do csv (**Powershell**):
```
Import-Module ActiveDirectory
$d = Get-Date -Format "ddMMyyyy"
Get-ADUser -Filter * -Properties * | export-csv "c:\list-of-users_$d.csv"
```
5. Blokowanie użytkowników AD nieaktywnych od 180 dni (**PowerShell**):
```
Import-Module ActiveDirectory
$timespan = New-Timespan -Days 180
Search-ADAccount -UsersOnly -AccountInactive -TimeSpan $timespan | Disable-ADAccount
```
6. Dodawanie użytkowników z csv (**PowerShell**):
```
Import-Module ActiveDirectory
$Users = Import-Csv -Delimiter "," -Path "C:\UsersToAdd-test.csv"
foreach ($User in $Users)
{
$Displayname = $User.Firstname + " " + $User.Lastname
$UserFirstname = $User.Firstname
$UserLastname = $User.Lastname
$OU = "$User.OU"
$SAM = $User.SAM
$UPN = $User.Firstname + "." + $User.Lastname + "@" + $User.Maildomain
$Description = $User.Description
$Password = $User.Password
New-ADUser -Name "$Displayname" -DisplayName "$Displayname" -SamAccountName $SAM -UserPrincipalName $UPN -GivenName "$UserFirstname" -Surname "$UserLastname" -Description "$Description" -AccountPassword (ConvertTo-SecureString $Password -AsPlainText -Force) -Enabled $true -Path "$OU" -ChangePasswordAtLogon $false –PasswordNeverExpires $true -server domain.loc
}
```