This repository was archived by the owner on Jan 27, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
SQL
Jacqueline edited this page Oct 17, 2016
·
13 revisions
Voor deze oefeningen zijn nodig: member server plus GUI en RSAT-AD-Tools.
Invoke-Webrequest https://raw.githubusercontent.com/jacqinthebox/powershell-training/master/tools/AdventureWorks.ps1 -UseBasicParsing | Invoke-WebRequestInstalleer eventueel ook SQL Server Managament Studio:
choco install sql-server-management-studio -yImporteer de SQLPS module
$env:PSModulePath = $env:PSModulePath + ";C:\Program Files (x86)\Microsoft SQL Server\130\Tools\PowerShell\Modules"
Import-Module SQLPS $instance = '.\sqlexpress'
$db = 'AdventureWorks2014'
$query = 'Select top 10 * from HumanResources.vEmployee order by LastName'
$mensen = (Invoke-Sqlcmd -Query $query -Database $db -ServerInstance $instance)New-ADOrganizationalUnit AW
$pass = ConvertTo-SecureString -String "Help2016!" -AsPlainText -Force
foreach ($m in $mensen) {
new-aduser -Name $m.LastName -GivenName $m.FirstName -Surname $m.LastName -EmailAddress $m.EmailAddress -StreetAddress $m.AddressLine1 -City $m.City -Path "OU=AW,DC=MDS,DC=local" -AccountPassword $pass -Enabled $true
}Inclusief help en foutenafhandeling
$env:PSModulePath = $env:PSModulePath + ";C:\Program Files (x86)\Microsoft SQL Server\130\Tools\PowerShell\Modules"
Import-Module SQLPS
$instance = '.\sqlexpress'
$db = 'AdventureWorks2014'
$query = 'Select top 10 * from HumanResources.vEmployee order by LastName'
$mensen = (Invoke-Sqlcmd -Query $query -Database $db -ServerInstance $instance)
$pass = ConvertTo-SecureString -String "Help2016!" -AsPlainText -Force
foreach ($m in $mensen) {
new-aduser -Name $m.LastName -GivenName $m.FirstName -Surname $m.LastName -EmailAddress $m.EmailAddress -StreetAddress $m.AddressLine1 -City $m.City -Path "OU=AW,DC=MDS,DC=local" -AccountPassword $pass -Enabled $true
}
Skeleton script:
Function New-Function {
<#
.SYNOPSIS
Creates an AD User from the AdventureWorks Database
.DESCRIPTION
.PARAMETER
.PARAMETER
.EXAMPLE
#>
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true)]
[string]$Instance,
[Parameter(Mandatory=$true)]
[string]$Database
#etcetera
)
BEGIN {
}
PROCESS {
}
}
END {
}
}
Schrijf een nieuwe functie die de medewerkers exporteert naar een csv bestand. Maar voeg toe aan het rapport:
- Datum in dienst = vandaag
- Behandelaar = "Piet van Personeelszaken"
- BSN = de bsn staat vermeld in onderstaande csv:
"BusinessEntityID","LastName","BSN"
"285","Abbas","746458872"
"38","Abercrombie","646458472"
"211","Abolrous","546458472"
"121","Ackerman","446458472"
"67","Adams","437893364"
"270","Ajenstat","937893364"
"287","Alberts","633797014"
"207","Alderson","258256162"
"216","Alexander","626115243"
"227","Altman","626004443"
Spoiler alert!
Hieronder een deel van een mogelijke oplossing:
$bsn = Import-Csv .\bsn.csv
foreach ($m in $mensen) {
foreach ($b in $bsn) {
if ($b.BusinessEntityID -eq $m.BusinessEntityID) {
$bsnnr = $b.bsn
}
}
$object = [pscustomobject]@{
LastName = $m.LastName;
GivenName = $m.FirstName;
InDienst = Get-Date;
Behandelaar = "Piet van Personeelszaken"
BSN = $bsnnr;
}
Write-Output $object
}
}