Remove-Item: Das Argument kann nicht an den Parameter 'Path' gebunden werden, da es null ist

1

Guten Tag

Ich habe die folgende Powershell erstellt

function script{
    param (
        [string]$path = {"C:\PowerShellTest\Med Rec\1\", "C:\PowerShellTest\Med Rec\2\", "C:\PowerShellTest\Med Rec\3\"}
        )
    }

Get-ChildItem $path -Recurse | Select-Object Directory,Name,CreationTime | Export-Csv "C:\PowerShellTest\Med Rec\text.csv" -Force -NoTypeInformation

Remove-Item -Recurse -Path $path 

wenn ich es laufen lasse, erhalte ich die folgende Störung

Remove-Item : Cannot bind argument to parameter 'Path' because it is null.
At C:\PowerShellTest\New folder\Content Deleted Daily at 1AM.ps1:9 char:28
+ Remove-Item -Recurse -Path $path
+                            ~~~~~
    + CategoryInfo          : InvalidData: (:) [Remove-Item], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.RemoveItemCommand

Ich kann nicht herausfinden, warum es nicht funktioniert.

Bernard Goldberger
quelle

Antworten:

1

Ihre $pathVariable liegt außerhalb des Bereichs, in dem der Remove-ItemAufruf erfolgt.

Schauen Sie sich dieses Beispiel an:

function script{
    $path = "hello";
    echo $path;
}
echo $path;

Wenn echo $pathin der letzten Zeile aufgerufen wird, wird nichts ausgegeben, da kein Wert eingegeben wurde $path. Wenn ich aber scriptdann helloaufrufe, wird ausgegeben, aber sobald diese scriptFunktion ausgeführt ist, ist die $pathVariable innerhalb der Funktion nicht mehr zugänglich.

Um dies zu beheben, definieren Sie Ihre $pathVariable dort, wo Remove-Itemsie Zugriff hat, z. B. vor der Skriptfunktion.

Weitere Informationen zum Leistungsumfang von Powershell finden Sie in der vollständigen Dokumentation von Microsoft.

https://technet.microsoft.com/en-us/library/hh847849.aspx

Tyelford
quelle
0

Ich habe es behoben, indem ich nur einen Alias ​​erstellt habe (ich hoffe, es ist der richtige Begriff).

$ path = "C: \ PowerShellTest \ MedRec \ 1 \", "C: \ PowerShellTest \ MedRec \ 2 \", "C: \ PowerShellTest \ MedRec \ 3 \"

Get-ChildItem $ path -Recurse | Select-Object Name, CreationTime | Export-Csv "C: \ PowerShellTest \ MedRec \ text.csv" -Force -NoTypeInformation

Get-ChildItem $ path -Recurse | Remove-Item -Recurse-Force

Bernard Goldberger
quelle