3
votes

I have a powershell script (.ps1) that I am telling TeamCity to run in order to deploy some applications.

The problem is, when TeamCity executes the script, some Modules aren't available.

Teamcity is invoking powershell from here:

C:\Windows**SysWOW64**\WindowsPowerShell\v1.0\powershell.exe

But it should be invoking powershell from here:

C:\Windows**System32**\WindowsPowerShell\v1.0\powershell.exe

Either way the script is invoked, it still looks for modules in the same directory, but for some reason it doesn't work when invoked from SysWOW64

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

PS C:\Users\Administrator.WTLDMZ> C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -File C:\BuildScripts\ExampleFail.ps1 


    Directory: C:\Windows\system32\WindowsPowerShell\v1.0\Modules


ModuleType Name                                ExportedCommands                
---------- ----                                ----------------                
Manifest   ADRMS                               {Update-ADRMS, Uninstall-ADRM...
Manifest   AppLocker                           {Set-AppLockerPolicy, Get-App...
Manifest   BestPractices                       {Get-BpaModel, Invoke-BpaMode...
Manifest   BitsTransfer                        {Add-BitsFile, Remove-BitsTra...
Manifest   CimCmdlets                          {Get-CimAssociatedInstance, G...
Script     ISE                                 {New-IseSnippet, Import-IseSn...
Manifest   Microsoft.PowerShell.Diagnostics    {Get-WinEvent, Get-Counter, I...
Manifest   Microsoft.PowerShell.Host           {Start-Transcript, Stop-Trans...
Manifest   Microsoft.PowerShell.Management     {Add-Content, Clear-Content, ...
Manifest   Microsoft.PowerShell.Security       {Get-Acl, Set-Acl, Get-PfxCer...
Manifest   Microsoft.PowerShell.Utility        {Format-List, Format-Custom, ...
Manifest   Microsoft.WSMan.Management          {Disable-WSManCredSSP, Enable...
Script     PSDiagnostics                       {Disable-PSTrace, Disable-PSW...
Binary     PSScheduledJob                      {New-JobTrigger, Add-JobTrigg...
Manifest   PSWorkflow                          {New-PSWorkflowExecutionOptio...
Manifest   PSWorkflowUtility                   Invoke-AsWorkflow               
Manifest   ServerManager                       {Get-WindowsFeature, Add-Wind...
Manifest   TroubleshootingPack                 {Get-TroubleshootingPack, Inv...
Manifest   WebAdministration                   {Start-WebCommitDelay, Stop-W...
Script     Wtl-Deploy                          {Wtl-Deploy-CheckDirectory, W...
Script     Wtl-F5                              {Add-F5.LTMPoolMember, Add-F5...
Script     Wtl-Remote                          {Wtl-Remote-DoRemotely, Wtl-R...

C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe

PS C:\Users\Administrator.WTLDMZ> C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -File C:\BuildScripts\ExampleFail.ps1 


    Directory: C:\Windows\system32\WindowsPowerShell\v1.0\Modules


ModuleType Name                                ExportedCommands                
---------- ----                                ----------------                
Manifest   BitsTransfer                        {Add-BitsFile, Remove-BitsTra...
Manifest   CimCmdlets                          {Get-CimAssociatedInstance, G...
Script     ISE                                 {New-IseSnippet, Import-IseSn...
Manifest   Microsoft.PowerShell.Diagnostics    {Get-WinEvent, Get-Counter, I...
Manifest   Microsoft.PowerShell.Host           {Start-Transcript, Stop-Trans...
Manifest   Microsoft.PowerShell.Management     {Add-Content, Clear-Content, ...
Manifest   Microsoft.PowerShell.Security       {Get-Acl, Set-Acl, Get-PfxCer...
Manifest   Microsoft.PowerShell.Utility        {Format-List, Format-Custom, ...
Manifest   Microsoft.WSMan.Management          {Disable-WSManCredSSP, Enable...
Script     PSDiagnostics                       {Disable-PSTrace, Disable-PSW...
Binary     PSScheduledJob                      {New-JobTrigger, Add-JobTrigg...
Manifest   TroubleshootingPack                 {Get-TroubleshootingPack, Inv...
Manifest   WebAdministration                   {Start-WebCommitDelay, Stop-W...
1

1 Answers

6
votes

I'm dumb :P

There is a dropdown in TeamCity where you can select the runmode of x86 or x64. It was set to x86. I changed it to x64. Now it executes under the correct version.

Still curious why the modules wouldn't load in x86 though...

Also, it's weird that SysWOW64 correlates to x86 and System32 correlates to x64