У меня есть скрипт ps1, в котором я определяю 2 функции как таковые:
function Invoke-Sql([string]$query) {
Invoke-Sqlcmd -ServerInstance $Server -Database $DB -User $User -Password $Password -Query $query
}
function Get-Queued {
Invoke-Sql "Select * From Comment where AwaitsModeration = 1"
}
Затем я вызываю файл ps1, набирая его (он находится в папке по пути, и автозаполнение работает)
Однако я не могу начать пользоваться функциями. Я смущен, потому что, когда я копирую / вставляю функции в консоль, все в порядке, и они работают. У меня также есть функция, определенная в моем профиле, и она работает. Где я ошибаюсь, почему не работает то, что я пытаюсь сделать?
Для того, чтобы функции были доступны, вам необходимо «поставить точку» в скрипте. «Dot Sourcing» запускает сценарий в текущей области.
Чтобы указать источник сценария с точкой, вы помещаете точку, затем пробел и затем полный или относительный путь к сценарию.
например
. ./myscript.ps1
Проверять, выписываться эта почта о запуске скриптов PowerShell из командной строки.