Мои функции PowerShell, похоже, не зарегистрированы - PullRequest
1 голос
/ 21 марта 2010

У меня есть скрипт, сохраненный в файле 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"
}

В консоли PowerShell я затем вызываю файл ps1, набирая его (он находится в папке в пути, и автозаполнение работает)

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

1 Ответ

4 голосов
/ 21 марта 2010

Вам необходимо " точка источника " файла. То есть вместо:

PS> C:\PathTo\MyScript.ps1

, который выполняет сценарий (в вашем случае сценарий содержит только функции, но не использует эти функции), но не сохраняет определенные функции и переменные в глобальном состоянии, вместо этого следует сделать следующее:

PS> . C:\PathTo\MyScript.ps1

Это «загрузит» ваши функции в глобальную область, чтобы их можно было использовать позже.

В PowerShell 2.0 вы также можете использовать Import-Module для загрузки сценариев в файлах .psm1 в качестве «модулей», которые обеспечивают лучшую историю повторного использования и развертывания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...