title: Powershell modules in scheduled task
body: <p>There is something about modules I don't quite get....</p>
  
  <p>If I as a normal user do </p>
  
  <pre><code>get-module -listavailable 
  </code></pre>
  
  <p>I get a result like this:</p>
  
  <pre><code>Directory: C:\Windows\system32\WindowsPowerShell\v1.0\Modules
  
  ModuleType Name                                ExportedCommands
  ---------- ----                                ----------------
  Manifest   ADRMS                               {Update-ADRMS, Unins
  Manifest   AppLocker                           {Set-AppLockerPolicy
  Manifest   BestPractices                       {Get-BpaModel, Invok
  Manifest   BitsTransfer                        {Add-BitsFile, Remov
  Manifest   CimCmdlets                          {Get-CimAssociatedIn
  Script     DSV
  Script     DSVAsset                            {Get-HTMLPage, Get-H
  Script     DSVDB                               {Execute-UpdateULLoC
  Script     DSVHnas                             {Get-HNASFileScan, B
  Script     DSVLog                              {Start-DSVTranscript
  Script     Experimental.IO                     {Where-Wildcard, Get
  Manifest   FailoverClusters                    {Add-ClusterDisk, Ad
  Script     ISE                                 {New-IseSnippet, Imp
  Manifest   Microsoft.PowerShell.Diagnostics    {Get-WinEvent, Get-C
  Manifest   Microsoft.PowerShell.Host           {Start-Transcript, S
  Manifest   Microsoft.PowerShell.Management     {Add-Content, Clear-
  Manifest   Microsoft.PowerShell.Security       {Get-Acl, Set-Acl, G
  Manifest   Microsoft.PowerShell.Utility        {Format-List, Format
  Manifest   Microsoft.WSMan.Management          {Disable-WSManCredSS
  Script     Module                              {New-PSScript, New-G
  Script     PSDiagnostics                       {Disable-PSTrace, Di
  Script     PSFTP                               {Send-FTPItem, Recei
  Binary     PSScheduledJob                      {New-JobTrigger, Add
  Manifest   PSWorkflow                          {New-PSWorkflowExecu
  Manifest   PSWorkflowUtility                   Invoke-AsWorkflow
  Manifest   ServerManager                       {Get-WindowsFeature,
  Manifest   TroubleshootingPack                 {Get-Troubleshooting
  Manifest   WebAdministration                   {Start-WebCommitDela
  </code></pre>
  
  <p>and that's what I expect...</p>
  
  <p>But when doing the same from a scheduled task (with a different user) I get this:</p>
  
  <pre><code>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...
  </code></pre>
  
  <p>Why is there a difference between those two? </p>
  
  <p>I'm stumped as the module I'm in fact interested in is the modules I have created myself and put into the folder:</p>
  
  <pre><code>C:\Windows\system32\WindowsPowerShell\v1.0\Modules
  </code></pre>
  
  <p>Which seems to be working fine, except for running via scheduled tasks.</p>
  
  <p>What am I missing? What have I forgot?</p>
  
  <p>Further - I can confirm the <code>$env:PSModulePath</code> is the same for both:</p>
  
  <pre><code>C:\Users\GRIT.SVC.IPPlan\Documents\WindowsPowerShell\Modules;
  C:\Windows\system32\WindowsPowerShell\v1.0\Modules\;
  C:\Program Files\Common Files\Microsoft Lync Server 2013\Modules\;
  C:\Program Files\Quest Software\Management Shell for AD\;
  C:\Program Files\Microsoft Monitoring Agent\Agent\PowerShell\;
  C:\Program Files\System Center Operations Manager 2012\Powershell\
  </code></pre>
  
  <p>Except for the user path of course.</p>