2014-07-19 3 views
2

J'ai donc un script qui fonctionne correctement lorsque je l'exécute à partir de PowerShell ISE. Cependant, j'ai besoin de l'automatiser, donc je cours powershell.exe .\script.ps1, mais j'ai des erreurs au sujet de certaines commandes qui ne sont pas reconnues (elles proviennent d'un module non-standard).Exécutez PowerShell ISE à partir de la ligne de commande?

Toute aide est appréciée, merci!

+0

Quelles sont les erreurs et pouvez-vous nous montrer la partie pertinente du script que vous êtes fonctionnement. Votre module non standard provient-il de votre script? – Matt

+0

Ne pas "exécuter l'ISE à partir de la ligne de commande". Corrigez votre script pour qu'il fonctionne correctement, quel que soit l'endroit où vous l'exécutez. – alroc

Répondre

3

Modifier le début de votre script pour importer toutes les dépendances (modules). Cette pratique est bonne car elle rend le code plus lisible et fonctionne aussi bien avec PS 2.0 un 3.0+

script.ps1

#Import example module 
Import-Module ActiveDirectory 

#Script start 
$name = Read-Host "Username" 
$user = Get-ADUser $name 
..... 
+0

Cela l'a presque fait! Comme ce n'était pas un module standard, il suffit d'utiliser le nom du module (par exemple, 'Import-Module ActiveDirectory') ne fonctionne pas. J'ai d'abord utilisé 'Get-Module-ListAvailable' pour trouver le chemin du module, puis j'utilise' Import-Module C: \ path \ ActiveDirectory' et cela a fonctionné. –

+0

:) Aussi longtemps que les modules ont été installés dans un emplacement de module, 'Import-Module ModuleName' devrait fonctionner. Vous pouvez également faire Get-Module -Listavailable ActiveD * | Import-Module' –

2

L'une des raisons devrait être qu'un script est pointé ou qu'un module est chargé à partir de votre script de profil. Dans ce cas, votre problème peut venir du fait que le démarrage de PowerShell à partir de la ligne de commande et le démarrage de PowerShell ISE n'utilisent pas systématiquement le même script de profil. Jetez un oeil à $Profile var dans chacun et modifiez le fichier associé.

$Profile sur mon ISE:

C:\Users\JPB\Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1 

$Profile sur ma commande Ligne:

C:\Users\JPB\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 

En savoir plus sur les profils. About_Profile

Une façon de connaître tous vos $Profile chemins: enter image description here

Questions connexes