Serverové systémy Microsoft Windows

Podobné dokumenty
Serverové systémy Microsoft Windows

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů

Serverové systémy Microsoft Windows

Zápis programu v jazyce C#

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

Skriptovací jazyky. Obsah

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Active Directory aktivně

Serverové systémy Microsoft Windows

Generické programování

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Serverové systémy Microsoft Windows

Windows Server 2003 Active Directory GPO Zásady zabezpečení

Desktop systémy Microsoft Windows

Desktop systémy Microsoft Windows

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Desktop systémy Microsoft Windows

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Desktop systémy Microsoft Windows

Filtrování, seskupování a třídění

Úvod do Operačních Systémů

Přednáška 8. Proměnné. Psaní a ladění skriptů. Parametry skriptu. Vstup a výstup. Konfigurační soubory shellu. Úvod do Operačních Systémů Přednáška 8

Úvod do programovacích jazyků (Java)

Vstupní požadavky, doporučení a metodické pokyny

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z

typová konverze typová inference

Úvodem... 9 Kapitola 1 Karetních

Desktop systémy Microsoft Windows

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 3.4.

Příkazové skripty Procedurální jazyky Lua a ostatní

Úvod do programování - Java. Cvičení č.4

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

1 Webový server, instalace PHP a MySQL 13

Dejte mi práva na...

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

Desktop systémy Microsoft Windows

Jako skript se nabízí BAT soubory, VBScript či PowerShell. Zpracovány jsou druhé dva.

První kapitola úvod do problematiky

Windows 2008 R2 - úvod. Lumír Návrat

PŘETĚŽOVÁNÍ OPERÁTORŮ

Stručný Obsah. IntelliMirror, 1. část: Přesměrování složek, Soubory offline, Správce synchronizace a Diskové kvóty 349

Skripty základy VB, vestavěné objekty, příklady

ADT/ADS = abstraktní datové typy / struktury

Co bude výsledkem mého SELECTu? RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu

Algoritmizace a programování

Jazyk C# (seminář 6)

Konstruktory překladačů

Algoritmizace a programování

Vazba ESO9 na MS Outlook a MS Exchange

BASH. Kouzla s příkazovou řádkou. Petr Koloros

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Serverové systémy Microsoft Windows

Pantek Productivity Pack. Verify User Control. Uživatelský manuál

VISUAL BASIC. Práce se soubory

9. přednáška - třídy, objekty

Programování v Pythonu

Úvod do programovacích jazyků (Java)

Pointery II. Jan Hnilica Počítačové modelování 17

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Tvorba výrazu: speciální znaky shellu se uvádějí do apostrofů jednotlivé části výrazu se oddělují mezerou

Formuláře. Internetové publikování. Formuláře - příklad

Datové struktury. alg12 1

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Databáze I. Přednáška 4

Serverové systémy Microsoft Windows

Databázové systémy Cvičení 5.2

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Jazyk VHDL konstanty, signály a proměnné. Jazyk VHDL paralelní a sekvenční doména. Kurz A0B38FPGA Aplikace hradlových polí

PRŮBĚHOVÝ TEST Z PŘEDNÁŠEK

IB111 Úvod do programování skrze Python Přednáška 7

Co mi to tu vlastně běží?

MAXScript výukový kurz

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

17. července :51 z moravec@yahoo.com

Skripty - úvod. Linux - skripty 2

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

Homer. prvky. délka. přední 0 zadní 4. Použití fronty BUS STOP. 3 Lisa. 2 Bart. 4 Maggie. 1 Marge. Grafické znázornění předchozí animace:

Stručný úvod pro programátory. Michal Kuchta

Kurz LSL skriptování. Shiny Iceberg 2009

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

Základy PERLu snadno a rychle

Obsah. Kapitola 1. Kapitola 2

Informační systém webhostingu

POWERSHELL. Desired State Configuration (DSC) Lukáš Brázda MCT, MCSA, MCSE

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Programování v C++, 2. cvičení

Bezpečn č os o t t dat

Programování v C++ 2, 4. cvičení

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

Fingerprint Verification Control

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

ČÁST 1 ÚVOD. Instalace operačního systému 21 Aktualizace operačního systému 57 Příkazový řádek 77 Windows Script Host 103 ČÁST 2 ŘEŠENÍ

