Variablen sind leer in Powershell FORM
Moinsen,
ich habe ein kleines Powershell das als FORMS ausgegeben wird indem ein User via Buttonklick eine Datei auswählt, mit einem anderen Buttonklick ein Verzeicnis auswählt, wohin die ausgewählte Datei mit einem Klick auf einen 3. Button diese Datei verschieben soll.
Dateiauswahl :
Soll ein bestimmtes Quellverzeichnis standartmäßig aufrufen/anzeigen und NUR PDF-Dateien anzeigen (Klappt soweit)
Zielverzeichnisauswahl :
Soll ein bestimmtes Root-Verzeichnis anzeigen in welchem nur das Hauptverzeichnis angewählt wird (Dem Zielverzeichnisparameter wird dann ein Unterverzeichnis angehängt) (Klappt soweit)
3.Button (Verschieben) :
Soll die ausgewählte Datei in das ausgewählte Zielverzeichnis (+angehängtem Unterverzeichnis (Ist immer gleich)) verschieben
Da habe ich das Problem wenn ich in Button 3 (Verschieben) das Move-Item aufbaue da zu dem Zeitpunkt die Variable (Ausgewählte Datei) sowie die Variable (Ausgewähltes Verzeichnis) leer sind, somit greift das Move-Item nicht.
Fehlermeldung :
Move-Item : Das Argument kann nicht an den Parameter "Path" gebunden werden, da es NULL ist.
In I:\xx\xxx\xxxx\FileDialog.ps1:77 Zeichen:17
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.MoveItemCommand
Code :
ich habe ein kleines Powershell das als FORMS ausgegeben wird indem ein User via Buttonklick eine Datei auswählt, mit einem anderen Buttonklick ein Verzeicnis auswählt, wohin die ausgewählte Datei mit einem Klick auf einen 3. Button diese Datei verschieben soll.
Dateiauswahl :
Soll ein bestimmtes Quellverzeichnis standartmäßig aufrufen/anzeigen und NUR PDF-Dateien anzeigen (Klappt soweit)
Zielverzeichnisauswahl :
Soll ein bestimmtes Root-Verzeichnis anzeigen in welchem nur das Hauptverzeichnis angewählt wird (Dem Zielverzeichnisparameter wird dann ein Unterverzeichnis angehängt) (Klappt soweit)
3.Button (Verschieben) :
Soll die ausgewählte Datei in das ausgewählte Zielverzeichnis (+angehängtem Unterverzeichnis (Ist immer gleich)) verschieben
Da habe ich das Problem wenn ich in Button 3 (Verschieben) das Move-Item aufbaue da zu dem Zeitpunkt die Variable (Ausgewählte Datei) sowie die Variable (Ausgewähltes Verzeichnis) leer sind, somit greift das Move-Item nicht.
Fehlermeldung :
Move-Item : Das Argument kann nicht an den Parameter "Path" gebunden werden, da es NULL ist.
In I:\xx\xxx\xxxx\FileDialog.ps1:77 Zeichen:17
move-item -Path $file -Destination $verzeichnis
~~~~~
+ CategoryInfo : InvalidData: ( [Move-Item], ParameterBindingValidationException+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.MoveItemCommand
Code :
$PSDefaultParameterValues['*:Encoding'] = 'ascii'
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
#create form
$form = New-Object System.Windows.Forms.Form
$form.Width = 500
$form.Height = 300
$form.MaximizeBox = $false
# QuellButton
$Button = New-Object System.Windows.Forms.Button
$Button.Location = New-Object System.Drawing.Size(10,10)
$Button.Size = New-Object System.Drawing.Size(150,50)
$Button.Text = "PDF-Datei auswählen : "
$Button.Add_Click({
Function Get-FileName($initialDirectory) {
[System.Reflection.Assembly]::LoadWithPartialName(“System.windows.forms”) | Out-Null
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.initialDirectory = $initialDirectory
$OpenFileDialog.filter = “PDF (*.pdf)| *.pdf”
$OpenFileDialog.ShowDialog() | Out-Null
$OpenFileDialog.filename
}
########### $file = Quelldateiname #####################
$file = Get-FileName -initialDirectory “c:\pdfordner”
})
$form.Controls.Add($Button)
# ZielButton Zielordnerauswahl
$Button2 = New-Object System.Windows.Forms.Button
$Button2.Location = New-Object System.Drawing.Size(200,10)
$Button2.Size = New-Object System.Drawing.Size(150,50)
$Button2.Text = "Zielverzeichnis auswählen : "
$Button2.Add_Click({
Function Get-Folder($initialDirectory="I:\Zielverzeichnis")
{
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")|Out-Null
$foldername = New-Object System.Windows.Forms.FolderBrowserDialog
$foldername.Description = "Verzeichnis auswählen"
$foldername.rootfolder = "MyComputer"
$foldername.SelectedPath = $initialDirectory
if($foldername.ShowDialog() -eq "OK")
{
$folder += $foldername.SelectedPath
}
return $folder
}
########## $a = Zielverzeichnis / $verzeichnis = Zielverzeichnis + Unterordner UNTERORDNER ##################
$a = Get-Folder
$verzeichnis=$a+"\UNTERORDNER"
})
$form.Controls.Add($Button2)
# Start
$Button3 = New-Object System.Windows.Forms.Button
$Button3.Location = New-Object System.Drawing.Size(10,150)
$Button3.Size = New-Object System.Drawing.Size(150,50)
$Button3.Text = "<< PDF verschieben >>"
$Button3.Add_Click({
write-host $file
write-host $verzeichnis
move-item -Path $file -Destination $verzeichnis
})
$form.Controls.Add($Button3)
[void]$form.ShowDialog()
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 3686500886
Url: https://administrator.de/contentid/3686500886
Ausgedruckt am: 17.11.2024 um 03:11 Uhr
5 Kommentare
Neuester Kommentar
Zitat von @Crashzero:
Da bekomme ich folgende Fehlermeldung :
Da bekomme ich folgende Fehlermeldung :
& : Die Benennung "Global:file" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie
den Vorgang.
In I:\xx\xxx\xxxx\FileDialog.ps1:28 Zeichen:2
+ &Global:file = Get-FileName -initialDirectory “c:\pdfordner”
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Global:file:String) , CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
habe mich verschrieben. hab's aktualisiert
Und hier auch noch was zum Lernen warum das so ist
https://docs.microsoft.com/de-de/powershell/module/microsoft.powershell. ...
https://docs.microsoft.com/de-de/powershell/module/microsoft.powershell. ...