5 Powershell trucjes die je als ICT’er moet weten
Waar voorheen beheerders urenlang bezig waren met het scripten van ouderwetse commando’s, bestaat er sinds 2006 Powershell, een scripttaal die op objectgeoriënteerde wijze werkt. Met Powershell als scripttaal kunnen veel (standaard) processen binnen de ICT geautomatiseerd worden.
Powershell maakt het automatiseren van beheertaken makkelijk en wordt veelal door IT-professionals gebruikt om efficiënt en effectief te werken. Zo kan bijvoorbeeld Active directory worden aangesproken, Virtuele Machines worden gecreëerd en kun je communiceren met cloudoplossingen. In deze blog vind je 5 Powershell trucjes die als ICT’er moet weten!
1. Get-Help
De eerste PowerShell-cmdlet die elke beheerder moet leren, is Get-Help.
Deze opdracht kan gebruikt worden om hulp te krijgen bij andere opdrachten. Als je bijvoorbeeld wilt weten hoe de opdracht Get-Process werkt, kunt je het volgende typen:
Get-Help -Name Get-Process
Je kunt Get-Help ook gebruiken voor individuele zelfstandige naamwoorden en werkwoorden. Als je bijvoorbeeld alle opdrachten wilt vinden die je kunt gebruiken met het werkwoord Get, typ je:
Get-Help -Name Get- *
2. Invoke-command
Wanneer je een opdracht of script of PowerShell – lokaal of op afstand op één of meerdere computers – wilt uitvoeren, is “Invoke-Command” de beste oplossing. Het is eenvoudig te gebruiken en het helpt je in een batch computers te bedienen.
Je moet het Invoke-Command typen gevolgd door de opdracht of het script met het volledige pad. Je kunt bijvoorbeeld een opdracht “Get-EventLog” uitvoeren met Invoke-Command-ScriptBlock {Get-EventLog system -Newest 50} of op een externe computer “Server01” met:
Invoke-Command -ScriptBlock {Get-EventLog system -Newest 50 } – Computername Server01
3. ConvertTo-HTML
PowerShell kan een schat aan informatie over het systeem bieden, maar soms moet je meer doen dan alleen de informatie op het scherm bekijken. Soms is het handig om een rapport te maken om naar iemand te verzenden. Een manier om dit te bereiken is door de opdracht ConvertTo-HTML te gebruiken.
Om deze opdracht te gebruiken, stuur je gewoon de uitvoer van een andere opdracht naar de opdracht ConvertTo-HTML. Je moet de schakelaar-Property gebruiken om te bepalen welke uitvoereigenschappen zijn opgenomen in het HTML-bestand en je moet een bestandsnaam opgeven. Om dit te doen, kun je de volgende opdracht gebruiken:
Get-Service | ConvertTo-HTML -Property Name, Status> C: \ services.htm
4. Copy-Item [copy]
Als je bestanden en mappen op je opslagschijf of registervermeldingen en sleutels in het register wilt kopiëren, kun je Copy-Item gebruiken. Het werkt vergelijkbaar met het “cp” -commando dat we in de opdrachtprompt hebben, maar het is veel beter.
Je kunt de opdracht Copy-Item gebruiken om items in dezelfde opdracht ook te kopiëren en te hernoemen – geef een nieuwe naam op als de bestemming. Je kunt bijvoorbeeld “Services.htm” kopiëren en hernoemen naar “MyServices.txt” met behulp van;
Copy-Item “C:\Services.htm” -Destination “C:\MyData\MyServices.txt”
5. AD-gebruikers exporteren naar een CSV-bestand
Bij een migratie naar de cloud of vernieuwen van servers dienen gebruikers volledig verplaatst te worden. Door de nieuwe ACDC-server in hetzelfde domein en forest te plaatsen, vindt er een deling in de gegevens plaats. Als dit echter niet mogelijk is, kunnen ook alle gebruikers geëxporteerd worden naar een CSV-bestand, waarna deze geïmporteerd kan worden in de nieuwe omgeving. In het onderstaande script worden alle gebruikersdetails in losse kolommen opgeslagen zodat het importeren makkelijker is.
{
$path = Split-Path -parent “$CSVReportPath\*.*”
$pathexist = Test-Path -Path $path
If ($pathexist -eq $false)
{New-Item -type directory -Path $path}
$reportdate = Get-Date -Format ssddmmyyyy
$csvreportfile = $path + “\ALLADUsers_$reportdate.csv”
#import the ActiveDirectory Module
Import-Module ActiveDirectory
#Perform AD search. The quotes “” used in $SearchLoc is essential
#Without it, Export-ADUsers returuned error
Get-ADUser -server $ADServer -searchbase “$SearchLoc” -Properties * -Filter * |
Select-Object @{Label = “First Name”;Expression = {$_.GivenName}},
@{Label = “Last Name”;Expression = {$_.Surname}},
@{Label = “Display Name”;Expression = {$_.DisplayName}},
@{Label = “Logon Name”;Expression = {$_.sAMAccountName}},
@{Label = “Full address”;Expression = {$_.StreetAddress}},
@{Label = “City”;Expression = {$_.City}},
@{Label = “State”;Expression = {$_.st}},
@{Label = “Post Code”;Expression = {$_.PostalCode}},
@{Label = “Country/Region”;Expression = {if (($_.Country -eq ‘GB’) ) {‘United Kingdom’} Else {”}}},
@{Label = “Job Title”;Expression = {$_.Title}},
@{Label = “Company”;Expression = {$_.Company}},
@{Label = “Description”;Expression = {$_.Description}},
@{Label = “Department”;Expression = {$_.Department}},
@{Label = “Office”;Expression = {$_.OfficeName}},
@{Label = “Phone”;Expression = {$_.telephoneNumber}},
@{Label = “Email”;Expression = {$_.Mail}},
@{Label = “Manager”;Expression = {%{(Get-AdUser $_.Manager -server $ADServer -Properties DisplayName).DisplayName}}},
@{Label = “Account Status”;Expression = {if (($_.Enabled -eq ‘TRUE’) ) {‘Enabled’} Else {‘Disabled’}}}, # the ‘if statement# replaces $_.Enabled
@{Label = “Last LogOn Date”;Expression = {$_.lastlogondate}} |
#Export CSV report
Export-Csv -Path $csvreportfile -NoTypeInformation
}
Kan uw IT-afdeling wel wat hulp gebruiken?
Maak een afspraak met een accountmanager!
Wij gaan graag met u in gesprek over de mogelijkheden.
Meld uw vacature aan!