Powershell пытается выполнить резервное копирование из 2 мест, используя оператор if - PullRequest
0 голосов
/ 16 декабря 2018

Я пытаюсь создать простую программу в Powershell.Я пытаюсь сделать резервную копию двух разных папок в одном месте, если пользователь выбирает «Y» в ответ на приглашение.Если пользователь выбирает «N», ему не нужно запрашивать вторую папку, а вместо этого нужно просто указать место для резервной копии.

Однако это не работает для меня, и я застрял.Кто-нибудь может помочь?Очень признателен.

$ErrorActionPreference = "Stop"
#If there is a error stop!
$theFolder = Read-Host -Prompt "Enter folder location you wish to backup"
# variable 'theFolder' = the entered file location.
$question = Read-Host -Prompt "Would you like to backup another folder? 'Y' or 'N'"
if ($question -eq 'Y') {$moreFolder = Read-Host "Enter second folder location"} else
# variable 'backup' = the entered backup location
{$backup = Read-Host -Prompt "Enter backup location"}
echo $thefolder
echo $backup
echo $moreFolder
# checking to see if there is a connection there.
Test-Path $theFolder
Test-Path $moreFolder
Test-Path $backup
# testing the path of both the folder and backup location
Copy-Item -Path $theFolder\* -Destination $backup -Recurse
Copy-Item -path $moreFolder\* -Destination $backup -Recurse
# copy via file pathway defined ealier. put into destination staging.
# recurse = bypass all prompts (are you sure etc)

1 Ответ

0 голосов
/ 16 декабря 2018

Даже в самых маленьких фрагментах кода полезно структурировать ваш код с помощью отступов.Просто сделав это, я обнаружил ошибку: когда пользователь сценария решает ввести вторую папку для резервного копирования, сценарий не будет запрашивать местоположение резервной копии.Здесь:

if ($question -eq 'Y') {
  $moreFolder = Read-Host "Enter second folder location"
} 
else {
  # variable 'backup' = the entered backup location
  $backup = Read-Host -Prompt "Enter backup location"
}

Таким образом, вы должны удалить предложение else и получить что-то вроде этого:

$ErrorActionPreference = "Stop"
#If there is a error stop!
$theFolder = Read-Host -Prompt "Enter folder location you wish to backup"
# variable 'theFolder' = the entered file location.
$question = Read-Host -Prompt "Would you like to backup another folder? 'Y' or 'N'"

if ($question -eq 'Y') {
    $moreFolder = Read-Host "Enter second folder location"
} 

# variable 'backup' = the entered backup location
$backup = Read-Host -Prompt "Enter backup location"

# testing the path of both the folder and backup location
if ((Test-Path $theFolder) -and (Test-Path $backup)) {
    Copy-Item -Path $theFolder\* -Destination $backup -Recurse
    if (Test-Path $moreFolder) {
        Copy-Item -path $moreFolder\* -Destination $backup -Recurse
    }
}

Еще одно замечание: параметр -Recurse для Copy-Item предназначен для повторения черезструктура папок, чтобы не допустить вопросов типа «ты уверен».Для этого используется -Confirm: $ false

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...