Jump to content

mfdoom

Members
  • Gesamte Inhalte

    383
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von mfdoom

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

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

  3. Poste das doch einfach als Text. Sollte ja nicht so viel sein. (die Funktionen selbst interessieren nicht).

     

    Ich habe kein skript nur ein einzeiler indem ich versuche die funktionen (die in 2 skripten enthalten sind) zu nutzen, z.B. so:

     

    Create-UserFromList c:\dateimitusern.csv

     

    :confused:

     

    Wenn ich beide Skripte mit .\script1.ps1 und .\script2.ps1 vorhergehend aufrufe dann erhalte ich keine (fehler)meldung von der ps und möchte dann die durch die skripte deklarierte funktion Create-UserFromList mit Angabe der csv-Datei starten. Oder geht das so gar nicht?

     

    Ich habe testweise eine funktion direkt auf der ps erstellt und nicht ein skript aufgerufen was eine funktion erzeugt und das funktioniert auch einwandfrei.

  4. Hast du meinen Post gelesen ?

    Im Skript muss erst die Funktion stehen, danach kannst du diese aufrufen.

     

    In beiden Skripten ist lediglich die Funktion deklariert - mehr nicht. Ich dachte jetzt dass ich der ps die beiden skripte ausführen lasse und danach die funktionen die darin enthalten sind nutzen kann, z.B. die Funktion "Create-UserFromList".

  5. also du hast einen PowerShell Skript oder mehre.

    Angenommen du hast einen Skript, dann müssen die Funktionen oberhalb des Funktionsaufrufs in folgender Topologie stehen:

     

    [skript Header]

    [Funktion1..]

    [Funktion4...]

    [Aufruf der Funktion]

     

    Der Aufruf der Funktion unterscheidet sich, je nach dem ob du Werte übergibst - z.B. Login, Passwort usw.

     

    function newuser($login, $userpassword)

    {

    ...

    }

     

    Hier der Aufruf:

    newuser (Mueller, Supersicher)

     

    Grüße Admin

     

    Zusätzlich kannst du im Skript die Variablen definieren - z.B. ob diese nur in der Funktion, diesem Skript oder insgesamt verfügbar sind.

     

    Hmm, ich versuche das zu verstehen kann aber nicht ganz folgen:

     

    Innerhalb des skripts stehen die funktionen die ich benutzen möchte. Ich habe mal testweise direkt auf der ps eine funktion erzeugt und die dann im anschluss benutzt, das funktioniert auch. wenn ich aber die skripte ausführe dann kann ich im anschluss nicht die funktionen die darin deklariert sind benutzen. oder muss ich das skript angeben und dann gleichzeitig sagen was ich machen möchte? das eine skript benutzt zudem eine funktion die in dem anderen skript deklariert ist.

  6. Hmm, ich bekomme von der ps die Meldung dass es meine Funktion namens "Create-UserFromList" nicht gibt, obwohl ich sehe das wie im Skript exakt mit diesem Namen erzeugt wird.

     

    Create-UserFromList : Die Benennung "Create-UserFromList" wurde nicht als Name eines Cmdlet, einer Funktion, einer

    Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt

    ist (sofern enthalten), und wiederholen Sie den Vorgang.

     

    Was mache ich falsch?

  7. Guten Tag liebes Board,

     

    ich habe mir aus dem I-Net 2 ps-Skripte heruntergeladen mit denen ich versuche lokale Benutzer auf remoten Server innerhalb meiner Domäne zu erzeugen. Ich weiß allerdings nicht genau wie ich die Skripte mit der ps aufrufen kann um sie für meine Zwecke zu nutzen. Wie kann ich denn die selbsterstellten Funktionen in den Skripten auf der ps aufrufen? Wenn ich die Skripte ausführe, passiert nichts. Irgendwie muss ich die Funktionen ja dann in der ps aufrufen können, nur leider ist mir nicht klar wie...

     

    Danke für die Hilfe.

    funktionen.zip

  8. Guten Tag liebes Board,

     

    wie kann ich es erreichen dass ein Unterordner in einer Freigabe von den Benutzern zwar geöffnet werden kann, der Ordner selbst aber nur lesbar für die Benutzer ist. Er kann also nicht verschoben oder gelöscht werden.

     

    In den Unterordnern des besagten Ordners können die Benutzer aber lesen,schreiben und löschen.

     

    Ich habe ein bisschen rumgetestet mit zwei Gruppen, eine für den Lesezugriff auf den Ordner (Nur dieser Ordner) und einer zweiten Gruppen mit dem Schreibzugriff (Unterordner und Dateien) was aber nicht zum gewünschten Ergebnis führt.

     

    Kann mir jemand weiterhelfen?

     

    :cool:

     

    Ansonsten ein dickes Wochenende

  9. Guten Tag liebes Board,

     

    ich habe eine Frage zu den Clientzugriffen über die CAS-Rolle auf den Postfachspeicher.

     

    Wenn ich einen Hardwareloadbalancer habe der und der ausfällt können die Outlookclients noch auf die CAS-Server zugreifen oder wird das nicht mehr funktionieren? Wie könnte ich im Falle eines Ausfalls des Loadbalancers Exchange wieder verfügbar machen?

     

    Danke für die Infos

  10. Guten Tag,

     

    ich habe mal wieder eine Frage. Und zwar suche ich in den GPP die Einstellung dass unsignierten Druckertreiber automatisch installiert werden können.

     

    Aktuell bekomme ich bei der Zuweisung von freigegebenen Druckern die Eventlog Meldung dass der Drucker nicht gemappt wird weil der entsprechende Treiber fehlt, auf dem Server ist jedoch der 32-bitTreiber für die Clients vorhanden.

     

    Wenn ich den Drucker per Hand am Client über den Assistenten mappe dann bekomme ich den Warnhinweis ob ich dem Druckertreiber der auf dem Server liegt vertrauen möchte. Ich gehe davon aus dass es eine entsprechende Einstellung in den GPP gibt die automatisch die Installation von unsignierten Druckertreibern bzw. solcher aus nicht vertrauenswürdigen Quellen zulässt.

     

    Noch habe ich nichts gefunden.

     

    Weiß jemand Rat?

     

    Danke

  11. Hi.

     

     

     

    Und warum wurde er dann konfiguriert? ;)

     

    LG Günther

     

    Weil ich keinen Plan hatte wie das mit dem Remote.* auf nem SBS läuft und bei der Migration von 2003 überfragt war und Autodiscover von extern erstmal vernachlässigt habe. Trotzdem hat der Server überall im EXCH und auch im DNS die Remote.* Adresse vom SBS-ASSI hinterlegt wurde.

  12. Das habe ich probiert - hatte nicht geklappt. Mittlerweile habe ich festgestellt dass im DNS-Server nur die IPv6 Adresse registriert war, das habe ich geändert und dann konnte ich auch wieder manuell den EHLO-String anpassen.

     

    Umgebogen habe ich es jetzt trotzdem weil ich den remote.* Kram nicht will. Läuft. Danke trotzdem.

  13. Hallo liebes Board,

     

    ich habe vor einiger Zeit einen SBS2008 aufgesetzt. Jetzt wurde ich darauf hingewiesen dass meine Mailserverkonfiguration fehlerhaft ist.

     

    Der externe DNS-Name des Mailservers weicht von dem beim Provider angegeben FQDN ab. Es wird remote.meinserver.de anstelle von mail.meinserver.de benutzt.

     

    Ich habe versucht das per Hand und per Assistenten (Internetkonfiguration) zu ändern, ich kann aber den Server nicht dazu bewegen mail anstelle von remote zu benutzt. Anstelle dessen bekomme ich eine Fehlermeldung wenn ich versuche von extern den Server per SMTP zu erreichen:

     

    telnet mail.meinserver.de 25:

     

    421 4.3.2 Service not available, closing transmission channel

     

    nach einiger Zeit antwortet der Server wieder, trotzdem meldet er sich mit

     

    remote.meinserver.de statt mit mail.*

     

    Ich habe in der Exchangeverwaltungskonsole nachgeschaut und alle Webseiten die mit remote.* gepublished werden auf mail.* umgestellt, trotzdem meldet sich der Server mit remote.*

     

    Wenn ich den Assistenten benutzen möchte bekomme ich die Fehlermeldung dass die Einstellungen wegen eines Netzwerkfehlers nicht gesetzt werden können.

     

    Was muss ich noch beachten?

  14. bei einem DC wird in der Regel, bei mehreren vorhandenen DCs, ein anderer als DNS-Server eingetragen, das müsste bei dir auch richtig gewesen sein sonst hätte es probleme beim hochstufen des Servers gegeben.

     

    gab es denn beim hochstufen irgendwelche Fehlermeldungen?

     

    Ich habe es lösen können - "mein" Adminaccount hatte sich scheinbar schlichtweg bei der Anmeldung verschluckt, mit "dem" Administrator-Account funktioniert alles bestens - und nein, keinerlei Fehlermeldung.

     

    Danke für das Mitraufschauen.

×
×
  • Neu erstellen...