Jump to content

funktionen per ps nutzen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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."

           }
       }
   }

}

Link zu diesem Kommentar

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."

   }

}

Link zu diesem Kommentar

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

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...