Accompagnement Pédagogique et Technique pour le stage msaz040

Il s’agit bien d’une formation officielle, mais qui n’a pas de certification associée. Son contenu est orienté terrain et assez pragmatique !

Timing exemple

Démonstration

Pour améliorer la visibilité des déponstration, lancer la commande suivante dans un Windows Powershell ISE : Invoke-Command -ScriptBlock ([Scriptblock]::Create((Invoke-WebRequest 'https://raw.githubusercontent.com/renaudwangler/ib-apts/master/stages/msaz040.ps1' -useBasicParsing).Content))

Exemple (a fin de démonstration, sans intérêt terrain) de renommage d’une propriété en sortie :
Get-ComputerInfo | select @{l='ComputerName';e={$_.CSName}}|Get-Process

Tous les labs

Pour nettoyer le démarrage des ateliers, utiliser la commande suivante : Invoke-Command -ScriptBlock ([Scriptblock]::Create((Invoke-WebRequest 'https://raw.githubusercontent.com/renaudwangler/ib-labs/master/dcNetStart/doItAll.ps1' -useBasicParsing).Content))
(Dans ce stage, lon-svr1 ne redémarre pas correctement : le redémarrer à la main)

Les ateliers sur goDeploy sont nécessaires pour ce stage. Cependant, le dépot gitHub contient des ateliers (LAB_XX) et les corrigés d’atelier (LAB_AK_XX).
Le contenu proposé par goDeploy correspond bien plus aux corrigés. Certains stagiaires préfèreront donc probablement une démarche de recherche personnelle avec les ateliers avant de regarder les corrigés, s’ils ont déjà des connaissances et le temps d’assumer cette démarche.

Module 6

A date, la version de l’ISE Windows Powershell dans les machines virtuelles goDeploy semble avoir un problème avec le type ArrayList (pas de problème dans l’invite PowerShell)

EX 1 - Task 2 . Exemples alternatifs de concaténation:

$logFile = "" + $today.Year + "-" + $today.Month + "-" + $today.Day + "-" + $today.Hour + "-" + $today.Minute + ".txt"
$logFile = "$($today.Year)-$($today.Month)-$($today.Day)-$($today.Hour)-$($today.Minute).txt"
$logFile = "{0:yyyy-MM-dd-hh-mm}.txt" -f $today

Module 7

Process items by using If statements :
get-content services.txt|get-service|Where status -ne 'Running'|start-service
Create user acounts based on a CSV File :

import-csv E:\MOD08\labfiles\users.csv |select @{n="GivenName" ; e={$_.First} }, 
@{n="Surname" ; e={$_.Last} }, 
@{n="Name" ; e={$_.First + " " + $_.Last} }, 
@{n="DisplayName" ; e={$_.First + " " + $_.Last} }, 
@{n="SamAccountName" ; e={$_.UserID} }, 
@{n="UserPrincipalName" ; e={$_.UserID + "@adatum.com"} }, 
@{n="Path" ; e={"OU=" + $_.Department + ",DC=Adatum,DC=com"} }, 
Department | New-ADUser -whatif 
$users = Import-CSV E:\mod08\Labfiles\users.csv 
ForEach ($u in $users) { 
   $param= @{ 
      "GivenName" = $u.First 
      "Surname" = $u.Last 
      "Name" = $u.First + " " + $u.Last 
      "DisplayName" = $u.First + " " + $u.Last 
      "SamAccountName" = $u.UserID 
      "UserPrincipalName" = $u.UserID + "@adatum.com" 
      "Path" = "OU=" + $u.Department + ",DC=Adatum,DC=com" 
      "Department" = $u.Department 
   } 
   Write-Host "Creating $($u.UserId) in $($user.Department)" 
   New-ADUser @param -WhatIf 
}

Atelier 7

Il pourra être utile de redémarrer le service de ceritificats sur lon-dc1 en cas de soucis pour obtenir le certificat de signature de code :

Astuces et rappels

Formattage :

Quel nom lui donner: 

Comparaison de tableaux

Get-Process | Export-CliXML data_t1.xml

… Puis, plus tard

ompare-Object (Import-CliXML data_t1.xml) (Get-Process) -Property Name

Retour de Fonctions

function Get-Retour{ 
   "chaîne"  
   write-host "host" # écrit directement sur l'hôte 
   write "write" # alias de write-output 
   write-Output "output" 
   return "return" # impose de sortir 
   "fin" # non atteignable 
}

Multi-Hop Remoting

Autre alternative (Forcer une connexion via un login de l’ordinateur intermédiaire.)
Set-ADComputer -Identity LON-SVR2 -PrincipalsAllowedToDelegateToAccount LON-SVR3 : C’est l’inverse, à savoir on donne à la destination le nom du serveur qui aura le droit de lui déléguer un compte (donc identity doit être le 3ème serveur, et le PrincipalsAllowed… le serveur intermédiaire).
Test effectué avec l’environnement de formation, en exécutant Set-ADComputer LON-DC1 -PrincipalsAllowedToDelegateToAccount LON-SVR1 puis klist purge depuis LON-SVR1: le rebond fonctionne (invoke-command et Get-ADUser) seulement en ajoutant un credential…

Divers

Conseils génériques concernant Azure

Conseils d'animation avec la plateforme goDeploy

Compteur de Démarrage/Reprise de stage