blackhawk17
Goto Top

Powershell Get ADOptional Feature auslesen ob dies installiert wurde

Guten Tag,

ich möchte gerne über ein Skript auslesen ob das Feature Privileged Access Management Feature installiert wurde.

Angefangen habe ich mit:

$Feature = Get-ADOptionalFeature -Identity 'Privileged Access Management Feature'   

if ($Feature -eq 'Privileged Access Management Feature') {  

$Result = [System.Windows.Forms.MessageBox]::Show("Das Feature XYZ wurde nicht gefunden, das Programm wird nicht fortgeführt!","Frage an den Benutzer",0)  

}

elseif ($Feature -eq 'Privileged Access Management Feature') {  


}


Funktioniert leider nicht so wirklich, da ich den Rückgabewert nicht so richtig bekomme ob das Feature nun installiert wurde oder nicht .

Habt Ihr da evtl. eine Idee zu?

Vielen dank

Content-Key: 375264

Url: https://administrator.de/contentid/375264

Ausgedruckt am: 29.03.2024 um 13:03 Uhr

Mitglied: 136166
Lösung 136166 27.05.2018 aktualisiert um 13:07:44 Uhr
Goto Top
If((Get-ADOptionalFeature -Identity 'Privileged Access Management Feature').EnabledScopes.Count -gt 0){  
   "Aktiviert"  
}Else{
    "Nicht aktiviert"  
}
Wenn man sich einfach mal mit Format-List die Eigenschaften hätte anzeigen lassen, dann hätte man es auch selbst ohne Thread gelöst...
Mitglied: blackhawk17
blackhawk17 27.05.2018 um 13:12:50 Uhr
Goto Top
Vielen Dank für deine Lösung.

Ich bin auf dem EnabledScopes.Count nicht gekommen face-sad
Mitglied: erikro
erikro 27.05.2018 um 13:29:19 Uhr
Goto Top
Moin,

die Powershell ist objektorientiert. Mit dem Befehl rufst Du ein Objekt auf, das Du in eine Objektreferenz namens $feature schreibst. Willst Du nun eine Eigenschaft des Objekts mit einem String vergleichen, dann musst Du die Eigenschaft nennen. Beispiel:

PS C:\WINDOWS\system32> $printer = Get-Printer -name Fax
PS C:\WINDOWS\system32> $printer | Format-List
Name                         : Fax
ComputerName                 :
Type                         : Local
ShareName                    :
PortName                     : SHRFAX:
DriverName                   : Microsoft Shared Fax Driver
Location                     :
Comment                      :
SeparatorPageFile            :
PrintProcessor               : winprint
Datatype                     : RAW
Shared                       : False
Published                    : False
DeviceType                   : Print
PermissionSDDL               :
RenderingMode                :
KeepPrintedJobs              : False
Priority                     : 1
DefaultJobPriority           : 0
StartTime                    : 1380
UntilTime                    : 1380
PrinterStatus                : Normal
JobCount                     : 0
DisableBranchOfficeLogging   :
BranchOfficeOfflineLogSizeMB :
WorkflowPolicy               :

Hier siehst Du, was passiert, wenn die Objektrefenz ohne Nennung einer Eigenschaft aufgerufen wird. Sie gibt das ganze Objekt mit allen Eigenschaften zurück. In der Standardausgabe auf der Shell sind nur einige zu sehen. Es sind aber alle da. (Die Pipe auf format-list dient nur dazu, dass das hier halbwegs vernünftig aussieht. Die Standardausgabe wird beim Kopieren verwürfelt.)

PS C:\WINDOWS\system32> $printer.name
Fax

Hier frage ich nach einer bestimmten Eigenschaft. Ich will nur den Namen. Also hänge ich die gewünschte Eigenschaft einfach mit Punkt getrennt an die Objektreferenz an und nur diese Eigenschaft wird zurückgegeben.

Willst Du wissen, wie die Eigenschaften heißen, dann pipest Du die Ausgabe auf

select-object *

Das sieht dann in meinem Beispiel so aus:

PS C:\WINDOWS\system32> $printer | Select-Object *


RenderingMode                :
PrinterStatus                : Normal
Type                         : Local
DeviceType                   : Print
Caption                      :
Description                  :
ElementName                  :
InstanceID                   :
CommunicationStatus          :
DetailedStatus               :
HealthState                  :
InstallDate                  :
Name                         : Fax
OperatingStatus              :
OperationalStatus            :
PrimaryStatus                :
Status                       :
StatusDescriptions           :
BranchOfficeOfflineLogSizeMB :
Comment                      :
ComputerName                 :
Datatype                     : RAW
DefaultJobPriority           : 0
DisableBranchOfficeLogging   :
DriverName                   : Microsoft Shared Fax Driver
JobCount                     : 0
KeepPrintedJobs              : False
Location                     :
...

Das geht noch zwei Bildschirme weiter.

Du musst also bei Deinem Vergleich die Eigenschaft mitnennen.

if ($Feature.Identity -eq 'Privileged Access Management Feature')  

Wobei ich nicht weiß, ob .Identity richtig ist. Das musst Du jetzt selbst herausfinden. ;)

hth

Erik