Jump to content

Schranz

Members
  • Gesamte Inhalte

    52
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von Schranz

  1. Hallo Freunde,

    ich habe eine kleine Verständnisfrage. (EXC2010)

     

    Was ich möchte:

    Wir haben ein Programm hier, welches zwingend den Datenversand (Mail) per SMTP vorraussetzt. Also trage ich in der Software den smpt Server und die Authdaten ein.

     

    Mein Problem:

    Einen Empfangsconnector habe ich bereits gebaut. Also kann das Programm bereits an INTERNE Postfächer was senden. (Analog dazu tun das so einige Scanner bereits). Nur wie bringe ich dem Exchange Server bei, dass jener auch nach extern relayen soll. Ein kleiner Wink wo ich mich, und vorallem mit was, belesen kann, würde mich freuen.

     

    gruß

  2. Mit einem Wust an:

     

    Get-Content C:\skripte\nummer.txt | ForEach-Object { $_ -replace ' ' } > C:\skripte\nummer2.txt
    Get-Content C:\skripte\nummer2.txt | Where-Object { $_ } > C:\skripte\nummer3.txt
    $nummer = @(Get-content C:\skripte\nummer3.txt)
    $nummer = $nummer -replace "FELD", ""
    $nummer = $nummer -replace "-----", ""
    $nummer = $nummer | Where-Object { $_ } 
    

     

    Die Gesamtlösung ansich wird niemanden helfen ein ähnliches Problem zu lösen. Das Hauptproblem bleibt die Verbindung von Powershell zu SQL.

  3. $officegroups = @(Get-ADGroup -filter {(name -like "*MSOffice*")} -SearchBase "$searchbase1" | foreach {$_.name})

     

    $office = (Get-ADUser -filter {(description -notlike "*") -and (userAccountControl -eq 512) -and (memberof -recursivematch "$memberof")} -SearchBase "$searchsbase2" | foreach {$_.SamAccountName}).count

     

     

    So sahs nach deinem ersten Post aus, leider ohne Erfolg.

     

    Edit: Ok das klappt tatsächlich so nich..... Wie man in meinem ersten Post aber sieht, funktioniert da aber ein Get-ADUser Aufruf mit $ im in der Searchbase. Sonderbar.

  4. Beim debuggen habe ich gesehen das die Variablen gefüllt sind. Allerdings deute ich die Fehlermeldung so, dass die Variabel nicht übersetzt wird.

     

    Get-ADUser : Eine leere Suchbasis wird nur unterstützt, wenn eine Verbindung mi
    t einem globalen Katalog besteht.
    Bei C:\skripte\get-member.ps1:27 Zeichen:22
    + $office = (Get-ADUser <<<<  -filter {(description -notlike "*") -and (userAcc
    ountControl -eq 512) -and (memberof -recursivematch "$memberof")} -SearchBase "
    $searchsbase2" | foreach {$_.SamAccountName}).count
       + CategoryInfo          : InvalidArgument: (:) [Get-ADUser], ArgumentExcep
      tion
       + FullyQualifiedErrorId : Eine leere Suchbasis wird nur unterstützt, wenn
      eine Verbindung mit einem globalen Katalog besteht.,Microsoft.ActiveDirect
     ory.Management.Commands.GetADUser

     

    Ich probiere mal den ganzen Aufruf in eine Variable zu packen.

     

    Also nur noch:

     

    Get-ADUser $variable

  5. Moin nochmal.

    Die mit --------------> markierten Aufrufe (MIT Variablen) gegen kein Ergebnis zurück. Direkt daruter (aktuell auskommentiert) steht genau der selbe Aufruf OHNE Variablen im Aufruf. Jener funktioniert. Was mache ich falsch?

     

    remove-item c:\skripte\result.txt 
    wait-event -timeout 3 
    $oulist = @(Get-ADOrganizationalUnit -SearchScope 1 -Searchbase "OU=ou3,OU=ou2,OU=ou1,DC=domain,DC=local" -Filter 'Name -like "*"' | foreach {$_.Name})
    #$oulist
    foreach ($ou in $oulist)
    {
    "#######################$ou#######################" | out-file c:\skripte\result.txt  -Append
    
    Get-ADUser -filter {(description -notlike "*") -and (userAccountControl -eq 512)} -SearchBase "OU=$ou,OU=ou3,OU=ou2,OU=ou1,DC=domain,DC=local" | foreach {$_.SamAccountName} | out-file c:\skripte\results.txt -Append
    
    $anzahl = (Get-ADUser -filter {(description -notlike "*") -and (userAccountControl -eq 512)} -SearchBase "OU=$ou,OU=ou3,OU=ou2,OU=ou1,DC=domain,DC=local" | foreach {$_.SamAccountName}).count 
    
    -------------->$officegroups = @(Get-ADGroup -filter {(name -like "*MSOffice*")} -SearchBase "OU=$ou,OU=ou3,OU=ou2,OU=ou1,DC=domain,DC=local" | foreach {$_.name})
    #$officegroups = @(Get-ADGroup -filter {(name -like "*MSOffice*")} -SearchBase "OU=ou4,OU=ou3,OU=ou2,OU=ou1,DC=domain,DC=local" | foreach {$_.name})
    
    $office = $null
    $officegesamt= $null
    foreach ($officegroup in $officegroups)
    {
    -------------->$office = (Get-ADUser -filter {(description -notlike "*") -and (userAccountControl -eq 512) -and (memberof -recursivematch "CN=$officegroup,OU=$ou,OU=ou3,OU=ou2,OU=ou1,DC=domain,DC=local")} -SearchBase "OU=$ou,OU=ou3,OU=ou2,OU=ou1,DC=domain,DC=local" | foreach {$_.SamAccountName}).count 
    #$office = (Get-ADUser -filter {(description -notlike "*") -and (userAccountControl -eq 512) -and (memberof -recursivematch "CN=cn1,OU=ou4,OU=ou3,OU=ou2,OU=ou1,DC=domain,DC=local")} -SearchBase "OU=ou4,OU=ou3,OU=ou2,OU=ou1,DC=domain,DC=local" | foreach {$_.SamAccountName}).count 
    
    $officegesamt = $officegesamt + $office
    }
    
    "Anzahl: $anzahl" | out-file c:\skripte\result.txt  -Append
    "Anzahl MS Office: $officegesamt" | out-file c:\skripte\result.txt  -Append
    }
    
    
    
    

  6. Moin,

    ich würde gerne in einer foreach Schleifen den Inhalt von 2 Arrays ausgeben.

     

    $x = 0
    
    foreach ($a in $array1) 
    {
    $array1[$x],$array2[$x] | out-file $file -append
    $x = $x +1
    }
    

     

    Das Ergebnis ist:

     

    array1-1

    array2-1

    array1-2

    array2-2

     

    Was ich möchte ist:

    array1-1, array2-1

    array1-2, array2-2

    Leider ergibt der Code nicht das gewünschente Ergebnis. Wo ist mein Denkfehler?

  7. Moin Männers,

     

    Was ich möchte, ist eine Liste von Einträgen die zu meinen Vorgaben passen.

    Mein Code:

    [void][system.reflection.Assembly]::LoadWithPartialName("MySql.Data")
    
    # DB-Verbindung aufbauen
    $strConnectionString = "server=0.0.0.0; port=x; uid=user; pwd=passwort; database=datenbank; Pooling=False" #Verbindungsdaten für den MySQL-Server
    $objConnection = New-Object MySql.Data.MySqlClient.MySqlConnection($strConnectionString)
    $objConnection.Open()
    
    # Objekte MySqlCommand und MySqlDataAdapter erzeugen
    
    $strStatement = "SELECT FELD FROM TABELLE WHERE NAME LIKE '%xx%' and FELD NOT LIKE 'MUELLER'" #SQL STATEMENT
    
    $objCommand = New-Object MySql.Data.MySqlClient.MySqlCommand($strStatement, $objConnection)
    $objDataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($objCommand)
    
    # Dataset erzeugen
    $objDataSet = New-Object System.Data.DataSet
    $objDataAdapter.Fill($objDataSet) > $null
    
    # Ergebnis ausgeben
    $ergebnis = $objDataSet.Tables[0]
    $ergebnis | out-file $OutputCSVFile -append
    

     

    Mein Problem zeige ich euch am besten in einem Screenshot der Ausgabe in Notepad++

    attachmentvbya3.jpg

    Woher die Tabs und wie bekomme ich die Tabellenüberschrift weg. Die MySql.Data.MySqlClient.MySqlConnection-Klasse im .NET bietet mir keine Möglichkeit die columname zu skippen.

     

    Gruß

    post-62652-13567390129521_thumb.jpg

  8. Hallo Folks,

     

    Outlook 2007 aktuelles Patchlevel an Exchange 2010 SP1

     

    zur Abwechlung habe ich heute kein Powershellproblem, allerdings auch ein Problem, wo ich das Problem als solches nicht verstehe. Hier kurz der Sachverhalt:

     

    Ich möchte gerne die Kontakte von einem Postfach, auf welches ich Vollzugriff habe, in mein Adressbuch holen.

    post-62652-13567390128521_thumb.jpg

    Allerdings finde ich in den Eigenschaften den Reiter dafür nicht.

    post-62652-13567390128929_thumb.jpg

     

    Möglicherweise raffe ich auch was nicht. Und da wir gerade dabei sind, wie kann ich einen E-Mailverteiler bauen, den ein Benutzer selbst pflegen kann?

     

    gruß,

    schranz

  9. Moin,

     

    diesmal habe ich einer eher konzeptionelle Frage. Den Code würde ich dann selbst bauen.

     

    Aufgabe:

     

    Ich möchte die Größe alle Profilordner einer OU auflisten. Und das für alle OUs.

     

    Unser Tree sieht so aus:

     

    domain.local

    --Kunden

    ------Firma1

    ------Firma2

    ------Firma3

    ------Firma4

     

    Natürlich sind noch Unter OUs und Gruppen darunter, aber die Auflistung soll anhand der OberOU stattfinden. Was ich am Ende fürs Reporting brauche:

     

    Firma1;3456 MB

    Firma2;5576 MB

    Firma3;8446 MB

     

    Idee im Pseudocode

     

    get-alleADUser
    sortiere nach OberOU(Firma1,Firma2,etc)
    
    for jede OU in OUS
    {
    gehe durch alle Profileordner der $user.V2 der OU
    und zähle zusammen
    $firma;$size |out-file *csv
    }
    
    

     

    Falls jemand schon ein fertiges Skript (Auch in Teilen) hat, würde ich das gerne übernehmen :D

     

     

    gruß

  10. Klingt ja schonmal gut. Ich habe meinen Lösungsansatz allerdings fast fertig. Ich werde ihn dann posten. Eure Ergebnisse haben aber trotzdem Verwendung gefunden :D

     

    Eine Frage habe ich aber noch:

     

    $folderarray = @()
    $folderrights = @()
    $folderrights = @(.\[url="http://technet.microsoft.com/en-us/sysinternals/bb664922"]accesschk[/url] -q -w Administratoren \\Server\freigabe\Folder\)
    $foldersource = "\\Server\freigabe\Folder" #Pfad des Ordners
    "array geschrieben"
    
    
    $folderarray = get-childitem $foldersource | Where-Object { $_.mode -like "d*" } | %  { $_.name } #Array mit den Foldernamen füllen und Dateinen ignorieren #Ich weiss es geht einfacher, wird auch noch umgesetzt
    
    foreach ( $folder in $folderarray ) #Schleife die die Größe jedes einzelnen Ordners ausgibt
    {
    $folderrights
    $folder 
    [color="Red"]if ($folderrights -contains "*$folder")[/color] # hier harkt es
    {
    "$folder ja"
    }
    else
    {
    "$folder Nein"
    }
    }
    

     

    $folderrights

    RW \\Server\freigabe\Folder\Folder1

    RW \\Server\freigabe\Folder\Folder2

    RW \\Server\freigabe\Folder\Folder3

     

    $folderarray

    Folder1

    Folder2

    Folder3

     

    Wie bekomme ich die beiden Arrays sinnvoll verglichen!?

  11. Moinm

    ich möchte eine Liste von Ordnern durchgehen und mit denen etwas machen. Was genau ist für das Problem nicht wichtig.

    Dabei soll das Skript Ordner übergehen, auf die der Ausführende keine Rechte hat.

     

    Idee ist folgende:

    $rights = get-acl $foldername | Where { $.Access -like "domain.local\technikgruppe123"}
    
    (pseudocode ab hier)
    
    if $rights = 0
    goto end of schleifendurchlauf
    

     

    Und dann mit diesem Ergebnis weiter zu arbeiten. Nur leider steht kein Ergebnis in $rights. Eine Suche nach get-acl im Forum ergab 0 Treffer :cool:

     

    gruß,

    schranz

  12. Ein Level3 hab ich noch für euch.

     

    psa9jwz.jpg

     

    So versuche ich das Powershell Skript per geplanten Task aufzurufen. Allerdings ist nur

     

    Domain;Send;Receive

     

    in der CSV, erzeugt von:

    "Domain;Send;Receive" | out-file $OutputCSVFile -append #Erstellen der Zeilenüberschriften
    

     

    Die Ausgabe meiner Erhebungen taucht nicht auf. Der Verlauf der Aufgabe zeigt allerdings eine abgeschlossende Durchführung an. Vermutlich kommt er in der normalen Powershell nicht an die Exchange CMDLETs.

     

    Selbes Ergebnis mit folgenem Aufruf:

     

    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command ". 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; C:\skripte\exc-stat\get-mailstat.ps1"

     

     

    Jemand die Lösung? Ich werde nebenbei weiter testen.

     

    gruß,

    schrnz

  13. Noch was ganz schnelles:

    Ich möchte ein txt File wo alle AcceptedDomains drinne stehen:

     

    *@domain1.tld

    *@domain2.tld

    *@domain3.tld

     

    ich habe:

    $adomains = @()
    $at = "*@"
    $OutputCSVFile = "C:\skripte\exc-stat\domains.txt" #Pfad der logdatei
    $adomains = Get-AcceptedDomain | select domainname -Unique
    foreach ($adomain in $adomains) {
    echo "$at$adomain" | out-file $OutputCSVFile -append #Ausgabe in die CSV
    }
    
    

     

    Aber dann sieht meine txt so aus:

     

    *@@{DomainName=domain1.tld}

    *@@{DomainName=domain2.tld}

    *@@{DomainName=domain3.tld}

     

     

    Irgendwie muss ich doch die Überschrift wegbekommen. technet-Artikel zum Select CMDLET hat mir nicht geholfen. Ist sicher wieder sowas kleines....

×
×
  • Neu erstellen...