Zum Inhalt wechseln


Foto

funktionen per ps nutzen


  • Bitte melde dich an um zu Antworten
37 Antworten in diesem Thema

#16 Dukel

Dukel

    Board Veteran

  • 9.313 Beiträge

 

Geschrieben 02. Juli 2012 - 13:55

. .\script1.ps1

Entweder hast du einen Einzeiler ohne davor die funktionen zu laden oder kannst deine 3 Zeilen Posten.

Versuche das obige und entsprechend dann das mit script2.ps1.

Stop making stupid people famous.


#17 mfdoom

mfdoom

    Senior Member

  • 378 Beiträge

 

Geschrieben 02. Juli 2012 - 13:58

ich habe die funktionen jetzt direkt in die Eingabeteile der ps eingegeben - jetzt funktioniert das benutzen der funktionen auch....
Simon-Timothy

#18 Dukel

Dukel

    Board Veteran

  • 9.313 Beiträge

 

Geschrieben 02. Juli 2012 - 14:00

Wieso postet du nicht einfach alles, was du in die Powershell reinhackst?

Wieso versuchst du es nicht mit ". .\..."?

Stop making stupid people famous.


#19 mfdoom

mfdoom

    Senior Member

  • 378 Beiträge

 

Geschrieben 02. Juli 2012 - 14:09

Wieso postet du nicht einfach alles, was du in die Powershell reinhackst?

Wieso versuchst du es nicht mit ". .\..."?


Hallo nochmal,

danke für deine Geduld:

Ich poste mal alles was ich versuche:

p.s.: mit .\ habe ich es probiert - ich sehe aber keine Fehlermeldung oder sonstwas.

Inhalt von Createaccount.ps1:

