Powershell 3.0 liefert keine anderen Ergebnisse bei Get-Help Get-Service -Detailed oder Get-Help Get-Service -Detailed , dies liegt an der fehlenden Übersetzung der Help Files. Update-Help muss auf englisch ausgeführt werden. Get-Service habe ich hier nur als Beispiel verwendet.
Lösung :
Einmal
Update-Help -UICulture "en-us"
ausführen und man erhällt zwar ein deutsch/englisch Mischmasch aber dafür alle Informationen.
Man möchte in der Powershell ein Logfile schreiben und dies immer mit Datum & Zeit versehen.
Hier meine Funktion dazu :
###################################
# Function to write Logfile
###################################
function write_log ($Inhalt)
{
$FileExists = Test-Path $LogFile
$DateNow = Get-Date -Format "dd.MM.yyyy HH:mm" # Ermittelt das aktuelle Datum mit diesem Syntax 01.10.2013 10:00
$FileInp = $DateNow + ' | ' + $Inhalt # Setzt die Zeile für unser Logfile zusammen
If ($FileExists -eq $True){ # Wenn dir Datei existiert reinschreiben
Add-Content $LogFile -value $FileInp # Zeile hinten an die vorhanden Einträge anhängen
} else {
New-Item $Logfile -type file # Wenn dir Datei nicht existiert anlegen
Add-Content $LogFile -value $FileInp # und reinschreiben
}
}
Die Variable $Logfile muss natürlich definiert werden.
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:
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
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.
“Das einzig sichere System müsste ausgeschaltet, in einem versiegelten und von Stahlbeton ummantelten Raum und von bewaffneten Schutztruppen umstellt sein.”