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:
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 375264
Url: https://administrator.de/contentid/375264
Ausgedruckt am: 17.11.2024 um 01:11 Uhr
3 Kommentare
Neuester Kommentar
If((Get-ADOptionalFeature -Identity 'Privileged Access Management Feature').EnabledScopes.Count -gt 0){
"Aktiviert"
}Else{
"Nicht aktiviert"
}
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:
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.)
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
Das sieht dann in meinem Beispiel so aus:
Das geht noch zwei Bildschirme weiter.
Du musst also bei Deinem Vergleich die Eigenschaft mitnennen.
Wobei ich nicht weiß, ob .Identity richtig ist. Das musst Du jetzt selbst herausfinden. ;)
hth
Erik
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