Выполнение сценария powershell - PullRequest
0 голосов
/ 17 января 2012

У меня есть вопрос, я написал сценарий powershell, поэтому у меня есть name.ps1, но у меня проблемы с его выполнением, я имею в виду, что могу дебютировать его с помощью windows powershell (ISE), просто добавив в него код и запустив его... но как мне выполнить его по-другому?

Когда я открываю обычную Windows PowerShell (поэтому НЕ ISE) и набираю там 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-файл)

Заранее спасибо

Ответы [ 2 ]

4 голосов
/ 17 января 2012

В Powershell, в отличие от cmd, текущий каталог (.) Отсутствует в PATH.

Поэтому для запуска сценариев или исполняемых файлов в текущем каталоге необходимо использовать префикс ./

Таким образом, вам придется сделать

.\script.ps1 file.csv

Если вы внимательно посмотрите на сообщение об ошибке, внизу, Powershell предложит вам сделать это.

2 голосов
/ 17 января 2012

Вы должны указать Powershell, что хотите выполнить скрипт из текущего местоположения, как в * nix системах. Так что назовите скрипт как подсказка сообщения об ошибке:

./myScript.ps1

или

.\myScript.ps1

Вы также можете указать полный путь к скрипту

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

Имена скриптов / каталогов не чувствительны к регистру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...