Powershell: keeping all variables in 1 globalvariables.ps1, then load in profile ... but howto exchange these scripts then?

janhoedt used Ask the Experts™

I'd like to keep all my variables in a GlobalVariables.ps1 which I load in my profile.
All my scripts would then just use $SCCMServer or $SMTPServer instead of full name.

However, this limits the exchange of my scripts, since the scripts won't have the GlobalVariables.ps1.
I could copy GlobalVariables.ps1 to each script I exchange and refer in it via $psscriptroot\globalvariables.ps1 but then I'd need to refer in each of my scripts to this $psscriptroot whereas it is already in my globalvariables.ps1 which is loaded in my profile.
How to address this?

Please advise.
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Joshua GrantomSenior Systems Administrator
Top Expert 2014

That's why I don't customize my profile or add any global variables. If someone else needs to use your script it becomes problematic because they do not have a profile setup like yours.

I would advise to define variables locally in the script as needed, that way colleagues can take advantage of the scripts as well.

Just my 2 cents though.


Ok, but then you have to define your variables over and over again in all kinds of scripts ....
Senior Systems Administrator
Top Expert 2014
Correct, you want to try and keep each script as independent as possible. Increasing dependencies just increases points of failure.

Unless you want to deliver multiple scripts as a tool set or collection of scripts, then you can use your globalvariables.ps1 and $psscriptroot like you mentioned and just document that the scripts must stay together for it to work correctly. Not really a way around it unless you want to put your globalvariables.ps1 on a network share that everyone can read

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial