Jump to content

Kuddel071089

Members
  • Gesamte Inhalte

    559
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von Kuddel071089

  1. Drei Sachen fallen mir als erstes auf:

     

    1. In dem Batch wird gar kein Excel automatisiert. Da werden Excel-Dateien kopiert. Das ist ein Unterschied.
    2. Du verwendest Laufwerksbuchstaben in dem Batch. Bitte stelle die auf UNC-Pfade um - die Laufwerksbuchstaben sind vermutlich während der geplanten Aufgabe gar nicht vorhanden.
    3. Die Rechtevergabe bezieht sich auf die Freigaben und die Dateien, nicht auf die Aufgabe selbst. Wenn Du die Aufgabe im Systemkontext ausführen läßt, dann muss das Computerkonto des Servers, also <Servername>$ Berechtigungen auf die Freigabe haben und per NTFS auf die Dateien. Wenn Du den Batch im Kontext eines Benutzers laufen läßt, dann muss der Benutzer die entsprechenden Rechte haben.

     

    Nichts in dem obigen Batch erfordert, dass der verwendete Serviceaccount "alle Rechte" hat, also vermutlich Domainadmin ist. Das ist aus Sicherheitsaspekten nicht zu empfehlen.

     

    Ergänzung: Vermutlich soll der Call-Befehl auf die Excel-Datei-Datei Excel ausführen? Kannst Du das mal umstellen und Excel.exe direkt aufrufen und die Datei als Argument übergeben?

     

    -Laufwerksbuchstabend sind alle entfernt. Läuft jetzt über die Serverfreigabe.

    -Das Computerobjekt hat Schreibrechte für die Serverfreigabe bekoomen

    -Cer Call befehl wurde ersetzt durch "C:\Program Files\Microsoft Office\Office14\EXCEL.EXE" /R "\\freigabe\...\...\excel-datei.xlsx"

     

    Das Script läuft jetzt an und EXCEL wird im Hintergrund gestartet (sieht man im Taskmanager)

     

    Nur tut sicht jetzt nichts mehr. Startet man den Befehl direkt ohne Task, öffnet sich Excel und schließt sich nach ca. 90 Sekunden wieder.

    Der Prozess läuft jetzt aber schon ein paar Minuten

  2. Ich kann es dir nicht sagen, ich bin wohl noch nie auf solche Idee gekommen; mir fehlte wohl der Anlass dafür.

     

    Interessehalber nochmals die Frage: Wozu soll das gut sein? Ob man das einmal neu denkt?

     

    auf dem Server selber werden Urlaubsdaten etc. in *.xls abgelegt. Diese werden dann irgendwie weiterverarbeitet.

     

    Das Script kommt aus einer anderen Abteilung, daher weiß ich darüber auch nicht genau bescheid. ich soll es nur zum laufen bekommen ^^

  3. Hm,

     

    ich habe schon mal den Start und das Ausführen einer Bach kontrolliert mit

     

    echo Startbatch >> c:\BAusf.txt

    echo Pos x >> c:\BAusf.txt

    echo Endbatch >> c;\Ausf.txt

     

    Aus den Einträgen in der .txt konnte ich dann Start und Ablauf verfolgen.

     

    Mein Gedanke eben, könnte ein Nichtausführen an der Benutzerkontensteuerung (UAC) liegen?

     

    UAC ist deaktiviert.

     

    Ich habe jetzt auch mal wie du ein kleines Log eingebaut. Die Batch wird sauber abgearbeitet, aber an den Exceldatein ändert sich nichts.

     

    Derzeit ist Office 2010 installiert. Auf dem Altsystem lief 2003. Macht das evtl. einen Unterschied ?

  4. Das ist schon interessant.

     

    Wird die Batch denn gestartet, ausgeführt und läuft bis zum Ende durch, ist das überprüfbar?

     

    Sobald man im Task den Haken bei "Unabhängig von der Benutzernameldung ausführen" setzt, sieht man kein Konsolenfestern.

    Es steht zwar in der Aufgabenplanung "Wird asgeführt", ab im Verzeichnis, wo die Excel-Datein liegen, tut sich nichts

  5. Moin,

     

    zwar ist ist möglich, eine Batch im Konext des Systems ohne Benutzersitzung auszufühen, aber für rinr Anwendung wie Excel, die eine grafische Benutzeroberfläche hat, habe ich arge Zweifel. Wie sollte das denn gehen? Und welchen Sinn sollte so etwas machen?

     

    Auf dem alten System unter WinSrv hat das ja auch funktioniert. Da war der User "ArbeitsAccount" hinterlegt. Der hat volle Admin-Rechte. Angemeldet war der User aber nicht.

     

    Wenn dann war der Administrator mal angemdldet aber nicht.

  6. Der User System ist der falsche. Da musst Du das Computerobjekt des Servers berechtigen. Ohne nähere Kenntnisse Deiner Struktur, des Batches und der geplanten Aufgabe ist hier schwer zu helfen. Supported ist es auf nicht. Läuft denn der Batch in einem Benutzerkontext?

     

    Wie soll ich denn das Computerobjekt des Servers im Task berechtigen? Man kann nur "Integrierte Sicherheitsprinzipiale", "Gruppen" und "Benutzer" suchen und auswählen.

     

    Hier int die Batch:

    @ECHO OFF
    
    
    
    set AKTMON=%DATE:~3,2%
    
    echo %AKTMON%
    
    
    
    
    
    rem Bis zum 30.6. werden die Vorjahresdaten geliefert
    
    rem -------------------------------------------------
    
    if %AKTMON% LSS 07 (
    
      call "E:\Transfer\SCA\SCAPersverControlling_Vorjahr.xls"
    
      copy "E:\Transfer\SCA\SCAPersverControlling_weg_Vorjahr.xls" "E:\Transfer\Export\SCAPersverControlling_weg_Vorjahr.xls" /Y
    
      rename "E:\Transfer\Export\SCAPersverControlling_weg_Vorjahr.xls" "SCAPersverControlling_Vorjahr.xls"
    
    )
    
    
    
    
    
    
    
    rem Aufbau der Datei des aktuellen Jahres
    
    rem -------------------------------------
    
      call "E:\Transfer\SCA\SCAPersverControlling.xls"
    
      copy "E:\Transfer\SCA\SCAPersverControlling_weg.xls" "E:\Transfer\Export\SCAPersverControlling_weg.xls" /Y
    
      rename "E:\Transfer\Export\SCAPersverControlling_weg.xls" "SCAPersverControlling.xls"
    
    
    
    
    
    
    
    rem Ab dem 1.7. werden die Daten des Folgejahres geliefert
    
    rem ------------------------------------------------------
    
    if %AKTMON% GEQ 07 (
    
      call "E:\Transfer\SCA\SCAPersverControlling_Folgejahr.xls"
    
      copy "E:\Transfer\SCA\SCAPersverControlling_weg_Folgejahr.xls" "E:\Transfer\Export\SCAPersverControlling_weg_Folgejahr.xls" /Y
    
      rename "E:\Transfer\Export\SCAPersverControlling_weg_Folgejahr.xls" "SCAPersverControlling_Folgejahr.xls"
    
    )
    
    
    
    
    
    @ECHO ON
    
  7. Lässt Du den Batch auch in einer Usersession ablaufen oder vom System? Hat denn der verwendete Useraccount die Rechte, in dem Ordner lesen und schreiben zu können?

     

    BTW: Serverseitige Automatisierung mit Office ist nicht supported: https://support.microsoft.com/en-us/kb/257757

     

    Microsoft does not currently recommend, and does not support, Automation of Microsoft Office applications from any unattended, non-interactive client application or component (including ASP, ASP.NET, DCOM, and NT Services), because Office may exhibit unstable behavior and/or deadlock when Office is run in this environment.

     

    Über die lizenzrechtlichen Implikationen bist Du Dir im Klaren? Siehe dazu http://www.mcseboard.de/topic/196686-exceloffice-auf-server-f%C3%BCr-erp-software/

     

    Ich habe sowohl den User SYSTEM als auch den lokalen Administrator hinterlegt. In beiden Fällen brachte dies keinen Erfolg.

     

    Zur Lizenproblematik: Unsere Clients sind alle via MS EA lizensiert

  8. Hallo zusammen,

     

    auf einem Server soll eine Batch ausgeführt werden, in der u.a. Excel gestartet wird.

     

    Da kein User dauerhaft angemeldet ist, muss das Ganze ohne Usersession durchgeführt werden.

     

    Ich habe den Task auf dem jetzigen Server (WinSrv 2012 mit AD Anbindung) 1:1 eingerichtet wie auf dem alten Server (WinSrv 2003 ohne AD),

     

    Irgendetwas scheint aber nicht zu funkitionieren.

     

    Führt man die Batch ohne Task in einer Session aus, funktioniert alles wie gewünscht.

     

    Hat jemand eine Idee, was mein Problem sein könnte ?

     

     

    Danke schon einmal im Vorraus

  9. Hallo zusammen,

     

    ich habe gerade festgestellt, dass wir in unserem AD eine Menge User haben bei denen der Haen "vor versenhentlichem Löschen schützen" fehlt.

     

    Die SamAccountNames habe ich jetzt in eine CSV Datei exportiert.

     

    Nun würde ich gerne bei allen den Haken via Schleife setzen.

     

    Funktioniert nur leider nicht so wie gedacht.

    Dialog zum importieren der CSV Datei mit den SamAccountNames der zu bearbeitenen Gruppen
    
    Function Get-SaveFile($initialDirectory)
    
    {
    
    [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") |
    
    Out-Null
    
    $SaveFileDialog = New-Object System.Windows.Forms.SaveFileDialog
    
    $SaveFileDialog.initialDirectory = $initialDirectory
    
    $SaveFileDialog.filter = "CSV-Datei (*.csv)| *.csv"
    
    $SaveFileDialog.ShowDialog() | Out-Null
    
    $SaveFileDialog.filename
    
    }
    
    # Ausgewaehlte Datei in Varibale speichern
    
    $pfad = Get-SaveFile
    
    #Schleife für jede Gruppe in der Gruppen.csv Datei
    
    $users = Import-CSV $pfad
    
    ForEach($user in $users)
    
    {
    
    Set-ADObject -Identity $user -protectedFromAccidentalDeletion:$true
    
    }
    

    Fehlermeldung

    Set-ADObject : Der Parameter "Identity" kann nicht gebunden werden. Der Wert "@{SamAccountName=AB4GCS}" kann nicht in den Typ
    
    "Microsoft.ActiveDirectory.Management.ADObject" konvertiert werden. Fehler: "Der Wert "@{SamAccountName=AB4GCS}" vom Typ
    
    "System.Management.Automation.PSCustomObject" kann nicht in den Typ "Microsoft.ActiveDirectory.Management.ADObject" konvertiert werden."
    
    In C:\Users\Kulinski.HHLA-AD\Desktop\test2.ps1:26 Zeichen:24
    
    + Set-ADObject -Identity $user -protectedFromAccidentalDeletion:$true
    
    +                        ~~~~~
    
        + CategoryInfo          : InvalidArgument: (:) [Set-ADObject], ParameterBindingException
    
        + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.ActiveDirectory.Management.Commands.SetADObject
    

    Ich hoffe ihr könnt mir helfen.

     

    Danke

     

  10. Versuch mal eine einfache Pssession aufzubauen (ohne ConfigurationName und ConnectionUrl) und dann die Exchange Snapins oder Module zu laden.

     

    Geht das Script auf dem Exchange Server direkt?

     

    wenn ich das script direkt auf dem exchange ausführe (ohne pssession) versucht er trotzdem den user abzufragen, den es nicht gibt

  11. So schwer ist es doch nicht

    http://mikepfeiffer.net/2013/04/checking-if-an-email-address-is-in-use-within-a-powershell-script/

    Du hast anscheinend schon ein Problem dir die CmdLets zu holen. Auf welchem Rechner führst du das Skript aus?

     

    Ich baue bei sowas ein eine Fehlerbehandlung um das New-PSSession und das Import-PSSession.

     

    Sowohl auf meinem Desktop-PC (Win7) (Powershell als Domain-Admin) als auch auf unserem Admin-Server (WInSrv2012) mit einem Domain-Admin kommt die o.g. Fehlermeldung

     

    damit baue ich die Verbindung zum Exchange auf

     

    $ExSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://NTS606/powershell -Credential $env:USERNAME
    Import-PSSession $ExSession
    
  12. Könntest Du einen Screenshot machen, um genau zu sehen was das Problem ist? Bei mir funtioniert es.

    Import-PSSession : Es wurden keine Befehlsproxys erstellt, da alle angeforderten Remotebefehle vorhandene lokale Befehle verdecken
    würden. Verwenden Sie den AllowClobber-Parameter, wenn Sie vorhandene lokale Befehle verdecken möchten.
    In C:\Users\xxxx.xxxxx\Desktop\test.ps1:5 Zeichen:1
    + Import-PSSession $ExSession
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidResult: (:) [Import-PSSession], ArgumentException
        + FullyQualifiedErrorId : ErrorNoCommandsImportedBecauseOfSkipping,Microsoft.PowerShell.Commands.ImportPSSessionCommand
    Der Vorgang konnte nicht ausgeführt werden, weil das Objekt 'sdadad@xxxx.de' nicht auf 'VNTS401.xxxx.local' gefunden wurde.
        + CategoryInfo          : NotSpecified: (:) [Get-Mailbox], ManagementObjectNotFoundException
        + FullyQualifiedErrorId : [Server=NTS606,RequestId=4fa573fd-bd34-4340-bae6-46ccd2264d77,TimeStamp=21.08.2015 14:09:35] [FailureC
       ategory=Cmdlet-ManagementObjectNotFoundException] 8F0CD0D0,Microsoft.Exchange.Management.RecipientTasks.GetMailbox
        + PSComputerName        : nts606
     
    +++ Username im Exchange ist noch frei +++
    
    

    VNTS401 = DomainController 1

    NTS606 = Exchange Server 1

  13. Wenn ihr ein Wartungfesnter am Sonntag habt, dann würde ich 4 Wochen nach erscheinen die Updates im WSUS manuell freigeben um sicher zu sein, dass die Patche auch wirklich erst dann ausgerollt werden.

     

    Per GPO erhalten die Server dann die Einstellungen, dass sie stündlich suchen sollen und am besten, dass die Updates am Sonntag um 8 Uhr automatisch installiert werden, dann sollte alle Server die neuen Updates erhalten haben.

     

    Dann noch einstellen, dass die Server automatischen booten sollen und schon sollte das automatische Updaten funktiuonieren.

     

    Sollte man natürlich nach und nach testen

  14. Hallo zusammne,

     

    in meinem User-Erstellungsscript wird geprüft ob ein Username / Adresse auf unserem Exchange schon vergeben ist.

     

    Leider versucht das Script auch die Userdaten ab zu fragen, wenn der Username / die Adresse noch frei ist.

     

    Hat jmd eine Idee was mein Fehler ist ?

     

     

    if (Get-Mailbox -Identity "$username@xxxx.de") {
    cls
    Write-Host
    Write-Host -ForegroundColor Red "+++ Username im Exchange ist bereits vergeben +++"
    Write-Host
    Get-Mailbox -Identity $username@xxxx.de | select UserPrincipalName, DisplayName, EmailAddresses | fl
    Write-Host
    Write-Host -ForegroundColor Red "+++ Bitte Script neu starten +++"
    Sleep 5
    break
    }
    
    else {
    Write-Host
    Write-Host -ForegroundColor Green "+++ Username im Exchange ist noch frei +++"
    Sleep 2
    }
    

     

    Danke schon eimal für eure Hilfe

  15.  

    In Powershell ist das ganz einfach zu erledigen, aber man muss sich ein bisschen mit verschiedenen Text-Funktionen auskennen, wie z. B. "trim", "split", usw. Du kannst alle Konten zu einem Array aufnehmen (mit "Get-ADUser") und danach, auf diesem Array, die "Beschreibung" Attribute bearbeiten und die neuen Werte zurück schreibein ("Set-ADUser").

    Du kannst auch ein anderes Attribut für diese Information bestimmen - vielleicht kann "Description" für etwas anderes von Nutzen sein. Es gibt die Attribute, die "leer" sind (der Wert $null haben) und können benutzt werden.

     

    Grüße

    Marcin

     

     

    Erstmal schön zu höhren, dass es möglich ist, meine Änderungen umzusetzen.

     

    Keider habe ich nicht mit "trim, split" usw. gearbeitet. Und bräuchte dann doch ein wenig Hilfe

  16. Gibt es eine Möglichkeit die Ticketnummern und die jeweiligen Personen in ein Excelsheet zu packen?

    Dann wäre das Problem in ein paar Zeilen Powershell erledigt. Am WE habe ich das auch gemacht.

    Get-ADUser -Filter {Description "*SR*"} -Properties SamAccountName, Description | Select SamAccountName, Description | FT
    

    Leider wird damit das Descriptionfeld nicht sauber ausgelesen. Es wird immer etwas abgeschnitten

×
×
  • Neu erstellen...