Dot Sourcing достигнет вашей цели. Однако это неоднозначный дизайн, который противоречит рекомендациям по разработке PowerShell CmdLet. Конечно, вы создаете сценарий, а не командлет, но похоже, что вы пытаетесь следовать соглашениям PowerShell, учитывая имя файла сценария, которое вы выбрали.
Использование глагола Get
подразумевает, что вы извлекаете ресурс. Поэтому, если у вас есть скрипт с именем Get-Cluster.ps1
, он должен получить один или несколько экземпляров Cluster
. Вместо этого рассмотрим следующее:
$clusters = .\Get-Cluster.ps1 -NonCompliantOnly
Это все еще позволит вам установить переменную в вашей текущей области без всякой магии и неоднозначности точечного поиска. Я не пытаюсь быть проповедуемым, но команда PowerShell проделала хорошую работу по созданию согласованности, и я думаю, что попытка увековечить это, когда мы расширяем PowerShell с помощью наших собственных скриптов / модулей / командлетов, имеет большое значение. Если вы не можете установить новую или существующую переменную в текущей области, используя точечный источник, я бы посоветовал вам найти новый глагол.
См. Глаголы командлета на MSDN для получения дополнительной информации.