Windows 2008 / 7 - Powershell alle Rechner mit Betreibssystem in eine Datei

Problem :

Man möchte eine Übersicht über alle im AD vorhandenen Rechner mit Betriebsystem und Servicepack

Lösung :

Dieses Skript exportiert alle Rechner mit OS und SP in eine Textdatei die einfach in Excel importiert werden kann.

$ldapSearcher = new-object directoryservices.directorysearcher;
$ldapSearcher.filter = "(objectclass=computer)";
$computers = $ldapSearcher.findall();
$pcs = "Name,Os,SP";
foreach ($c in $computers) {
  $pc.Name=$c.properties["cn"];
  $pc.OS=$c.properties["operatingsystem"];
  $pc.SP=$c.properties["operatingsystemservicepack"];
  $pcs = $pcs + "`r`n" + $pc.Name + "," + $pc.OS + "," + $pc.SP;
}
echo $pcs | Out-File C:\TEMP\Rechner.txt -encoding ASCII


Der Pfad kann einfach abgeändert werden C:\TEMP\Rechner.txt durch den Wunschpfad ersetzen.

Es gibt natürlich auch andere Möglichkeiten :

Nils Kaczenski hat einige andere Varianten auf faq-o-matic.net vorgestellt
Meine Variante ist eine leicht abgewandelte Form des von Bernd Eckenfels erstellten Skripts

Windows-Firewall: WMI für Firewall

Problem
Man möchte mittels WMI auf einen PC zugreifen wir jedoch von der Firewall blockiert.
Die Firewall-Konfiguration stellt den WMI-Dienst nicht zur Verfügung um diesen freizugeben.

Lösung
Die einfachste Möglichkeit die Freigabe zu aktivieren stellt der netsh-Befehl zur Verfügung.
Einfach in der Shell des Remote-Computers folgenden Befehl ausführen:

netsh firewall set service RemoteAdmin enable


Quelle: poweradmin.com: Enable WMI (Windows Management Instrumentation)

WSH/WMI: USB-Stick (Removable Devices) ermiteln

Problem:
Um z.B. ein Backup-Lösung auf einen USB-Wechseldatenträger (Stick) zu ermöglichen, möchte man prüfen, ob ein "Removable Device" angeschlossen ist.
außerdem soll geprüft werden, ob es mehr als ein USB-Device gibt.

Lösung:
Das nachfolgende Skript überprüft per WMI, ob "Removable Devices" angeschlossen sind. Sollten welche gefunden sein, wird die Anzahl, der Volumename und der Laufwerksbuchste davon ermittelt.

Option Explicit

Dim WshShell
Dim strComputer, objWMIService, colItems, objItem
Dim USB, USize, UName, UAnzahl, Antwort
Dim BackupDir, UDesktop, UDateien, UFavoriten

set WshShell = WScript.CreateObject("WScript.Shell")

'Setzt USB-Variablen zurück
USB =""
UAnzahl = 0
USize = 0
UName = ""

'Ermittlung von Anzahl und Eigenschaften Wechseldatenträger
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk")

For Each objItem in colItems

If objItem.DriveType = 2 Then 
USB = objItem.Name & "\"
UName = objItem.VolumeName 
USize = Int(objItem.FreeSpace /1048576)
UAnzahl = UAnzahl + 1 'Anzahl WEchselmedien ermitteln
End if

Next

'Überprüft, ob mehr als ein USB-Stick angesteckt ist
If UAnzahl > 1 Then
MsgBox "Mehrere USB-Sticks gefunden!" & vbCRLF & "Bitte nur Sicherungs-Stick einstecken und Sicherung neu starten.", vbOKOnly + vbCritical, "Mehrere USB-Sticks gefunden"
WScript.Quit
End if

'Überprüfen ob ein USB-Stick angesteckt ist
If USB = "" Then 
MsgBox "KEIN USB-Stick gefunden!" & vbCrLf & "Bitte überprüfen und Sicherung neu starten!", vbOKOnly + vbCritical, "USB-Fehler"
WScript.Quit
End If

CreateBackup.exe erstellt ein Backup eines Ordner

CreateBackup.exe erstellt ein Backup eines Ordner und zippt die Zieldatei nach einem eingestellten Muster


Hilfe zu CreateBackup.exe

/H Zeigt diese Hilfe an
/Q: Definiert die Quelle der Dateien
/Z: Definiert das Ziel des Backups
/N: Definiert das Muster des Dateinamens

