Kategorieauswahl

Translator

Google +1

Bitte teilen Sie Google mit, wenn Ihnen diese Seite gefällt.

admin

PowerShell Script um Quest-Migration-Manager Datenbank aufzuräumen

Das folgende Script löscht Einträge aus der Ressource Processing Datenbank des Quest Migration Manager, die älter als 3 Monate sind:

# Bitte unter dem Namen cleanQuestDB.ps1 abspeichern, damit das u.a. Beispiel passt
 param(
 [String]$Server=”localhost”,
 [int]$Port=50000,
 [int]$Month=3,
 [String]$LogPath=”~\Desktop\DeletedQuestDBEntries.log”
)
Import-Module ActiveDirectory
$ErrorActionPreference=”SilentlyContinue”
Get-ADObject -filter * -server “$($Server):$($Port)” -searchbase *
$Root=($Error[0] | select -expandprop Exception | select -expandprop message).split(“:”)[1].split(“,”)[-1].substring(1).trimend(“‘.”)
$ErrorActionPreference=”Continue”
$Project=(Get-ADObject -filter * -server “$($Server):$($Port)” -searchbase $Root -searchscope Onelevel | ? {$_.ObjectClass -eq “aelita-Amm-Workspace”}).Distinguishedname
$ComputerLogCollection=Get-ADObject -filter * -server “$($Server):$($Port)” -searchbase “cn=Computers,cn=ResourceProcessing,$Project” -searchscope onelevel -properties aelita-Amm-LastOperationTime,aelita-Amm-Name
$TimeSpan=(get-date)-(new-timespan -days ($Month*30))
$ToDelete=@()
$TotalCounter=$ComputerLogCollection.count
$DeleteCounter=0
“Searching Database. Please be patient!”
foreach ($Item in $ComputerLogCollection) {
 $Timestamp=$Item | select -expandprop aelita-Amm-LastOperationTime
 if ($Timestamp -and $Timestamp -lt $TimeSpan) {
  $ToDelete+=$Item  
  $DeleteCounter++
 }
}
if ((read-host -prompt “$DeleteCounter from $TotalCounter to delete, proceed (Yes/No)”) -notlike “Y*”) {“Aborted!”;exit}
“Deleted Entries of Questdatabase” > $LogPath
“Run from: $(get-date)” >> $LogPath
foreach ($Item in $ToDelete) {
 $Name=$Item | select -expandprop aelita-Amm-Name
 $Timestamp=$Item | select -expandprop aelita-Amm-LastOperationTime
 “Deleting $Name from $Timestamp” | tee $LogPath -Append
 $Item | Remove-ADObject -Recursive -confirm:$false
}

Im einfachsten Fall starten Sie einfach das Script. Zunächst wird geschaut wieviele Einträge insgesamt vorhanden sind und wieviele davon gelöscht werden würden. Dann fragt es, ob Sie den Vorgang durchführen möchten und listet Ihnen die entsprechenden Objekte auf. Nebenbei werden diese Angaben in eine LogDatei auf Ihrem Desktop protokolliert. Sie können das Skript natürlich auch mit anderen Parametern aus dem Parameter Block aufrufen, wie z.B.:

./cleanQuestDB.ps1 -Server QuestServer -Port 40000 -Month 2 -LogPath C:\Quest.log

Voraussetzungen:
PowerShell 2.0 oder höher
AD-Modul verfügbar
Der Benutzer unter dem das Script läuft benötigt Vollzugriff auf die Quest-Datenbank
Muss mit erhöhten Rechten (UAC – Benutzerkontensteuerung) ausgeführt werden

XML-Abfrage Ereignisanzeige

Die Filter für die Windows Ereignisanzeige (Eventlog) sind sehr mächtig geworden. Mit den standard Optionen in der grafischen Oberfläche kann man schon viel machen, aber leider nicht im Nachrichtentext filtern. Das geht auch mit XML Abfragen. Klicken Sie dazu zunächst einmal auf ein ähnliches Ereignis und klicken Sie dort die Detailansicht an. Dort wählen Sie XML View:

Dann erstellen Sie einen benutzerdefinierten Filter und wählen dort den Reiter XML. Setzen Sie das Häkchen bei Abfrage manuell bearbeiten. Wenn Sie bereits bei Filter Reiter Einstellungen gemacht haben, sind diese auch schon im XML hier vordefiniert. Haben Sie z.B. das Anwendungslog ausgwählt steht dort:
<QueryList>
<Query Id=”0″ Path=”Application”>

</Query>
</QueryList>
Oben habe ich Sie den XML-View auswählen lassen. Warum? Dort sehen Sie, wie die jeweiligen Felder nach denen Sie suchen können benannt sind. Um nun also z.B. nach dem Benutzernamen zu suchen ergänzen Sie die XML Zeilen wie folgt:
<QueryList>
Id=”0″ Path=”Security”>

