Jump to content

MurdocX

Moderators
  • Gesamte Inhalte

    2.753
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von MurdocX

  1. Ja! Das haben wir auch, sehr guter Einwand, kann ich gleich intern mal besprechen.

    Das finde ich im Übrigen auch eine gute Idee --> verhindern, dass der PC gesperrt wird. Ich sage nur LabVIEW, Matlab etc... :-/.

     

    Wir hatten öfters die Fälle, das wir die Räume mit über 30 Studenten voll hatten und dann waren mehrere Arbeitsstationen gesperrt, weil dort gerechnet wurde. Die Studenten in der Vorlesung haben dann b***d in die Röhre geschaut, weil sie keinen Platz mehr hatten. 

     

    Früher wurden die Computer über 60 Minuten Leerlauf heruntergefahren, bis die Studenten gecheckt haben einfach ein Stück Papier in die STRG-Taste genau das umgeht.

     

    Du könntest ab der abendlichen Abschaltzeit ein Skript aktivieren, welches ausließ ob ein Benutzer angemeldet ist. Z.B. über die Variable %Username% oder in der Powershell mit $env:Username und dann entscheidet. 

    #requires -Version 1.0
    
    if ($env:USERNAME -like '')
    {
      shutdown.exe /s /t 300 /c "Der Computer wird in 5 Minuten heruntergefahren. Speichern Sie nun Ihre Daten."
    }
    
  2. Und noch einfacher:

     

    Ich würde die Lösung von Nils bevorzugen, da

    • die Objekte aus der Variable gegengeprüft werden können
    • die Objekte für weitere Verarbeitungen genutzt werden können
    • die Objekte nicht mehrmals abgefragt werden müssen

    und Skripte wachsen ja ;-)

     

    Nils  :thumb1:

    Dukel -> Award der Optimierung  ;)

     

    [ EDIT ]

     

    Es geht sogar noch minimalistischer. Der berühmte Einzeiler.

    UND es wurde ein Fehler übersehen, denn dem Befehl ADGroupMember muss bei Identity eine Gruppe und KEIN String übergeben werden.

    Get-ADUser 'Alogie' -Properties memberOf | Select-Object -ExpandProperty memberOf | ForEach-Object { Get-ADGroup -Identity $_ | Add-ADGroupMember -Members 'PAhner' }
    
  3. $oldmap = (Get-Itemproperty HKCU:\Network\$unit).RemotePath

    Kann ich nicht entfernen, da wird ja die Variable gesetzt.

     

    Ersetze einfach $oldmap in der IF-Bedingung durch $Unit, dann kannst du die Zeile wie ich es beschrieben habe, entfernen.

     

     

    Microsoft hat da wohl in jüngster Vergangenheit was gepatcht um die 'enablelinkedconnection' in der Registry zu verhindern.

     

    "I opened a case on this issue. Microsoft stated a fix would be released in February. They couldn't tell me if it would be in the cumulative or in a separate update."

    https://social.technet.microsoft.com/Forums/en-US/62456d84-95a1-4d43-9745-d8c4e8e600fb/since-kb3194798-enablelinkedconnections-is-not-working-anymore-mapping-shares-mmc-on-network?forum=win10itprogeneral

  4. Hallo Nils,

     

    habe es jetzt so gelöst:

     

     

    $oldserver = "alterServer"

    $newserver = "neuerServer"

    $oldunits = Get-ChildItem -Path HKCU:\Network\ -Name

    ForEach ($unit in $oldunits)

    {

     $oldmap = (Get-Itemproperty HKCU:\Network\$unit).RemotePath

     If ($oldmap -match $oldserver)

     {

         #Remove-PSDrive –Name $unit -Force

        (New-Object -ComObject WScript.Network).RemoveNetworkDrive($unit +":", $true, $true)

        New-PSDrive –Name $unit –PSProvider FileSystem –Root $oldmap.replace($oldserver,$newserver) –Persist

     }

     

     

    So ganz zufrieden bin ich aber noch nicht. Melde mich nochmal.

    Danke schon mal

     

    Verbesserungsvorschläge:

    • Entferne bei "Get-ChildItem" den Parameter "-Name", damit das komplette Objekt gespeichert wird. Damit ersparst du Dir die erneute Registry Abfrage von "Get-Itemproperty" $oldmap = (Get-Itemproperty HKCU:\Network\$unit).RemotePath
    If ($oldmap.RemotePath -match $oldserver)
    
    • Alternativ von Remove-PSDrive ( Funktoniert das bei euch? Bei mir nicht mal mit "-force"! ) und dem ComObjekt könntest du "net use X: /delete" nutzen.
    Start-Process -FilePath "net.exe" -ArgumentList "use $($unit.Name): /delete"
    
  5. Dies kannst du über eine Regel steuern (Ausführen von Skripten).

     

    Probiere es mal hiermit:

    Public Sub saveAttachtoDisk (itm As Outlook.MailItem) 
        Dim objAtt As Outlook.Attachment 
        Dim saveFolder As String Dim dateFormat
        dateFormat = Format(itm.ReceivedTime, "yyyy-mm-dd H-mm")
        saveFolder = "C:\Temp"
        For Each objAtt In itm.Attachments
            objAtt.SaveAsFile saveFolder & "\" & dateFormat & objAtt.DisplayName
        Next
    End Sub
    
  6. Möglichkeiten in das AD des Benutzers zu schreiben gibt es, sogar einige. Eine Liste der Attribute habe ich unten aufgelistet.
     
    Wäre es denn nicht sinniger und einfacher ein - immer diese Powershell ;-) - Skript zu schreiben welches die Information in eine einfache Textdatei einer versteckte Freigabe packt? Ich finde schon. Admin-Zugriff ist nicht nötig, das AD wird nicht zugemüllt und zu guter letzt, kannst du die Freigabe granular berechtigen.
     
    Benuter-Attribute durch den Benutzer beschreibbar:
    • streetAddress
    • homePostalAddress
    • assistant
    • info
    • country/region name
    • facsimileTelephoneNumber (fax number)
    • International-ISDN-Number
    • Locality-Name
    • MSMQ-Digests
    • mSMQSignCertificates
    • Personal-Title
    • Phone-Fax-Other
    • Phone-Home-Other
    • Phone-Home-Primary
    • otherIpPhone
    • ipPhonenumber
    • primaryInternationalISDNNumber Phone-ISDN-Primary
    • Phone-Mobile-Other (otherMobile)
    • Phone-Mobile-Primary
    • Phone-Office-Other (otherTelephone)
    • Phone-Pager-Other
    • Phone-Pager-Primary
    • physicalDeliveryOfficeName
    • thumbnailPhoto (Picture)
    • postalCode
    • preferredDeliveryMethod
    • registeredAddress
    • State-Or-Province-Name
    • Street-Address
    • telephoneNumber
    • teletexTerminalIdentifier
    • telexNumber
    • primaryTelexNumber
    • userCert
    • User-Shared-Folder
    • User-Shared-Folder-Other
    • userSMIMECertificate
    • x121Address
    • X509-Cert

    Hier noch ein kleiner Anreiz meinerseits: 

    #// Model
    [String]$Model = Get-ItemProperty -Path HKLM:\HARDWARE\DESCRIPTION\System\BIOS -Name 'SystemProductName'  | Select-Object -ExpandProperty 'SystemProductName'
    
    #// BIOS-Hersteller
    [String]$BiosHersteller = Get-ItemProperty -Path HKLM:\HARDWARE\DESCRIPTION\System\BIOS -Name 'SystemManufacturer'  | Select-Object -ExpandProperty 'SystemManufacturer'
     
    #// BIOS-Version
    [String]$BiosVersion = Get-ItemProperty -Path HKLM:\HARDWARE\DESCRIPTION\System\BIOS -Name 'BIOSVersion' | Select-Object -ExpandProperty 'BIOSVersion'
    
    #// Computername
    [String]$PCName = $env:COMPUTERNAME
    
    #// Benutzername
    [String]$Benutzername = $env:USERNAME
    
  7. Exchange 2010 / 2013: Abwesenheitsassistent per PowerShell konfigurieren

    http://deadaffebeef.com/blog/exchange-2010-2013-abwesenheitsassistent-per-powershell-konfigurieren/

     

    Damit könntest du Dir etwas bauen. Du könntest eine "Aufgabe" in der Aufgabenplanung erstellen, die beim abmelden des Benutzer gewisse Daten im Netz speichert. Auf dem Exchange diese dann wieder abrufen und mit dem Befehl den Abwesenheitsassistent aktivieren/einstellen.

     

    Die Frage der Sinnhaftigkeit wurde ja schon gestellt...

×
×
  • Neu erstellen...