Вы можете сделать что-то подобное ниже, чтобы проверить, содержит ли текущий каталог, в котором работает ваш скрипт, $ var_InterventionManuelle.
If(Test-Path -Path $var_InterventionManuelle)
{
While((Get-Item -path ".\").FullName.Contains($var_InterventionManuelle)) { cd .. }
Remove-Item -Recurse -Force $var_InterventionManuelle
}
Примером может служить текущий каталог "C:\Temp\Scripts\Blah", а $ var_InterventionManuelle = "C:\Temp", тогда текущий каталог содержит $ var_InterventionManuelle, и он будет возвращаться в C:\.
Очевидно, что если переменная $ var_InterventionManuelle содержит корень диска (например, «C:\») и текущий каталог, в котором выполняется скрипт, находится на диске C:\, цикл while никогда не завершится. Если вы знаете, что переменная $ var_InterventionManuelle НИКОГДА не будет содержать корень диска, это нормально, в противном случае вам придется учитывать это поведение, выполняя что-то вроде этого:
if($var_InterventionManuelle.Split("\")[1].Length -eq 0)
{
Write-Output "I'm trying to delete the root drive, abort, abort"
exit
}
Приведенный выше скрипт проверяет, есть ли что-либо после первой косой черты в пути. Например, «C:\» будет разделен на «C:» и «», поэтому второй элемент в массиве будет иметь длину 0. Где "C:\Temp\Blah" будет разделен на "C:", "Temp" и "Blah". В этом случае второй элемент в массиве ("Temp") будет иметь длину 4, которая не равна 0 ...