*[EventData[Data[@Name='TargetUserName'] and (Data=’s‘)]]
</Select>
</Query>
</QueryList>

Selbstverständlich dürfen Sie das gerne weiter verkomplizieren:
*[EventData[Data[@Name='SubjectUserName'] and (Data=’abc’ or Data=’123’)]]
Dies würde alle mit der Angabe abc oder 123 finden bei UserName finden.

Möchten Sie in mehreren Logs suchen:


Würde alle Ereignisse aus dem Eventlog Security mit der ID 1234 und alle Ereignisse aus dem Applicationlog mit der ID 4321 anzeigen.

Um die Filter in der PowerShell zu nutzen können Sie die XML-Abfrage genauso in einen String schreiben und mit Get-WinEvent abfragen:
$Query=@”
<QueryList>
Id=”0″ Path=”Security”>

*[EventData[Data[@Name='TargetUserName'] and (Data=’s’)]]
</Select>
</Query>
</QueryList>
“@
$Evts=Get-WinEvent -log Security -FilterXPath $Query -maxevents 1000

Eine Auflistung aller bekannten Schwachstellen, kann man unter https://hpi-vdb.de/vulndb durchsuchen. Hier werden Schwachstellen aus dem gesamten Web gesammelt und veröffentlicht. Die Schwachstellen Datenbank will in Zukunft auch eine API für Programm seitige XML-Abfragen einrichten, auf deren Basis sich entsprechende Schutz- und Analyseprogramme erstellen lassen.

Active Directory Replication Status Tool

Das Active Directory Replication Status Tool  liefert wertvolle grafisch aufbereitete Informationen zum Replikationsstatus von Active Directory Domain Controllern.

Netzzugehörigkeit von Handynummern feststellen

Auf http://netz-abfrage.de/ können Sie feststellen zu welchem Netz eine Mobilfunknummer gehört.Seit man das Recht hat seine Rufnummer bei einem Anbieterwechsel mitzunehmen, kann man anhand der Vorwahl nicht mehr feststellen zu welchem Netzbetreiber eine Handynummer gehört. Das kann teuer werden. So habe ich z.B. meine Telefonummer die einmal zu E-Plus gehörte (mit 0177 Vorwahl) zur Telekom mitgenommen. Wenn Sie nun eine E-Plus oder Base Falt-Rate haben und denken Sie können mich ja kostenfrei anrufen, weil Netz intern, ist das nicht korrekt und Sie müssen u.U. hohe Gebühren je nach Länge des Gespräches zahlen. Schauen Sie also lieber erst einmal kostenlos auf der anfangs genannten Internetseite nach.

Seichtes Gewäsch oder qualitativ hochwertiger Text

Ob Sie einen guten Schreibstil an den Tag legen oder nur heiße Luft von sich geben sagt Ihnen die Website http://www.blablameter.de/. Dort kann man auch die ein oder andere Politiker Rede oder auch den Text vom Prof. einmal einfügen. Wenn der Text eine Wertung über 1 ergibt, sollten Sie sich dringen noch einmal Gedanken zum Inhalt machen.

PowerShell OpenBook

Es gibt eine neue Website die kostenlos für Sie ein Buch über PowerShell online bereit stellt.

Das Buch bietet im ersten Teil eine einfache Einführung in die PowerShell, die auch ohne Programmier- oder Skriptkenntnisse leicht verständlich geschrieben ist. (Stand: Vollständig)

Im zweiten Teil befasst sich das Buch mit den Unterschieden zwischen den PowerShell Versionen 1.0, 2.0 und 3.0. Andere Bücher über PowerShell Version 3.0 enthalten zu 95% Informationen die ein gestandener PowerShell 2.0 Skripter bereits kennt. Die Unterschiede sind irgendwo in den 95% gut versteckt. Hier haben Sie alle Neuerungen auf einen Blick!(Stand: 1.0 und 2.0 vollständig, Version 3.0 in der Entstehung)

Der 3. Teil ist voll mit Praxisbeispielen, wie man die Registry, das Filesystem, AD, Hyper-V oder IIS administriert, aber auch Excel steuert oder grafische Oberflächen baut. (Stand: 1/2 fertig)

Der letzte Teil ist der Anhang mit Lösungen zu Kontrollfragen und Aufgabenstellungen, sowie verschiedenen Tabellen z. B. zum -f Operator und einem Glossar. Ein Index darf natürlich auch nicht fehlen. (1/2 fertig)

Sie selbst dürfen gerne Fragen aus der Praxis stellen, deren Lösungen, wenn sie interessant genug sind, dann in den Praxisteil des Buches einfließen.

In PowerShell Remote-Session auf UNC Netzwerkpfade zugreifen