/N:DT DT steht für DateTime (Standard)
/N:D D steht für Datum

Beispiele :

Erstellt eine Backupdatei mit dem Namen TagMonatJahr_StundeMinuteSekunde.zip

CreateBackup.exe /Q:"C:\Quelle Test" /Z:C:\test /N:DT

Erstellt eine Backupdatei mit dem Namen TagMonatJahr.zip

CreateBackup.exe /Q:C:\Quelle /Z:C:\test /N:D



Erstellt von Christopher Pope | NO WARRANTY !! | Freeware


Download : CreateBackup.exe

Source Code : nur für registrierte Mitglieder

Windows XP - WMI Abfrage auf Win32_Product ( Error 80041001 ) funktioniert nicht

Problem :

Sie möchten über WMI die installierte Software ermitteln , die hierzu gehörige Klasse Win32_Product läuft allerdings in den Fehler ( 80041001 ) , die Lösung hierzu ist ein Patch von Microsoft den man allerdings direkt anfordern muss. Das Problem selbst ist bei Windows XP und Windows Server 2003 bekannt.

Lösung :

Installieren des von Microsoft bereitgestellten Patches für das jeweilige System.

Download des Patches für Windows Server 2003 : http://support.microsoft.com/kb/972189
Download des Patches für Windows XP : http://support.microsoft.com/kb/970553
WMI Win32_Product Hotfix für Windows XP

Outlook VBA: Importieren von mehreren VCF-Dateien in Outlook-Kontakte

Problem:
Sie haben viele Kontakte als VCF-Dateien gespeichert und möchten diese alle in Ihre Outlook-Kontakte importieren. Generell kann man nur eine einzelne VCF-Datei öffrenn und diese dann in den Kontakten speichern, was eventuell sehr aufwendig sein kann, wenn es sich um einige hundert Kontakte handelt.

Lösung:
Hier finden Sie ein Skript, dass im Outlook-VBA verfasst ist, welches alle VCF-Dateien, die im Ordner "C:\VCARDS" liegen, automatsich in die Outlook-Kontakte importiert.
So fügen Sie den Code in Outlook hinzu:

- Einfach im Outlook ALT+F11 drücken um den VBA-Editor zu öffnen
- Navigieren Sie links in der Baumstruktur zu "Projekt1 -> Microsoft Outlook Objekt -> ThisOutlookSession"
- Doppelklicken Sie "This OutlookSession" um die Code-Übersicht zu öffnen
- Hier kopieren Sie das untenstehende Skript hinein
- Starten Sie das Skript mittels klick auf den grünen Pfeil oben im Menüband


Hinweis: Die VCF-Dateien werden in den persönlichen Kontakte-Ordner gespeichert. Bitte diesen vorher sichern und leeren, wenn man ein vermischen der Kontakte nicht wünscht.
Selbstverständlich kann der Pfad zu den VCF-Dateien im Skript angepaßt werden.
Ich selbst habe damit 880 VCF-Dateien in mein Outlook problemlos importieren können! Zuvor hatte ich es mit einigen Freetools vergeblich versucht!


Sub OpenSaveVCard()

Set fso = CreateObject("Scripting.FileSystemObject")
Set fsDir = fso.GetFolder("C:\VCARDS")

For Each fsFile In fsDir.Files

strVCName = "C:\VCARDS\" & fsFile.Name
Set objOL = CreateObject("Outlook.Application")
Set colInsp = objOL.Inspectors
If colInsp.Count = 0 Then

Set objWSHShell = CreateObject("WScript.Shell")
objWSHShell.Run Chr(34) & strVCName & Chr(34)
DoEvents
Set colInsp = objOL.Inspectors
If Err = 0 Then

Do Until colInsp.Count = 1
DoEvents
Loop

colInsp.Item(1).CurrentItem.Save
colInsp.Item(1).Close olDiscard
Set colInsp = Nothing
Set objOL = Nothing
Set objWSHShell = Nothing

End If

End If

Next

End Sub


Quelle des Skripts: Tech Support Guy Forum: Import multiple .vCard files in Outlook
“Das einzig sichere System müsste ausgeschaltet, in einem versiegelten und von Stahlbeton ummantelten Raum und von bewaffneten Schutztruppen umstellt sein.”
Gene Spafford (Sicherheitsexperte)