Import-module 'ActiveDirectory' $getadusers = @() $filter = @() $samaccountnamelijst = @() $Header = 'Samaccountname' $CSV = '.\Gemeentenet.csv' $Extension = $null $import = @() Add-Content -Value $Header -Path $CSV $getadusers = Get-aduser -filter * foreach ($entry in $getadusers){if ($entry -ne $null){$samaccountnamelijst += $entry.samaccountname}} foreach ($sam in $samaccountnamelijst){Add-Content -Value $sam -Path $CSV} $Deelnemerlijst = @() $allusers = import-csv $csv foreach ($Deelnemeruser in $allusers){if ($Deelnemeruser -match $deelnemer){$Deelnemerlijst += $Deelnemeruser}} $Deelnemerlijst | export-csv .\$Deelnemer.csv $entry = $null $username = 'othext' $CSV = '.\Gemeentenet.csv' $import = @() $filter = @() $import = import-csv $csv foreach ($entry in $import){if ($entry -match $username){$filter += $entry.samaccountname}} $filter = $filter -split "@{samaccountname=" |sort $filter = $filter -split "$username" | sort $filter = $filter -split "}" | Sort -Descending $nummer = [int]$filter[0] $nummer++ Add-content -Value $volledigesamaccountname -path $csv
Category Archives: Microsoft
Artikels die een relatie hebben met Microsoft producten
XLSX aanmaken in Powershell
$csvs = Get-ChildItem .* -Include *.csv $y=$csvs.Count Write-Host “Detected the following CSV files: ($y)” foreach ($csv in $csvs) { Write-Host ” “$csv.Name } $outputfilename = read-host “Please enter the output file name: “ Write-Host Creating: $outputfilename $excelapp = new-object -comobject Excel.Application $excelapp.sheetsInNewWorkbook = $csvs.Count $xlsx = $excelapp.Workbooks.Add() $sheet=1 foreach ($csv in $csvs) { $row=1 $column=1 $worksheet = $xlsx.Worksheets.Item($sheet) $worksheet.Name = $csv.Name $file = (Get-Content $csv) foreach($line in $file) { $linecontents=$line -split ‘,(?!s*w+”)’ foreach($cell in $linecontents) { $worksheet.Cells.Item($row,$column) = $cell $column++ } $column=1 $row++ } $sheet++ } $xlsx.SaveAs($outputfilename) $excelapp.quit()
Custom query voor users met
Het is mogelijk om Active Directory Users and Computers (dsa.msc) een custom query te doen. In de situatie dat je een groep gebruikers hebt aangemaakt en deze weer moet verwijderen of moet toevoegen aan een groep. Voor de situatie dat je wil weten welke users zijn aangemaakt na 27 oktober 2013 voer je volgend commando in:
(objectCategory=user)(whenCreated>=20131027000000.0Z)
autodiscover DNS zones aanmaken
Om een autodiscover record aan te maken middels een command kunnen de volgende commando’s uitgevoerd worden. recordnaam moet vervangen wordt voor het subdomein en domein voor het domeinnaam in kwestie. Daarnaast moet er eerst een primary zone aangemaakt worden of een record in een publieke DNS server.
dnscmd . /zoneadd _recordnaam._tcp.domein.nl. /dsprimary
dnscmd . /recordadd _recordnaam._tcp.domein.nl. @ SRV 10 1 443 recordnaam.domein.nl.
Outlook 2010 kan dan een foutmelding geven zoals is beschreven in Microsoft KB2480582
. Maak hiervoor een REG_SZ sleutel aan binnen het gebruikersregister met bijvoorbeeld RES Workspace Manager met in de KB beschreven waardes.
Recipients of senders filteren op basis van wildcards
Soms moet je weten hoeveel er wordt gestuurd naar *@hotmail.com of *@outlook.com. Dit kan op de volgende manier
Get-MessageTrackingLog -ResultSize Unlimited -Start "9/1/2013" -End "9/12/2013" | where{$_.recipients -like "*@live.nl"} | select-object Timestamp,SourceContext,Source,EventId,MessageSubject,Sender,{$_.Recipients} >
Of voor ontvangen e-mail:
Get-MessageTrackingLog -ResultSize Unlimited -Start "5/1/2011" -End "5/12/2011" | where{$_.sender -like "*@example.com"} | select-object Timestamp,SourceContext,Source,EventId,MessageSubject,Sender,{$_.Recipients} | export-csv C:ExchangeLogResults.txt
Office 2010 KMS Host licenties weergeven
slmgr.vbs /dli all /b
Exchange SAN Certificaat aanvragen
Een Exchange certificaat aanvragen op basis van SAN (Subject Alternative Name) is een vrij eenvoudig. Hieronder een voorbeeld:
New-ExchangeCertificate -FriendlyName 'webmail.test.nl' -GenerateRequest -PrivateKeyExportable $true -KeySize '2048' -SubjectName 'C=NL,S="Zuid-Holland",L="Rotterdam",O="Bedrijfsnaam uit de KvK",OU="IT",CN=webmail.test.nl' -DomainName 'webmail.test.nl','autodiscover.test.nl','smtp.test.nl','autodiscover.test2.nl','webmail.test2.nl','outlookanywhere.test.nl','clusternaam.test.nl' -Server 'server waarop de aanvraag gedaan wordt'
Exchange HUB servers
Wanneer er een e-mail wordt verzonden in een Microsoft Exchange 2010 organisatie gaat het transport proces als volgt:
Exchange kijkt binnen de Active Directory Site waar het mailtje wordt gesubmit naar een beschikbare HUB Transport server om de e-mail te versturen. De HUB Transport servers accepteren de e-mail als de services draaien. Er wordt niet gekeken naar de mogelijkheid om het mailtje daadwerkelijk te versturen. Als de HUB Transport server een Send connector heeft is dat voldoende. Stel er is geen Send connector toegewezen met als address space * dan kan de HUB server het mailtje niet kwijt. Er is makkelijk in de Exchange console te kijken naar de wachtrij binnen Exchange.
Get-TransportServer | Get-Queue
Er wordt dan een lijst uitgedraaid met de queue’s van alle server binnen de Exchange organisatie. Er is dus ook makkelijk te zien welke server mogelijk een probleem heeft de mail te versturen.
Andere nuttige commando’s zijn:
Overzicht uitdraaien van users op een mailbox server
Get-MailboxDatabase "Mailbox Database Naam" | Get-Mailbox
Updates bijwerken via batch
Bij gebrek aan een WSUS server kunnen updates worden uitgerold via een batch script. De .Net Frameworks updates en updates als Malicious Software Removal Tools of andere Windows installer packages kunnen middels onderstaand script uitgevoerd worden:
@ECHO OFF
Set DataDir=E:InstallHotfixes
:: Put Terminal server in install mode
CHANGE USER /INSTALL
ECHO.
CD /d %DataDir%
FOR /f %%i in ('dir *.exe /b') DO %%i /quiet /norestart
:: Put Terminal server back in execute mode
ECHO.
CHANGE USER /EXECUTE
:: Just wait a few secs before exiting this script, or Altiris will report error 1 after exiting this script.
:: May be caused by previous statement and directly exiting the script, therefore this delay.
:: Use the ping command for a delay.
PING localhost >nul
Voor updates die geen echte installer hebben kan het volgende script worden uitgevoerd:
@ECHO OFF
Set DataDir=E:InstallHotfixes08
:: Put Terminal server in install mode
CHANGE USER /INSTALL
ECHO.
CD /d %DataDir%
FOR /f %%i in ('dir *.exe /b') DO %%i /z /u
:: Put Terminal server back in execute mode
ECHO.
CHANGE USER /EXECUTE
:: Just wait a few secs before exiting this script, or Altiris will report error 1 after exiting this script.
:: May be caused by previous statement and directly exiting the script, therefore this delay.
:: Use the ping command for a delay.
PING localhost >nul
Deze scripts zijn handig voor Terminal server. Als je niet ingelogd bent op een Terminal server kan je de install mode achterwegen laten.
Query Inheritance op User Object in AD
De Get-ADuser heeft niet de mogelijkheid om op inheritance een query te doen. Laat staan het vinkje Include inheritable permissions from this object’s parent in het security tabblad.
Quest heeft CMDlet’s gemaakt die gratis zijn en die hier prima gebruikt kunnen worden. Het commando dat uitgevoerd moet worden is het volgende:
Get-QADUser -SizeLimit 0 | Where-Object {$_.DirectoryEntry.psbase.ObjectSecurity.AreAccessRulesProtected }
Om eventueel naar een ander domein te verbinden kan het volgende commando gebruikt worden:
Connect-QADService -service ''
Om de gevonden accounts ook daadwerkelijk aan te passen kan bovenstaande code ook uitgebreid worden:
Get-QADUser -SizeLimit 0 | Where-Object {$_.DirectoryEntry.psbase.ObjectSecurity.AreAccessRulesProtected } | Set-QADObjectSecurity -UnlockInheritance