Diretório de auto-destruição

1

Eu gostaria de executar um script em um diretório e, em seguida, excluir o diretório, o subdiretório e os arquivos.

If(Test-Path -Path $var_InterventionManuelle) {Remove-Item -Recurse -Force $var_InterventionManuelle}

Quando eu executo a linha de comando, ele está funcionando bem ... mas se alguém estiver, a partir da linha de comandos, dentro desse diretório e executar o script, os diretórios e arquivos não serão excluídos. Acabei de receber um erro quando o diretório está em uso.

Como posso contornar esse problema?

    
por siocnarf 19.12.2014 / 14:43

1 resposta

1

Você pode fazer algo parecido com o abaixo para verificar se o diretório atual em que seu script está sendo executado contém $ var_InterventionManuelle.

If(Test-Path -Path $var_InterventionManuelle)
{
    While((Get-Item -path ".\").FullName.Contains($var_InterventionManuelle)) { cd .. }
    Remove-Item -Recurse -Force $var_InterventionManuelle
}

Um exemplo seria o diretório atual como "C: \ Temp \ Scripts \ Blah", e $ var_InterventionManuelle="C: \ Temp", então o diretório atual contém $ var_InterventionManuelle e ele retornará para C: \.

Obviamente, se a variável $ var_InterventionManuelle contiver a raiz da unidade (por exemplo, "C: \") e o diretório atual em que o script está executando estiver na unidade C: \, o loop while nunca será concluído. Se você souber que a variável $ var_InterventionManuelle NUNCA conterá a raiz da unidade, tudo bem, caso contrário, você precisará atender a esse comportamento fazendo algo assim:

if($var_InterventionManuelle.Split("\")[1].Length -eq 0)
{
    Write-Output "I'm trying to delete the root drive, abort, abort"
    exit
}

O script acima verifica se existe alguma coisa após a primeira barra no caminho. Por exemplo, "C: \" será dividido em "C:" e "" para que o segundo item da matriz tenha um comprimento de 0. Onde "C: \ Temp \ Blah" será dividido em "C:", "Temp "e" Blah ". Neste caso, o segundo item na matriz ("Temp") terá um comprimento de 4, que não é 0 ...

    
por 19.12.2014 / 15:52

Tags