Úvod, jednoduché příkazy

Jazyk C# (seminář 5)

Transkript:

Serverové systémy Microsoft Windows IW2/XMW2 2013/2014 Jan Fiedor ifiedor@fit.vutbr.cz Fakulta Informačních Technologií Vysoké Učení Technické v Brně Božetěchova 2, 612 66 Brno Revize 7. 5. 2014 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 1 / 30

Windows PowerShell Pro správu serveru a Active Directory 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 2 / 30

Windows PowerShell Konzole (příkazový řádek) systému Windows Běží na platformě.net (.NET Framework) Pracuje s.net objekty (object-based) namísto textu Manipulace s objekty pomocí cmdletů Jednoduché (single-function) vestavěné příkazy Podpora všech nástrojů pro příkazovou řádku (cmd) Skriptovací jazyk Imperativní, dynamicky typovaný skriptovací jazyk Přístup ke všem objektům a funkcím platformy.net 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 3 / 30

Základy práce s cmdlety Výpis seznamu všech cmdletů / aliasů (zkratek) PS C:\> get-command * -CommandType { cmdlet alias Výpis nápovědy k cmdletu PS C:\> get-help <cmdlet> [ -detailed ] [ -full ] Definice nového aliasu (zkratky) cmdletu PS C:\> set-alias <alias> <cmdlet> 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 4 / 30

Formátování výstupu Cmdlet Format-List (alias fl) Seznam objektů, více vlastností, objekty za sebou PS C:\> format-list Property <names> -GroupBy <prop> Cmdlet Format-Table (alias ft) Tabulka objektů, více vlastností, každý objekt 1 řádek PS C:\> format-table Property <names> -GroupBy <prop> Cmdlet Format-Wide (alias fw) Tabulka objektů, jedna vlastnost ve více sloupcích PS C:\> format-wide Property <name> -GroupBy <prop> 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 5 / 30

Řazení, filtrování a výběr objektů Cmdlet Sort-Object (alias sort) Řazení objektů podle hodnot jejich vlastností PS C:\> sort-object Property <names> [-CaseSensitive] [-Culture <name>] [-Descending] [-Unique] Cmdlet Where-Object (aliasy where a?) Filtrování objektů na základě předloženého skriptu PS C:\> where-object -FilterScript <scriptblock> Cmdlet Select-Object (alias select) Výběr objektů na začátku, konci, určitých pozicích, PS C:\> select-object [ First <int>] [-Last <int>] [-Skip <int>] [-Index <ints>] [-Unique] 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 6 / 30

Zřetězování příkazů (pipelining) Přeposílání výstupu (objektů) jednoho příkazu na vstup jiného příkazu přes rouru (pipe) PS C:\> <příkaz> <příkaz> [ <příkaz> ] Příklady # Výpis tabulky názvů služeb seskupených podle stavu get-service sort-object -Property Status format-table -Property Name -GroupBy Status # Výpis 5 procesů, které mají nejvyšší využití paměti get-process sort-object -Property WS -Descending select-object -First 5 # Výpis všech služeb, jenž aktuálně běží na počítači get-service where-object { $_.Status -eq "running" 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 7 / 30

Skripty a omezování jejich spouštění Soubory s příponou.ps1 Spouštění se řídí nastavením zásad spouštění Zjištění aktuálního nastavení zásad spouštění PS C:\> get-executionpolicy Nastavení zásad spouštění pro konkrétní rozsah PS C:\> set-executionpolicy <úroveň> -Scope <rozsah> Rozsah Process CurrentUser LocalMachine Popis Nastavení zásad spouštění ovlivňuje aktuální PowerShell proces Nastavení zásad spouštění ovlivňuje aktuálního uživatele Nastavení zásad spouštění ovlivňuje všechny uživatele na počítači 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 8 / 30

Úrovně zásad spouštění skriptů Podporováno celkem 7 úrovní zásad spouštění Úroveň Verze Popis Default 1.0 Výchozí nastavení zásad spouštění (aktuálně Restricted) Restricted 1.0 Nelze spouštět skripty ani načítat konfigurační soubory AllSigned 1.0 RemoteSigned 1.0 Unrestricted 1.0 Bypass 2.0 Undefined 2.0 Všechny skripty a konfigurační soubory musí být podepsány (signed) důvěryhodnou autoritou Všechny skripty a konfigurační soubory stažené z internetu musí být podepsány (signed) důvěryhodnou autoritou Lze spouštět skripty a načítat konfigurační soubory, spouštění skriptů stažených z internetu vyžaduje potvrzení od uživatele Lze spouštět skripty a načítat konfigurační soubory, spouštění skriptů stažených z internetu nevyžaduje potvrzení uživatele Odebere aktuální nastavení zásad spouštění z daného rozsahu (nelze použít pro rozsah zásad skupiny (Group Policy scope)) 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 9 / 30

Proměnné (Variables) Deklarovány při prvním použití (při přiřazení dat) Názvy musí začínat znakem dolar ($<název>) Příklady Deklarace proměnných přiřazením $str = "text" # Deklarace více proměnných zároveň $str1, $str2, $str3 = "text1", "text2", "text3" # Deklarace proměnných konkrétního datového typu [int]$number = 12 Deklarace proměnné pomocí cmdletu set-variable name str value "text" 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 10 / 30

Speciální proměnné Proměnná Význam $_ Aktuální pipeline objekt (aktuální objekt při iterování přes objekty) $? Obsahuje výsledek (úspěch / neúspěch) poslední operace $args Obsahuje parametry příkazové řádky $error Obsahuje poslední chybu $env:<název> Reprezentuje proměnnou prostředí daného názvu ($env:path, ) $foreach, $switch Enumerátory (ve foreach smyčce, ve switch větvení) $input Vstup, jenž je poslán přes rouru (piped) do funkce nebo bloku kódu $match Hashovací tabulka obsahující položky nalezené match operátorem $myinvocation Obsahuje informace o vykonávaném skriptu nebo příkazu $host Obsahuje informace o hostiteli vykonávajícím daný skript či příkaz $true, $false, $null Speciální hodnoty (pravda, nepravda, nulový objekt) $stacktrace Obsahuje zásobník volání (stack trace) 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 11 / 30

Konstanty (Constants) Jejich hodnota nemůže být změněna Nemohou být smazány Příklady Deklarace konstanty set-variable name CSTR value "ctext" option constant Použití konstanty $str = $CSTR 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 12 / 30

Pole (Arrays) Indexované seznamy hodnot (.NET objektů) Příklady Definice pole $arr = @("text", 2, 4.6) Konkatenace dvou polí $arr2 = $arr + @("text2", 1, 3.5) Přístup k prvkům pole (první prvek má index 0) # První prvek pole $first = $arr[0] # Poslední prvek pole $last = $arr[$arr.count - 1] 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 13 / 30

Výstup (Output) Cmdlet Write-Host Vypisuje objekty v hostiteli (nejčastěji konzole) write-host <objekt> NoNewline Separator <řetězec> BackgroundColor <barva> # Nastavení barev nemusí být ForegroundColor <barva> # podporováno hostitelem Cmdlet Write-Output (aliasy echo a write) Posílá objekty dalšímu příkazu v zřetězení (pipeline) Pokud další příkaz není, vypíší se objekty do konzole write-output <objekt> write <objekt> echo <objekt> 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 14 / 30

Práce s datovými typy Informace o datovém typu proměnné PS C:\> <proměnná>.gettype() Informace o prvcích (metodách, ) proměnné PS C:\> get-member InputObject <proměnná> Přetypování proměnné <nová-proměnná> = [<typ>]<proměnná> Příklad $str = "12:00"; write-host $str.gettype() $date = [datetime]$str; write-host $date.gettype() get-member -InputObject @($str, $date) # Prvky Object[] @($str, $date) get-member # Prvky String a DateTime 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 15 / 30

Foreach Alias cmdletu ForEach-Object Použití # Jako klíčové slovo, přístup k prvku přes <item> foreach (<item> in <collection>) { <statements> # Jako cmdlet, přístup k prvku přes proměnnou $_ <collection> foreach { <statements> Příklad $arr = @("text", 2, 4.6) # Iterace přes prvky pole foreach ($item in $arr){ $item.gettype().fullname # Iterace přes prvky poslané přes rouru (pipe) $arr foreach { $_.GetType().FullName 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 16 / 30

For a while Použití # For for (<init>; <condition>; <action>) { <statements> # While while (<condition>) { <statements> Příklad $arr = @("text", 2, 4.6) # Iterace přes prvky pole pomocí for for ($i = 0; $i -lt $arr.count; $i++) { $arr[$i] # Ekvivalentní zápis s využitím foreach foreach ($i in (0.. ($arr.count 1))) { $arr[$i] # Iterace přes prvky pole pomocí while $i = 0; while ($i -lt $arr.count) { $arr[$i]; $i++ 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 17 / 30

Porovnávací operátory Operátor C / C++ Popis -eq == Je rovno -ne!= Není rovno -gt > Větší než -ge >= Větší než nebo rovno -lt < Menší než -le <= Menší než nebo rovno -like Odpovídá výrazu se zástupnými (wild card) znaky -notlike Neodpovídá výrazu se zástupnými (wild card) znaky -match Odpovídá regulárnímu výrazu -notmatch Neodpovídá regulárnímu výrazu 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 18 / 30

If elseif else Použití # If elseif else if (<condition>) { <statements> elseif (<condition>) { <statements> else { <statements> Příklad if ($args[0] -is [datetime]) { write-host "Time from datetime:" $args[0] elseif ($args[0] -is [string]) { write-host "Time from string:" ([datetime]$args[0]) else { write-host "Invalid time." 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 19 / 30

Switch Použití switch [-wildcard] [-regex] (<variable/collection>) { <value> { <statements> default { <statements> Příklad switch -wildcard ($args) { 3.14 { write-host "PI" 42 { write-host "Answer to The Ultimate Question" "*help*" { write-host $myinvocation.mycommand.name "<arg>" default { write-host "Unknown parameter" $_ 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 20 / 30

Funkce Definice funkce function <name> { # Přístup k parametrům přes proměnnou $args <statements> Definice funkce s navázáním parametrů function <name> ( <arg> = <default>, ) { <statements> function <name> { param( <arg> = <default>, ) <statements> 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 21 / 30

Volání funkcí Volání funkce <function>( <value>, ) # Parametry odděleny čárkou <function> <value> # Parametry odděleny mezerou <function> -<arg> <value> # Pro navázané parametry Příklad function print { write-host $args[0] $args[1] function printb($x = "hello", $y = "world") { write-host $x $y print("hello", "world") # Výstup: hello world print "hi"; printb "hi" # Výstup: hi resp. hi world printb -y "earth" # Výstup: hello earth 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 22 / 30

Vytváření a přístup k objektům Vytvoření nového.net objektu Cmdlet New-Object new-object [-TypeName] <dotnet-class> Připojení ke COM objektu Cmdlet New-Object new-object -ComObject <com-class> Připojení k WMI objektu Cmdlet Get-WmiObject (alias gwmi) get-wmiobject [-Class] <wmi-class> 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 23 / 30

Předávání objektů pomocí rour (pipes) Zápis do roury pomocí cmdletu Write-Output Zapsané objekty uloženy v proměnné $input function producer { for ($i = 0; $i -lt 10; $i++) { write-output $i function consumer { foreach ($object in $input) { write-host $object producer consumer # Generování objektů funkcí @("text", 2, 4.6) consumer # Předání objektů přímo 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 24 / 30

Vytvoření uživatelů v Active Directory function Create-UserInGroup($Group) { # Heslo musí být datového typu SecureString $password = ConvertTo-SecureString "aaa" ` -AsPlainText Force $adgroup = New-ADGroup $Group Global -PassThru ` -Path "CN=Users,DC=testing,DC=local" foreach ($user in $input) { # Znak ` slouží k zalomení příkazu na další řádek $aduser = New-ADUser $user -Enabled $true ` -AccountPassword $password -PassThru ` -Path "CN=Users,DC=testing,DC=local" Add-ADGroupMember $adgroup $aduser # Vytvoří 5 uživatelů ve skupině Simpsons @("homer", "marge", "bart", "lisa", "maggie") Create-UserInGroup -Group "Simpsons" 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 25 / 30

Vytvoření stínové skupiny function Get-UsersInOU($OU) { # Vyhledávání probíhá na základě where-like filtru $adou = Get-ADOrganizationalUnit ` -Filter { Name -eq $OU # Name nemusí být unikátní Get-ADUser -Filter * -SearchBase $adou ` -SearchScope OneLevel # Prohledá pouze zadanou OU, # ne podřízené (child) OU function Create-ShadowGroup { param($ou, $Group = "SG_" + $OU) $adsgroup = New-ADGroup $Group Global -PassThru ` -Path "CN=Users,DC=testing,DC=local" foreach ($user in Get-UsersInOU($OU)) { Add-ADGroupMember $adsgroup $user # Vytvoří stínovou skupinou s uživateli z OU Simpsons Create-ShadowGroup -OU "Simpsons" 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 26 / 30

Zálohování GPO objektů function Backup-GPOsToFolder($Path) { $Path += "\" + (Get-Date -Format "yyyy-mm-dd@hh-mm") New-Item $Path -Type Directory # Vytvoření adresáře Backup-GPO -All -Path $Path function Backup-Folder($Path, $Target) { $policy = New-WBPolicy # Nastavení zálohování $backupdir = New-WBFileSpec -FileSpec $Path Add-WBFileSpec -Policy $policy -FileSpec $backupdir $targetvol = New-WBBackupTarget -VolumePath $Target Add-WBBackupTarget -Policy $policy -Target $targetvol Start-WBBackup -Policy $policy # Zálohuje GPO objekty do adresáře, pak tento adresář Backup-GPOsToFolder -Path "C:\Backup" Backup-Folder -Path "C:\Backup" -Target "E:" 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 27 / 30

Vytvoření domovských adresářů (1) function Allow-FullControl($Identity) { # Vytvoření účtu reprezentujícího identitu $account = New-Object ` System.Security.Principal.NTAccount($Identity) # Vytvoření zástupné konstanty pro.net třídu Set-Variable FileSystemAccessRule -Option Constant ` System.Security.AccessControl.FileSystemAccessRule # Vytvoření ACE položky ACL seznamu New-Object $FileSystemAccessRule ( ` $account, # Specifikace identity "FullControl", # Specifikace oprávnění "ContainerInherit, ObjectInherit", # Dědit dále "None", # Aplikovat oprávnění a propagovat dále "Allow" # Typ položky (povolit / odepřít) ) # Zalamování příkazů je možné i pomocí komentářů 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 28 / 30

Vytvoření domovských adresářů (2) function Create-HomeFolder($User, $HomeRoot) { $homedir = New-Item ($HomeRoot + "\" + $User) ` -Type Directory # Získání ACL seznamu domovského adresáře uživatele $acl = Get-Acl $homedir.fullname # Zrušení dědičnosti a odebrání zděděných oprávnění $acl.setaccessruleprotection($true, $false) foreach ($identity in ` @("SYSTEM", "Administrators", $User) ) { # Parametr musí být proměnná => užití $(<funkce>) $acl.addaccessrule($(allow-fullcontrol($identity))) # Nastavení nového ACL seznamu domovskému adresáři Set-Acl $homedir.fullname $acl # Odeslání cesty k domovskému adresáři do roury Write-Output $homedir 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 29 / 30

Vytvoření domovských adresářů (3) function Set-Quota($Path, $Limit = 500MB) { # Připojení k správci prostředků přes COM rozhraní $qmgr = New-Object -ComObject Fsrm.FsrmQuotaManager if ($Path) { # Test, zda je proměnná definována $input += $Path # Přidání prvku do pole (kolekce) # Vytvoření kvóty pro každý předaný home adresář foreach ($path in $input) { $quota = $qmgr.createquota($path) $quota.quotalimit = $Limit # Nastavení limitu $quota.commit() # Potvrzení (zapsání) kvóty # Vytvoření home adresářů pro uživatele v OU Simpsons foreach ($user in Get-UsersInOU("Simpsons")) { Create-HomeFolder $user.name -HomeRoot "C:\Homes" Set-Quota -Limit 1GB # Adresáře předány přes rouru 7. 5. 2014 Jan Fiedor UITS FIT VUT Brno 30 / 30