Hey, kann mir jemand sagen, wiso bei diesem Pester-Script Fehlermeldungen kommen?
Pester-Script:
Import-Module Pester
BeforeAll {
. $PSCommandPath.Replace('.Tests.ps1','.ps1')
}
$CsvContent = @"
FirstName,LastName,Username
John,Doe,jdoe
Jane,Smith,jsmith
Alex,Johnson,ajohnson
"@
$Csvfile = ".\UserList.csv"
$CsvContent | Out-File -FilePath $Csvfile
Describe "AD User Import Script" {
BeforeAll {
Mock -CommandName Get-ADUser -MockWith {
param ($Filter)
if ($Filter -like "*jdoe*") {
return [PSCustomObject]@{ SamAccountName = "jdoe" }
}
return $null
}
Mock -CommandName New-ADUser -MockWith {
param ($Params)
Write-Host "Mock: New-ADUser with params: $Params"
}
$Users = Import-Csv $Csvfile
}
It "sollte Benutzer aus der CSV-Datei importieren" {
$Users.Count | Should -Be 3
}
It "sollte einen neuen Benutzer im AD erstellen, wenn der Benutzer nicht existiert" {
$User = $Users | Where-Object { $_.Username -eq "jsmith" }
. $PSCommandPath -Csvfile $Csvfile
Assert-MockCalled -CommandName New-ADUser -Times 1 -Exactly -Scope It
}
It "sollte keinen neuen Benutzer erstellen, wenn der Benutzer bereits existiert" {
$User = $Users | Where-Object { $_.Username -eq "jdoe" }
. $PSCommandPath -Csvfile $Csvfile
Assert-MockCalled -CommandName New-ADUser -Times 0 -Scope It
}
It "sollte die richtigen Parameter für New-ADUser verwenden" {
$User = $Users | Where-Object { $_.Username -eq "ajohnson" }
. $PSCommandPath -Csvfile $Csvfile
Assert-MockCalled -CommandName New-ADUser -ParameterFilter {
$Params.SamAccountName -eq "ajohnson" -and
$Params.UserPrincipalName -eq "ajohnson@PowerShell.local" -and
$Params.Path -eq "OU=Benutzer,DC=PowerShell,DC=local"
} -Times 1 -Exactly -Scope It
}
}
afterall {
Remove-Item -Path $Csvfile
}
Script:
$Csvfile = ".\UserList.csv"
$Users = Import-Csv $Csvfile
$Password = "TFBern_3013"
Import-Module ActiveDirectory
foreach ($User in $Users) {
try {
if (Get-ADUser -Filter "SamAccountName -eq '$($User.Username)'" -ErrorAction SilentlyContinue) {
Write-Host "Ein Benutzer mit dem Benutzernamen $($User.Username) existiert bereits im Active Directory." -ForegroundColor Yellow
} else {
$NewUserParams = @{
Name = "$($User.FirstName) $($User.LastName)"
GivenName = $User.FirstName
Surname = $User.LastName
DisplayName = $User.Username
SamAccountName = $User.Username
UserPrincipalName = "$($User.Username)@PowerShell.local"
Path = "OU=Benutzer,DC=PowerShell,DC=local"
AccountPassword = (ConvertTo-SecureString $Password -AsPlainText -Force)
Enabled = $true
ChangePasswordAtLogon = $true
}
New-ADUser @NewUserParams
Write-Host "Der Benutzer $($User.Username) wurde erfolgreich erstellt." -ForegroundColor Green
}
} catch {
Write-Host "Fehler beim Erstellen des Benutzers $($User.Username) - $($_.Exception.Message)" -ForegroundColor Red
}
}