1

I have a ps1 script in which I define 2 functions as such:

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"
}

I then call the ps1 file by typing it in (it's in a folder in the path, and autocompletion works)

However, I cannot start using the functions. I am confused, because when I copy / paste the functions into the console, all is fine and they work. I also have a function defined in my profile, and it works. Where am I thinking wrong, why doesn't it work what I'm trying to do?

2 Answers 2

4

In order for the functions to be available, you need to "dot source" the script. "Dot Sourcing" runs the script in the current scope.

To "dot source" a script you put a period then a space and then the full or relative path to the script.

e.g

. ./myscript.ps1
0

Check out this post about running powershell scripts from the command line.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .