Question: I have one big batch script which sets bunch of environment variables. 
I want to call that batch script from powershell, that way I can get benefits of both i.e. enviorment variable set by my script and powershell.

Answer: 
Is it possible to convert your batch script to PowerShell script? If you run the bat file, its is executed in separate session that doesn't modify PowerShell's env variables.

You can work with env variables very smoothly:

```
PS> Get-ChildItem env:

Name                           Value
----                           -----
ALLUSERSPROFILE                C:\ProgramData
APPDATA                        C:\Users\xyz\AppData\Roaming
CommonProgramFiles             C:\Program Files (x86)\Common Files
CommonProgramFiles(x86)        C:\Program Files (x86)\Common Files
CommonProgramW6432             C:\Program Files\Common Files
COMPUTERNAME                   xyz
ComSpec                        C:\Windows\system32\cmd.exe
DXSDK_DIR                      D:\prgs\dev\Microsoft DirectX SDK (August 2009)\
FP_NO_HOST_CHECK               NO
HOMEDRIVE                      Z:
HOMEPATH                       \
...

PS> Get-Item env:path
Name  Value
----  -----
Path  c:\dev\CollabNet\SubversionClient;C:\Windows\system32;...

```

Or even (much shorter, returns only string):

```
PS> $env:path
c:\dev\CollabNet\Subversion Client;C:\Windows\system32;...

```

You can change the environment path like this:

```
PS> $env:path += ";c:\mydir"

```

And you can even set environment variables at machine level like this:

```
# fist arg = env variable name, second = value, third = level, available are 'Process', 'User', 'Machine'
PS> [Environment]::SetEnvironmentVariable('test', 'value', 'machine')

```
You can run a batch script from Powershell just by putting its name, but that won't help you. Environment variables set in the batch script will only be visible from *that batch and anything that batch runs*. Once the control returns back to Powershell the environment variables are gone. You could have the batch script run `set` at the end and then parse its output into your PSH environment variables, though.