У меня есть два способа ссылки на скриптовые переменные из отдельного файла сценария. Вот два основных примера:Dot Sourced Variables VS Глобальные переменные
1. Dot Источник
Variables.ps1
$Source = "source"
$Destination = "dest"
Execute.ps1
. .\Variables.ps1
Copy-Item -Path $Source -Destination $Destination -Force
2. Глобальная переменная
Variables.ps1
$Global:Source = "source"
$Global:Destination = "dest"
Execute.ps1
.\Variables.ps1
Copy-Item -Path $Source -Destination $Destination -Force
Я проводил исследования, но до сих пор найти окончательную причину, чтобы использовать один над другим. Существуют ли ограничения или предостережения, которые я должен использовать при использовании этих методов? Любой вход очень приветствуется. Спасибо за ваше время.
EDIT:
@ mklement0 дал большой ответ, почему использовать точку-сорсинг над глобальными переменными. Мне бы хотелось, чтобы эта дискуссия открылась. Если есть другая точка зрения, или объяснение относительно использования глобальных переменных более выгодно, мне бы понравилось слушание и голосование соответственно. Спасибо.
Интересно. Теперь вы бы предложили dot-sourcing, когда файл сценария переменных ссылается на несколько файлов сценариев? Когда использование глобальных переменных будет более выгодным? – Ethilium
@Ethilium: Да, пусть все эти файлы сценариев явно передают файл переменных с переменным точечным значением - это четко передает намерение - в контексте скриптов, которые полагаются на эти переменные, - и позволяет избежать нежелательных побочных эффектов. Честно говоря, я не знаю о случаях использования глобальных переменных - правильный выбор (но если есть такие случаи, я бы хотел услышать о них). Обратите внимание, что следующим уровнем абстракции будет создание _module_, что ваши скрипты _import_. – mklement0
Благодарим вас за хорошо объясненный и сжатый ответ. Я также буду смотреть на создание модулей. Пометка как правильный ответ. – Ethilium