function Create-Account ([string]$1, [string]$2, [string]$3, [string]$4, [string]$5) {      
   
   if(-not $5) {
   
        Write-Host "Fehler! Die Funktion muss mit fünf Parametern aufgerufen werden!"
        Write-Host "Die Parameter sind:"
        Write-Host "Benutzername`nPasswort`nVollständiger Name`nBeschreibung`nGruppenliste"
        Write-Host "Die Werte müssen in Anführungszeichen gesetzt werden."
        Write-Host "Die Gruppenliste muss mit Kommata getrennt eingegeben werden."
   
   }
   else {
        #Benutzer anlegen
        
        #Prüfen, ob der User schon existiert.
        $arrAccounts = (Get-WmiObject Win32_UserAccount -ComputerName $env:COMPUTERNAME | Select-Object -ExpandProperty Name)
        $found = $arrAccounts -contains $1
        
        if(-not $found) {
            $objComp = [adsi]"WinNT://$env:ComputerName"
            $objUser = $objComp.Create("User", $1)
            $objUser.SetPassword($2)
            $objUser.put("FullName",$3)
            $objUser.put("Description", $4)
            $objUser.PasswordExpired = 1
            $objUser.SetInfo()
            Write-Host "Benutzer $1 angelegt. Weise Gruppen zu."
        }
   
        else {
            Write-Host "Benutzer $1 wurde nicht angelegt, weil er schon existiert. Weise Gruppen zu."
        }
   
        #Gruppen zuweisen
        $groups = $5.split(",")
        foreach($group in $groups) {
   
            $groupExists = (Get-WmiObject Win32_Group -ComputerName $env:COMPUTERNAME | Where-Object {$_.Name -eq $group})
            if($groupExists) {
                $username = ""
                $username = "WinNT://$env:ComputerName/$1"
                $objGroup_to_add = [adsi]"WinNT://$env:ComputerName/$group"
                $userExists = (Get-WmiObject Win32_GroupUser -ComputerName $env:COMPUTERNAME | Where-Object {($_.groupcomponent -match ".*Name=`"$group.*") -and ($_.partcomponent -match ".*Name=`"$1.*") })
                if($userExists) {
            
                    Write-Host "Benutzer $1 wurde nicht der Gruppe $group hinzugefügt, da er schon Mitglied ist."
                
                }
                else {
                    $objGroup_to_add.add($username)
                    $objGroup_to_add.SetInfo()
                    Write-Host "$1 der Gruppe $group zugewiesen."
                }
   
            }
            else {
    
                   Write-Host "Fehler! $1 wurde nicht $group zugewiesen, da $group nicht existiert."
    
            }
        }
    }
    
}

Simon-Timothy

#20 mfdoom

mfdoom

    Senior Member

  • 378 Beiträge

 

Geschrieben 02. Juli 2012 - 14:10

Inhalt von createusersfromlist.ps1:


function Create-UserFromList($1) {

# Test, ob die Datei existiert. Das macht der Befehl Test-Path
    if(Test-Path($1)) {
        $arrUsers = Get-Content $1
        $i = 1 #Zählervariable für die Zeile
        foreach($user in $arrUsers) {

            # Aufteilen der Zeile am Semikolon.
            # Das Skript funktioniert nicht,
            # wenn das Passwort ein Semikolon enthält. :(
            $arrUserinfo = $user.split(";")

            # Nur wenn das Array genau fünf Elemente enthält,
            # dann wird die Zeile verarbeitet.
            if($arrUserinfo.length -eq 5) {

                Create-Account $arrUserinfo[0] $arrUserinfo[1] `
                $arrUserinfo[2] $arrUserinfo[3] $arrUserinfo[4]
            }
            else {

                # Sonst gibt es eine Fehlermeldung
                Write-Host "Fehler in Zeile $i"
                foreach($info in $arrUserinfo) {

                    # Und wir geben die Zeile
                    # gleich wieder mit Semikola getrennt aus.
                    Write-Host -NoNewline "$info;"

                }
                # Nach der Verarbeitung des Arrays
                # muss die Zeile noch umgebrochen werden.
                Write-Host "`n"
           }
           $i++ # Zeilennummer hochzählen

        }
    }
    else {

        Write-Host "Datei $1 nicht existent."

    }

}

Simon-Timothy

#21 Dukel

Dukel

    Board Veteran

  • 9.313 Beiträge

 

Geschrieben 02. Juli 2012 - 14:17

Nochmal: Punkt Leerzeichen Punkt Backslash Scriptname.ps1

Poste einmal genau das was du in der Powershell CLI reinhaust ohne die Funktionen selbst.

Stop making stupid people famous.


#22 mfdoom

mfdoom

    Senior Member

  • 378 Beiträge

 

Geschrieben 02. Juli 2012 - 14:26

Das ist das was ich an der ps eingebe:

Create-UserFromList .\meineliste.csv
Simon-Timothy

#23 Dukel

Dukel

    Board Veteran

  • 9.313 Beiträge

 

Geschrieben 02. Juli 2012 - 14:27

Und davor? Wie lädst du die externen Powershell Scripte???

Stop making stupid people famous.


#24 mfdoom

mfdoom

    Senior Member

  • 378 Beiträge

 

Geschrieben 02. Juli 2012 - 14:36

Die externen Powershellskripte lade ich:

. .\script1.csv [Enter]

. .\script2.csv [Enter]

Dann kann ich auch die Funktion Create-UserFromList benutzen. Leider bekomme ich dann die Rückmeldung dass ich keine Berechtigungen habe mit "Zugriff verweigert".
Simon-Timothy

#25 mfdoom

mfdoom

    Senior Member

  • 378 Beiträge

 

Geschrieben 02. Juli 2012 - 14:39

Kann das etwas mit ExecutionPolicy zu tun haben? Die steht bei mir auf remotesigned.
Simon-Timothy

#26 Dukel

Dukel

    Board Veteran

  • 9.313 Beiträge

 

Geschrieben 02. Juli 2012 - 15:21

Poste bitte die komplette Fehlermeldung.

Stop making stupid people famous.


#27 mfdoom

mfdoom

    Senior Member

  • 378 Beiträge

 

Geschrieben 02. Juli 2012 - 15:33

Get-Content : Der Zugriff auf den Pfad "C:\Users\nichtsoschlau.domain\Desktop" wurde verweigert.
In C:\Users\nichtsoschlau.domain\Desktop\createusersfromlist.ps1:14 Zeichen:21
+ $arrUsers = Get-Content $1
+ ~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (C:\Users\nichtsoschlau.domain\Desktop:String) [Get-Content], UnauthorizedAccessExce
ption
+ FullyQualifiedErrorId : GetContentReaderUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetContentCommand
Simon-Timothy

#28 Dukel

Dukel

    Board Veteran

  • 9.313 Beiträge

 

Geschrieben 02. Juli 2012 - 15:45

Keine Rechte auf die csv Datei.

Stop making stupid people famous.


#29 mfdoom

mfdoom

    Senior Member

  • 378 Beiträge

 

Geschrieben 03. Juli 2012 - 11:37

Dank Dir, die Rechte passen nun auf die Datei und die Benutzer werden angelegt. Jetzt werde ich noch herausfinden wie ich lokale und keine Domänenbenutzer einrichte. Das sollte nicht allzu schwierig sein.

Dankeschön.
Simon-Timothy

#30 Dukel

Dukel

    Board Veteran

  • 9.313 Beiträge

 

Geschrieben 03. Juli 2012 - 13:33

Wieso sollte man Lokale nutzer anlegen wollen?

Stop making stupid people famous.