Powershell Data import scripts (voor beginners) Willem Geesink
Onderwerpen 1.Waarom is powershell handig? 2.Basiselementen waarmee we gaan werken 3.De foreach loop versus pipe 4.Voorbeeld scripts: 1. Opbouwen scripts 2. Data van csv-bestand naar AD 3. Printrapportage papercut logs
1. Waarom is powershell handig? - Microsoft-produkten en veel niet-microsoft produkten spreken powershell! - Dynamisch (scripten + programmeren) - Modules met voorgebakken functies (cmdlets) - Namespaces
Dynamisch: Het lijkt op Object Oriented Programming (OOP)
Modules met voorgebakken functies (cmdlets) Welke modules zijn er beschikbaar? get-module -ListAvailable
Modules met voorgebakken functies (cmdlets) Module importeren: import-module <naam>
Modules met voorgebakken functies (cmdlets) cmdlets binnen module: get-command module <naam>
Modules met voorgebakken functies (cmdlets) get-help <cmdlet-naam>
Namespaces set-location c:\temp
Namespaces set-location AD:
Namespaces set-location HKLM:
Onderwerpen 1.Waarom is powershell handig? 2.Basiselementen waarmee we gaan werken 3.De foreach loop versus pipe 4.Voorbeeld scripts: 1. Opbouwen scripts 2. Data van csv-bestand naar AD 3. Printrapportage papercut logs
2. Basiselementen waarmee we gaan werken Variabele String Integer Object Array cmdlet: Import-csv if switch
Variabele Container voor gegevens. $groet = Hallo
String Reeks karakters
String Operaties op strings
String
Integer
Objecten
Objecten Voorbeeld
Array Verzameling objecten
Array Verzameling objecten
Cmdlet: Import-csv Inhoud van.csv Array van objecten Elke regel wordt 1 object 1 e regel bevat properties van objecten
Cmdlet: Import-csv
Cmdlet: Import-csv
Cmdlet: Import-csv
Cmdlet: Import-csv
If if (boolean) { voer dit uit } if ( $verzameling[0].naam eq Jan ) { write-host Ja dit is Jan! }
switch If ($variabele eq <value1>) { doe dit } If ($variabele eq <value2>) {doe dat } Switch ($variabele) { <value1> { doe dit } <value2> {doe dat } }
switch Voorbeeld: Binnenlandse nrs +31 prefix $telnr = 0612345678 switch wildcard ($telnr[0,1] join ) { 00 { } 0* { $telnr = +31 + ($telnr[1..9] join ) } }
Onderwerpen 1.Waarom is powershell handig? 2.Basiselementen waarmee we gaan werken 3.De foreach loop versus pipe 4.Voorbeeld scripts: 1. Opbouwen scripts 2. Data van csv-bestand naar AD 3. Printrapportage papercut logs
3. De foreach loop versus pipe Foreach loop Uitvoeren voor elk array item { actie 1 actie 2 actie x }
3. De foreach loop versus pipe
3. De foreach loop versus pipe Pipe: Importeer data in array Array foreach-object {actie a; actie b; actie x}
3. De foreach loop versus pipe
Onderwerpen 1.Waarom is powershell handig? 2.Basiselementen waarmee we gaan werken 3.De foreach loop versus pipe 4.Voorbeeld scripts: 1. Opbouwen scripts 2. Data van csv-bestand naar AD 3. Printrapportage papercut logs
1. Opbouwen script - Definieer eerst wat je precies wilt doen - Bouw de basis - Voeg what if vangnetten toe - Uitvoeren van.ps1 scripts toestaan: set-executionpolicy remotesigned - Gebruik een echte editor, bijv microsoft ISE
1. Opbouwen script
2. Data van csv-bestand naar AD Importeer de csv Voor elke regel het volgende uitvoeren: Vind het AD object bij de naam Voeg telefoonnummer toe aan AD object
2. Data van csv-bestand naar AD Versie met powershell module Get-aduser
2. Data van csv-bestand naar AD Versie met powershell module Get-aduser Set-itemproperty Import-module ActiveDirectory <import-csv (importeer databestand)> <Foreach (entry in de array)> { <lees telefoonnr uit> <get-aduser m.b.v usernaam> <set-itemproperty (voeg telnr toe)> }
2. Data van csv-bestand naar AD Versie met powershell module Get-aduser Set-itemproperty
2. Data van csv-bestand naar AD Extra veiligheid: Wat als telefoon waarde leeg is? ($a -eq $b) ($a -ne $b) (equal) (not equal)
2. Data van csv-bestand naar AD AD velden identificeren: adsiedit.msc
3. Printrapportage papercut logs Print logs csv formaat Gratis versie: 1 regel per printjob (maandlogs)
3. Printrapportage papercut logs Wat we willen: - Totalen per user per maand - Exporteren als csv bestand - Mailen naar distributielijst
3. Printrapportage papercut logs Wat we willen: totalen per user per maand Log: Optel-array: User: Jan Pages: 2 User: Piet Pages: 26 User: Klaas Pages: 5
3. Printrapportage papercut logs 1 e regel weghalen Importeer logbestand Maak leeg optel-array aan Voor elke entry in log: aantal pages = Pages x Copies Als user voorkomt in optel-array: Aantal pages aan user toevoegen Anders: Nieuw user object aanmaken Aantal pages aan user toevoegen Object toevoegen aan optel-array
3. Printrapportage papercut logs - Importeren maandlog - 1 e Regel verwijderen - Aanmaken optel-array - Aanmaken totaal teller
3. Printrapportage papercut logs
3. Printrapportage papercut logs - Object aanmaken voor totaal deze maand - Gegevens per user exporteren naar csv - Tijdelijk bestand wissen
3. Printrapportage papercut logs - Aangemaakt csv overzicht mailen
Laatste powershell tip: