Powershell Script, dass Zeilenelemente einer Textdatei vertauscht. Ausgabe wird nicht korrekt formatiert?

Folgendes Problem: Ich habe diesen Quelltext hier: $lines = 0

$output = @()

(Get-Content -Path "D:\Data_24.txt" | foreach {

$elements = $_.Trim().Split(',')

if ($elements.Count -ge 6) {

$newElements = $elements[2], $elements[1], $elements[0], $elements[3], $elements[4], $elements[5]

$output += [PSCustomObject]@{ Elements = $newElements -join ',' }

}

$lines++

# Schreibe das Array in die CSV-Datei alle 700 Zeilen

if ($lines % 700 -eq 0) {

$output | Export-Csv -Path "output.csv" -NoTypeInformation -Append -Encoding UTF8

$output = @() # Leere das Array nach dem Schreiben

Write-Host "Schreibe Zeilen: $lines"

}

}) | Out-Null

# Schreibe das restliche Array in die CSV-Datei

$output | Export-Csv -Path "output.csv" -NoTypeInformation -Append -Encoding UTF8

Write-Host "Verarbeitung abgeschlossen. Gesamtanzahl der Zeilen: $lines"

...für eine Powershelldatei, die aus einer vorhandenen Textdatei alle Zeilen auslesen soll bestimmte Zeilenelemente vertauscht und das Ergebnis in einer neuen CSV - Datei abspeichern soll. Dies funktioniert soweit auch, allerdings wird aus irgendeinem Grund die komplette UTF8 Formatierung ignoriert, was bedeutet, dass bei einigen Zeilen, die in der Ausgangsdatei korrekt dargestellt werden in der neuen Datei ausschließlich Zeichensalat entsteht.

Hat einer von euch eine Idee wie man hier das Problem beheben kann? Thx schon im Voraus...

Konsolen, Formatierung, Programmiersprache, Script, Textbearbeitung, PowerShell, Textdatei
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