In onderstaand voorbeeld maken we een script waarbij een aantal gegevens in een tekstbestand wordt geschreven. Een dergelijk script zou je als logfile kunnen gebruiken.
Allereerst moeten we bepalen welke gegevens van belang zijn om te worden opgenomen in de logfile:
Daarnaast moeten de gegevens aan een tekstbestand worden toe gevoegd zodat de vorige gegevens ook bewaard blijven. Het laatste doel is om die gegevens per maand in een tekstbestand te hebben zodat het makkelijker kan worden gearchiveerd.
De gebruikersnaam en de computernaam zijn vrij eenvoudig. Beide zijn bekend in de omgevingsvariabelen. Die omgevingsvariabelen zijn als provider in PowerShell benaderbaar. Net zoals je het bestandssysteem kunt benaderen door de schijfletter te gebruiken (bij voorbeeld C:), kun je de omgevingsvariabelen bereiken via ENV:
Dus met het commando:
Get-Content Env: USERNAME
en Computername
krijg je de juiste gegevens retour. Deze leg je vast in een variabele.
De datum en de tijd zijn ook vrij eenvoudig met het commando Get-Date
te verkrijgen. Met de parameter -format
kun je verder bepalen hoe je wilt dat de datum of tijd wordt vastgelegd. Daarbij zijn:
dd
- de dagMM
- de maandyyyy
- het jaarhh
- de uren in 12-uursnotatie of HH in 24-uursnotatiemm
- de minutenOp die manier wordt de variabele date
gevuld. Maar je kunt de datum uiteraard ook gebruiken in een bestandsnaam ($filename
).
Het lastigste is eigenlijk het IP-adres. Met het commando Get-NetIPAddress
krijg je meer informatie dan alleen het IP-adres terug. Daarnaast kunnen er in een computer meerdere netwerk kaarten aanwezig zijn, naast wellicht een aantal virtuele kaarten. Het vastleggen van bijvoorbeeld het APIPA-adres (169.254.x.x) heeft geen zin. Door de parameter -IPAddress
met het begin van een IP-adres op te geven worden alleen de gegevens van de netwerkkaart gekozen die beginnen met het IP-adres, bijvoorbeeld:
Get-NetIPAddress -IPAddress 172.16.*.*
Op de plaats van de * (wildcard!) mag dus elke waarde staan.
Nog steeds worden er te veel gegevens retour gegeven.
Select-Object
kun je de gegevens selecteren.-ExpandProperty
en de waarde IPAddress
worden alle gegevens van de netwerkkaart in kleine brokjes verdeeld en daarvan alleen het IP-adres geselecteerd. Hierdoor blijft uiteindelijk alleen de waarde van het IP-adres over. Deze kun je vervolgens vastleggen in de variabele $IPAddress
.-Append
worden de gegevens toegevoegd aan het bestand in plaats van het te overschrijven.$filename
) wijzigt de naam per maand. Uiteraard kun je dit bestand opslaan in welke folder dan ook.Maak met behulp van PowerShell een Login script. Sla de scripts op en kopieer de tekst van de scripts in je documentatie.
In Windows Server 2019 kun je via Group Policy een PowerShell-script als login script gebruiken.