Я пытаюсь сделать скрипт с аккуратно выложенными функциями, которые сравнивают две папки.Программа:
- Запрашивает у пользователя путь к файлу
- Проверьте, не отличаются ли имена файлов
- Проверьте, не отличаются ли размеры файлов
В качестве теста я сравнивал одну и ту же папку с самой собой (вывод должен быть false, false).При выполнении шага 1 ($referencepath
) как функции (FolderPrompt
) моя программа не работает правильно, и под этим я подразумеваю, что я получаю разные ответы почти каждый раз, когда запускаю ее.
Это работает:
$referencePath = Read-Host -Prompt "Enter new DTNA folder path to check"
NameDisc
SizeDisc
function NameDisc {
write-host "Name Discrepancy: " -NoNewline
if (Compare-Object -Property name (Get-ChildItem $referencePath) - DifferenceObject (Get-ChildItem P:\DTNA_201805081923))
{return $true}
else
{return $false}
}
function SizeDisc {
write-host "Size Discrepancy: " -NoNewline
if (Compare-Object -Property length (Get-ChildItem $referencePath) - DifferenceObject (Get-ChildItem P:\DTNA_201805081923))
{return $true}
else
{return $false}
}
Но это не так:
FolderPrompt
NameDisc
SizeDisc
function FolderPrompt {
$referencePath = Read-Host -Prompt "Enter new DTNA folder path to check"
}
function NameDisc {
write-host "Name Discrepancy: " -NoNewline
if (Compare-Object -Property name (Get-ChildItem $referencePath) -DifferenceObject (Get-ChildItem P:\DTNA_201805081923))
{return $true}
else
{return $false}
}
function SizeDisc {
write-host "Size Discrepancy: " -NoNewline
if (Compare-Object -Property length (Get-ChildItem $referencePath) - DifferenceObject (Get-ChildItem P:\DTNA_201805081923))
{return $true}
else
{return $false}
}
Я пробовал:
Объявление функций перед их вызовом
Установка $referencePath = 0
для сброса значения каждый раз, считая, что это проблема
Помещение Return $referencePath
в конце различных функций
Мое лучшее предположение, что мне нужно сделать что-то вроде function <name> ($referencePath)
, чтобы передать переменную (?).