VBScript einer gewissen Partition zuweisen )
Hi hallo,
ich habe eine Frage. Ich muss auf verschiedenen Notebooks den Bitlockerstatus abfragen. Bei den meisten ist die C Partition verschlüsselt (ist aber auch nicht 100%), die D Partition ist in der Regel unverschlüsselt. Um rauszufinden bei welchen Maschinen das der Fall ist muss ich auf jedenfall auf beide Partitionen prüfen.
Ich habe das bisher so realsiert: WMI Abfrage auf den Verschlüsselungsgrad, prüfe ob verschlüsselungsgrad < 100, dann schreib rechnername + laufwerk in eine txt und lege sie an ort xyz ab.
Das funktioniert soweit auch, allerdings hab ich bisher keine Ahnung, wie ich das jetzt für beide Partition hinkriege.
Die WMI Ausgabe wird einfach für beide Partitionen durchgeführt, allerdings nicht einzelnd deklariert. Wenn ich dem Script dann sage prüfe bitte ob die Verschlüsselung vorhanden ist, schnappt er sich nur den zuletzt geprüften Laufwerksbuchstaben.
C überspringt er dann logischerweise. Ich müsste es also irgendwie hinbekommen, dass die Abfrage 1x für C und 1x für D ausgeführt wird ... und da komm ich aktuell leider nicht weiter das was ich habe, poste ich mal unten, hat jmd ne Idee ??
'Hinweis: Script benötigt Administratorrechte!
strComputer = "."
Const pro = 100 'Fester Wert für maximalen Verschlüsselungsgrad
Dim fso, MyFile
Set wshShell = WScript.CreateObject ("Wscript.Shell")
strComputerName = wshShell.ExpandEnvironmentStrings( "%COMPUTERNAME%" )
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2\Security\MicrosoftVolumeEncryption")
Set colItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_EncryptableVolume",,48)
For Each objItem in colItems
protection= ProtectionStatus 'Aktuellen Verschlüsseungsgrad auslesen
Next
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2\Security\MicrosoftVolumeEncryption")
Set strLW = objWMIService.ExecQuery( _
"SELECT * FROM Win32_EncryptableVolume",,48)
For Each objItem in strLW
strLW = objItem.DriveLetter 'Laufwerksbuchstaben auslesen
if protection < pro then 'Prüfung aktueller Status gegen maximalen Verschlüsselungswert
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile("\\mgmt\Verteiler\log\" &strComputerName & ".txt", true) 'Dateiname besteht aus Computernamen, richtigen Pfad angeben!
MyFile.WriteLine ("Das Laufwerk " &strLW & " auf " &strComputername & " ist nicht verschluesselt.") 'schreibt Laufwerk und Maschinenname in Datei
MyFile.Close
end if
next
ich habe eine Frage. Ich muss auf verschiedenen Notebooks den Bitlockerstatus abfragen. Bei den meisten ist die C Partition verschlüsselt (ist aber auch nicht 100%), die D Partition ist in der Regel unverschlüsselt. Um rauszufinden bei welchen Maschinen das der Fall ist muss ich auf jedenfall auf beide Partitionen prüfen.
Ich habe das bisher so realsiert: WMI Abfrage auf den Verschlüsselungsgrad, prüfe ob verschlüsselungsgrad < 100, dann schreib rechnername + laufwerk in eine txt und lege sie an ort xyz ab.
Das funktioniert soweit auch, allerdings hab ich bisher keine Ahnung, wie ich das jetzt für beide Partition hinkriege.
Die WMI Ausgabe wird einfach für beide Partitionen durchgeführt, allerdings nicht einzelnd deklariert. Wenn ich dem Script dann sage prüfe bitte ob die Verschlüsselung vorhanden ist, schnappt er sich nur den zuletzt geprüften Laufwerksbuchstaben.
C überspringt er dann logischerweise. Ich müsste es also irgendwie hinbekommen, dass die Abfrage 1x für C und 1x für D ausgeführt wird ... und da komm ich aktuell leider nicht weiter das was ich habe, poste ich mal unten, hat jmd ne Idee ??
'Hinweis: Script benötigt Administratorrechte!
strComputer = "."
Const pro = 100 'Fester Wert für maximalen Verschlüsselungsgrad
Dim fso, MyFile
Set wshShell = WScript.CreateObject ("Wscript.Shell")
strComputerName = wshShell.ExpandEnvironmentStrings( "%COMPUTERNAME%" )
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2\Security\MicrosoftVolumeEncryption")
Set colItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_EncryptableVolume",,48)
For Each objItem in colItems
protection= ProtectionStatus 'Aktuellen Verschlüsseungsgrad auslesen
Next
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2\Security\MicrosoftVolumeEncryption")
Set strLW = objWMIService.ExecQuery( _
"SELECT * FROM Win32_EncryptableVolume",,48)
For Each objItem in strLW
strLW = objItem.DriveLetter 'Laufwerksbuchstaben auslesen
if protection < pro then 'Prüfung aktueller Status gegen maximalen Verschlüsselungswert
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile("\\mgmt\Verteiler\log\" &strComputerName & ".txt", true) 'Dateiname besteht aus Computernamen, richtigen Pfad angeben!
MyFile.WriteLine ("Das Laufwerk " &strLW & " auf " &strComputername & " ist nicht verschluesselt.") 'schreibt Laufwerk und Maschinenname in Datei
MyFile.Close
end if
next
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 193865
Url: https://administrator.de/contentid/193865
Ausgedruckt am: 22.11.2024 um 16:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo daniel61, willkommen im Forum.
Da du die Textdatei innerhalb der For Each Schleife immer wieder neu erstellst bzw überschreibst, kannst du nur jeweils den letzten Wert darin finden.
Ergo:
Das Instanziieren des fso Objekts und das Öffnen der Datei vor vor die Schleife setzen, das Schließen der Datei dahinter.
Grüße
rubberman
Da du die Textdatei innerhalb der For Each Schleife immer wieder neu erstellst bzw überschreibst, kannst du nur jeweils den letzten Wert darin finden.
Ergo:
Das Instanziieren des fso Objekts und das Öffnen der Datei vor vor die Schleife setzen, das Schließen der Datei dahinter.
Grüße
rubberman