2012-01-17 215 views
-3

我有一个问题我写了一个PowerShell脚本,所以我有name.ps1,但我有麻烦执行它,我的意思是我可以使用Windows PowerShell登场啦(ISE),只需添加代码它并运行...但我如何执行它不同?执行PowerShell脚本

当我打开普通的Windows PowerShell(所以不是ISE)和i型有script.ps1 FILE.CSV 我得到这样的错误: enter image description here

这是我的代码,也许我不是适当的启动在我的代码脚本,我不知道:

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 
} 
与其他词我需要执行该脚本,只有1参数(路径csv文件)

在此先感谢所以

+1

你甚至看你得到的消息? – Joey 2012-01-17 07:23:09

回答

4

在Powershell的,不同于CMD,当前目录(。)是不是在PATH。

所以运行在当前目录的脚本或可执行文件,你有./

前缀所以,你将不得不做

.\script.ps1 file.csv 

如果你在错误信息仔细一看,在底部,Powershell给出了一个建议,你必须这样做。

2

你需要告诉Powershell的你想从当前位置执行脚本,像* nix系统。所以调用诸如错误消息的脚本提示:

./myScript.ps1 

.\myScript.ps1 

您也可以提供完整的脚本路径

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

脚本/目录名不区分大小写。

+0

是的,它的工作原理,但另一个问题,我不能启动然后我的功能:( – Alnedru 2012-01-17 08:11:55