Hat man Windows Remoting konfiguriert und Enter-PSSession als auch Invoke-Command klappen problemlos, fängt man an diese tollen Möglichkeiten rege zu nutzen. Ab und an will man dann aber vielleicht auch einmal aus so einer Remote-Session heraus auf einen Netzwerkpfad in Form von \\Servername\Freigabename zugreifen und man bekommt immer so nette Fehlermeldungen wie:

Get-ChildItem : Cannot find path ‘\\Servername\Freigabename’ because it does not exist.
+ CategoryInfo          : ObjectNotFound: (\\Servername\Freigabename:String) [Get-ChildItem], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Doch der Server ist online und wenn Sie am entfernten Computer lokal angemeldet versuchen darauf zuzugreifen ist alles fein. Was läuft hier schief? Das ist wieder einmal so ein “Sicherheitsfeature”.

Der Quick and Dirty Way ist einfach mit:

net use n: \\Servername\Freigabename

eine Netzlaufwerksverbindung herzustellen (tolle Sicherheit). New-PSDrive und andere Experimente können Sie sich sparen…habe ich alles schon ausprobiert. N: können Sie dann ganz normal ansprechen. Nun der offizielle Weg:

Mittels Gruppenrichtlinien müssen Sie unter Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Remote Management (WINRM) bei den Unterpunkten WINRM Client als auch WINRM Service “Allow CredSSP authentication” aktivieren. Des Weiteren müssen Sie unter Computer Configuration\Policies\Administrative Templates\System\Credentials Delegation die beiden Einträge Allow Delegating Fresh Credentials und noch einmal der Eintrag mit Allow Delegating Fresh Credentials with NTLM-only Server Authentication mit so einem Eintrag schmücken:

wsman/NameDesRechnersAufDenSieSichRemoteDraufSchaltenMöchten

Diese Policy muss an eine OU gehängt werden welche die Computer enthalten von denen aus Sie Enter-PSSession bzw. Invoke-Command ausführen möchten.

Haben Sie keine GPOs (z.B. weil kein AD) dann geht es auch in der PowerShell auf den einzelnen Systemen (aber nicht remote ;-) ) mit:

Enable-WSManCredSSP –Role Server

und

Enable-WSManCredSSP –Role Client -DelegateComputer NameDesServers

Um sich dann mit dem Server zu verbinden, müssen Sie die zusätzlichen Schalter -cred und -auth mit angeben. Zuvor sollten Sie sich allerdings die Anmeldeinformationen in einer Variablen hinterlegen, z.B. so:

$cred=get-credential

Dann können Sie Ihr eigentliches Enter-PSSession in dieser Form ausführen:

Enter-PSSession Remoteserver -cred $cred -auth credssp

Verrückte Welt! Ich nehme net use ;-)

Zuordnungen von Dateinamenerweiterungen von Microsoft-Office reparieren

Wenn Sie z.B. Libre-Office oder andere Programme nach Microsoft Office installieren, die auch Microsoft Office Dokumente öffnen, werden u.U. die Zuordnungen von Dateinamenerweiterungen überschrieben. Wenn Sie beispielsweise auf ein Worddokument (*.doc oder *.docx) doppelt klicken, startet die Libre-Office Textverarbeitung statt Winoword. Wenn Sie wieder Microsoft Office 2007 als Standardanwendung zuordnen möchten, rufen Sie das entsprechende Officeprogramm mit dem Parameter /r auf. Für Word also beispielsweise:

Winword /r

Entsprechend können Sie auch mit Excel, PowerPoint oder Access verfahren.

Alterntives 3D Startmenü für Gnome, KDE und Unity

Glx-Dock / Cairo-Dock kann als hübsche Alternative des Startmenüs in verschiedenen Linuxoberflächen (KDE, Gnome, Unity) eingesetzt werden und das sogar, wenn Ihr Computer gar kein Compiz oder 3-D unterstützt. In den meisten Distributionen ist es sogar als rpm oder deb Paket enthalten. Dabei sollten Sie nicht vergessen auch das Plug-Ins Paket mit zu installieren. Suche Sie einfach in Ihrer Paketverwaltung nach Dock und Sie werden es schon finden. Sie können dabei das bestehende Startmenü entweder komplett löschen, oder auch sogar mehrere Docks zum Startmenü ergänzend hinzufügen. So habe ich beispielsweise auf meiner KDE Oberfläche das normale Startmenü unten und mir am oberen Bildschirmrand zusätzlich eine Cairo-Leiste mit oft genutzten Applikation und ein paar anderen Schnellzugriffen eingebaut. Das Konfigurieren geht ganz einfach mit grafischer Unterstützung von der Hand. Wem das nicht reicht kann in den erweiterten Modus umschalten und noch mehr Details konfigurieren. Wer dann immer noch nicht genug hat, kann natürlich auch zu den Text basierten Konfigurationsdateien greifen. Es läuft stabil, ohne Abstürze oder Hänger. Die Animationen (Feuerwerk, hüpfende Icons u.v.a.m.) sind geschmeidig. Alles in allem: Sehr empfehlenswert.