Remove-Item: Não é possível ligar argumento ao parâmetro 'Path' porque é nulo

1

Boa Tarde

Eu criei o seguinte powershell

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

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

Remove-Item -Recurse -Path $path 

quando eu executo recebo o seguinte erro

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

Não consigo descobrir por que não está funcionando.

    
por Bernard Goldberger 14.12.2015 / 21:53

2 respostas

1

Sua variável $path está fora do escopo de onde Remove-Item é chamado.

Veja este exemplo:

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

Quando echo $path é chamado na última linha, nada é gerado porque não foi colocado nenhum valor em $path . No entanto, se eu chamar script , então hello será enviado, mas assim que a função script for executada, a variável $path dentro da função não estará mais acessível.

Para corrigir, defina sua variável $path , em que Remove-Item tem acesso a ela, por exemplo, antes da função de script.

Para ver mais sobre o escopo no PowerShell, aqui está a documentação completa da Microsoft.

link

    
por 14.12.2015 / 23:13
0

Eu consertei apenas criando um alias (espero que seja o termo correto).

$path = "C:\PowerShellTest\MedRec\", "C:\PowerShellTest\MedRec\", "C:\PowerShellTest\MedRec\"

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

    
por 15.12.2015 / 18:35