Мои функции PowerShell, похоже, не зарегистрированы

У меня есть скрипт 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, набирая его (он находится в папке в пути, и автозаполнение работает)

Однако я не могу начать использовать функции. Я в замешательстве, потому что когда я копирую / вставляю функции в консоль, все в порядке, и они работают. У меня также есть функция, определенная в моем профиле, и она работает. Где я неправильно думаю, почему не работает то, что я пытаюсь сделать?

2 ответа

Решение

Для того, чтобы функции были доступны, вам нужно "поставить точку" сценария. "Dot Sourcing" запускает скрипт в текущей области видимости.

Для "точечного источника" сценария вы ставите точку, затем пробел, а затем полный или относительный путь к сценарию.

например

. ./myscript.ps1

Посмотрите этот пост о запуске сценариев powershell из командной строки.

Другие вопросы по тегам