Pester Script hilfe?

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
    }
}


Programmiersprache, Script, PowerShell

Meistgelesene Fragen zum Thema Script