2012-01-17 1 views
-3

J'ai une question J'ai écrit un script powershell donc j'ai name.ps1, mais j'ai des problèmes pour l'exécuter, je veux dire que je pourrais le débuter avec Windows PowerShell (ISE), en y ajoutant simplement le code et courir ... mais comment puis-je l'exécuter différemment?Exécution du script PowerShell

Quand j'ouvrir les fenêtres ordinaires Powershell (donc pas ISE) et type i il script.ps1 file.csv je reçois ce genre d'erreur: enter image description here

Voici le code que j'ai, peut-être je ne suis pas bon lancer le script dans mon code je ne sais pas:

param ([string]$Csv) 

function GetHelp() { 

$HelpText = @" 

DESCRIPTION: 

NAME: Add-STUser 
Adds Users from the User Csv File 

PARAMETERS: 

-Csv   The Csv file Used by the script (Required) 
-help  Prints the HelpFile (Optional) 


The Csv File is built up in the following way: 


Firstname, Surname, Email 

"@ 
$HelpText 
} 

function Get-Csv ([string]$Csv) { 

    $CsvFile = Import-Csv $Csv 

    $CsvFile | ForEach { 

     Add-User -Firstname $_.Firstname -Surname $_.Surname -Email $_.Email 
    } 
} 


function Add-User ([string]$Firstname, [string]$Surname, [string]$Email) { 

    # Set up AD Connectionstring 

     # Get A Unique Password 

     [string]$Password = Generate-Password 
     $username=$Firstname.substring(0,1).toLower() + $Surname.toLower() 
     # Create User in AD 

     $container =[ADSI] $Connection 
     $User = $container.Create("User", "cn="+$username) 
     $User.Put("sAMAccountName", $username) 
     $User.Put("givenName", $Firstname) 
     $User.Put("sn", $Surname) 
     $User.Put("mail", $Email) 
     $User.Put("displayName", $Firstname + " "+$Surname) 
     $User.SetInfo() 

     # Set Random Pwd and Enable Account 

     $User.PsBase.Invoke("SetPassword", $Password) 
     $User.PsBase.InvokeSet("AccountDisabled", $false) 
     $User.pwdLastSet = 0 
     $User.SetInfo() 

     # Write Pwd to File 

     $FileName = "PasswordList " + (get-date -uformat "%Y-%m-%d") + ".txt" 

     "$Firstname, $Surname, $username, $email, $Password" | Add-Content $FileName 

     Write-Host "Added User: $username" -ForegroundColor Green 


    # Set Check Variable to False 

    $Password = $Null 
    #$Script:sAMAccountNameDoesntExist = $False 
    #$Script:distinguishedNameDoesntExist = $False 
} 



if ($help) { 
    GetHelp 
} elseif ($Domain -AND $Csv) { 
    Get-Csv -Csv $Csv 
} else { 
    GetHelp 
} 

donc, avec d'autres mots j'ai besoin d'exécuter ce script avec seulement 1 param (chemin vers le fichier csv)

Merci à l'avance

+1

Avez-vous même lu le message que vous avez reçu? – Joey

Répondre

4

Dans Powershell, contrairement à cmd, le répertoire courant (.) N'est pas dans PATH.

Donc, pour exécuter des scripts ou des exécutables dans le répertoire courant, vous devez utiliser le préfixe ./

Vous devrez faire

.\script.ps1 file.csv 

Si vous regardez attentivement le message d'erreur, au En bas, Powershell suggère que vous devez le faire.

2

Vous devez indiquer à Powershell que vous voulez exécuter un script à partir de l'emplacement actuel, comme dans les systèmes * nix. Donc, appeler le script comme le message d'erreur Conseils:

./myScript.ps1 

ou

.\myScript.ps1 

Vous pouvez également fournir le chemin complet au script

c:\what\ever\is\the\path\myScript.ps1 

Les noms script/répertoire ne sont pas sensibles à la casse .

+0

oui cela fonctionne, mais un autre problème, je ne peux pas commencer alors ma fonction :( – Alnedru

Questions connexes