Powershell Problem mit System.Collections.ArraylList?

Hallo.

Ich habe ein Problem mit einer ArrayList.

Meine Funktion funtioneirt solange durch die Funktion mehrere Dateien gefunden werden, wenn aber nur eine Datei gefunden wird bekomme ich immer einen Fehler.

Das ist der Bereich in dem die ArrayList gefüllt wird (bzw. ein Auszug):

...
[System.Collections.ArrayList]$TableData = @(Get-ChildItem $FullDateFolders -Filter $filter -File -Recurse) |
                   where-object {($_.LastAccessTime -le (get-date).AddMinutes($DelTime)) -and ($_.Fullname -like $filter1)} |
                       ForEach-Object `
                           -Begin {$i=0} `
                           -Process {
                               $i++
                               $TextBox_Output.AppendText([System.Environment]::NewLine + "# Add: " + $_.FullName)    #TODO Nur für TEST
                               write-host "Datei-Nr.: $i -- " $_.Name                               #TODO Nur für TEST
                               $_CopyFullPath     = (($_.FullName -split '\\') | Select -Last 3) -join '\'
                               $_CopyFolder     = (($_.FullName -split '\\') | Select -Last 3 | Select -SkipLast 1) -join '\'
                               $_DisplayPath  = (($_.FullName -split '\\') | Select -Last 4) -join '\'
                               $_NumberOfParts = (Select-String -path $_ -pattern 'K0007').count
                               $_LastDir      = (Split-Path $_.Directory -Leaf)
$_
...
                           

Wichtiger ist wahrscheinlich die Fehlermeldung:

Der Wert "@{Maschine=50151; Name=schleifen.dfq; Teile=0; LastWriteTime=13.07.2022 18:57:52; DisplayPath=20220713_060501\MFU\50151\schleifen.dfq; 
CopyFullPath=MFU\50151\schleifen.dfq; CopyFolder=MFU\50151; FullName=E:\Powershell_Skripts\99-Ordner_Test\Source\20220713_060501\MFU\50151\schleifen.dfq}" kann nicht 
in den Typ "System.Collections.ArrayList" konvertiert werden. Fehler: "Der Wert "@{Maschine=50151; Name=schleifen.dfq; Teile=0; LastWriteTime=13.07.2022 18:57:52; 
DisplayPath=20220713_060501\MFU\50151\schleifen.dfq; CopyFullPath=MFU\50151\schleifen.dfq; CopyFolder=MFU\50151; 
FullName=E:\Powershell_Skripts\99-Ordner_Test\Source\20220713_060501\MFU\50151\schleifen.dfq}" vom Typ "Selected.System.IO.FileInfo" kann nicht in den Typ 
"System.Collections.ArrayList" konvertiert werden."

Kann mit dieser Fehlermeldung vielleicht jemand was Anfangen und mir einen Tip für die Fehlersuche geben?

Computer, Software, Windows, IT, programmieren, GUI, PowerShell
Powershell Wieso ist meine Variable voller als gedacht?

Hi zusammen.

Ich befülle über Pipeline ein Array.

In dieser Pipeline befülle ich eine WinForms Listbox.

Nur seltsamer weise wenn ich dies tue wird mein Array um das doppelte größer.

Kann mir dies vielleicht jemand erklären?

Zum Code:

$file_list = @( Get-ChildItem -Path $source -Filter $filter -Recurse -File |
    where-object {$_.LastAccessTime -le (get-date).AddMinutes($DelTime)} |
        ForEach-Object -Begin {$i = 0} -process {
            $i++
            $TextBox_Output.AppendText([System.Environment]::NewLine + $_.FullName)     #TODO Nur für TEST
            write-host "Datei-Nr.: $i -- heißt:" $_.Name                                #TODO Nur für TEST
            $ListBox.Items.Add("Maschinen-Nr.:   $(Split-Path $_.Directory -Leaf)  //  Programm-Name:   $($_.Name)")
            write-host "$_.Fullname"
            $_.FullName   
            }
)

Wenn ich so

$file_list.count

ausgebe dann sind da 6 Items drinnen.

Wenn ich aber die die Zeile

$ListBox.Items.Add("Maschinen-Nr.:   $(Split-Path $_.Directory -Leaf)  //  Programm-Name:   $($_.Name)")

auskommentiere, dann sind wie gewünscht nur noch 3 Items im Array.

Kann mir vielleicht jemand erklären wieso mir diese Zeile ins Array schreibt, obwohl sie (meiner Meinung nach) nur in eine Listbox erstellen soll.

Bzw. hat jemand einen Verbesserungsvorschlag?

Wie immer Vielen Dank im Vorraus für die Mithilfe.

Computer, Windows, IT, programmieren, Code, Informatik, PowerShell
Mit der Eingabeaufforderung ein Powershellscript ausführen?

Hallo, ich mochte ein (simples) Powershell-Script mit der Eingabeaufforderung starten.

Das Batch-Script sieht bisher so aus:

@echo off
del %tmp%\drive.ps1
echo Set-ExecutionPolicy RemoteSigned >%tmp%\drive.ps1
echo New-PSDrive -Name S -PSProvider FileSystem -Root \\MYCLOUDEX2ULTRA\Public -Persist >>%tmp%\drive.ps1
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile & "%tmp%\drive.ps1"

Die Datei startet zwar die PowerShell aber nicht die Datei. (Und fragt danach wie ich sie öffnen möchte)

Wenn ich es allerdings do angehe:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile "%tmp%\drive.ps1"

bekomme ich diesen lustigen Fehler:

C:\Users\nikla\AppData\Local\Temp\drive.ps1 : Die Datei "C:\Users\nikla\AppData\Local\Temp\drive.ps1" kann nicht
geladen werden, da die Ausführung von Skripts auf diesem System deaktiviert ist. Weitere Informationen finden Sie
unter "about_Execution_Policies" (https:/go.microsoft.com/fwlink/?LinkID=135170).
In Zeile:1 Zeichen:1
+ C:\Users\nikla\AppData\Local\Temp\drive.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : Sicherheitsfehler: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

Und ohne -NoProfile kommt exakt der gleiche Fehler.

Soah, nun bin ich mit mein Latein am Ende. Könnt ihr mir da weiterhelfen?

Windows, cmd, Eingabeaufforderung, PowerShell

Meistgelesene Beiträge zum Thema PowerShell