Моя проблема: пользователь должен иметь возможность ввести путь. Если ввод неверен, он должен повторять процесс до тех пор, пока пользователь не введет правильный путь.
Я пытался подтвердить с помощью Test-Path
, но я не знаю, что я делаю неправильно.
Мой текущий код выглядит так:
$repeatpath = $false
do {
$path = Get-ChildItem -Path (Read-Host -Prompt "Please enter a path")
if (Test-Path -Path $path -IsValid) {
$repeatpath = $false
} else {
$repeatpath = $true
"wrong path"
}
} until ($repeatpath -eq $false)
Я получаю эту ошибку:
Get-ChildItem : Cannot find path 'C:\Hans' because it does not exist.
At C:\Users\Asli\Desktop\O2P2_Version1_2.ps1:146 char:17
+ ... $path = Get-ChildItem -Path (Read-Host -Prompt "Please enter a pa ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Hans:String) [Get-ChildItem], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
Test-Path : Cannot bind argument to parameter 'Path' because it is null.
At C:\Users\Asli\Desktop\O2P2_Version1_2.ps1:147 char:29
+ if (Test-Path -Path $path -IsValid)
+ ~~~~~
+ CategoryInfo : InvalidData: (:) [Test-Path], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.TestPathCommand
Я знаю, что пути не существует, это хорошо. Но он должен просто повторить «Неправильный путь» и повторить процесс.