2016-11-14 2 views
0

J'écris un script pour activer la case à cocher Appliquer l'accès au niveau du composant vérifie et coche la case avant le rôle.PowerShell pour activer l'ensemble de boîtes de sécurité COM +

C'est le code que j'ai jusqu'à présent (changement au nom de la COM + app):

$comAdmin = New-Object -ComObject COMAdmin.COMAdminCatalog 
$apps = $comAdmin.GetCollection('Applications') 
$apps.Populate() 
$targetApp = '<appname>' 
$app = $apps | Where-Object -FilterScript { 
    $_.Name -eq $targetApp 
} 
$components = $apps.GetCollection('Components',$app.key) 
$components.Populate() 

foreach ($component in $components) 
{ 
    $componentName = $component.Name 
    $componentID = $component.Value('CLSID') 
} 



$accesschecks = $component.Value('ComponentAccessChecksEnabled') 
$component.Value('ComponentAccessChecksEnabled') = $true 
$components.SaveChanges() 




$comAdmin = New-Object -ComObject COMAdmin.COMAdminCatalog 
$apps = $comAdmin.GetCollection('Applications') 
$apps.Populate() 

$app = $apps|Where-Object -FilterScript { 
    $_.Name -eq $targetApp 
} 
$components = $apps.GetCollection('Components', $app.Key) 
$components.Populate() 
$components.GetCollection('RolesForComponent', $component.Key) 

foreach ($component in $components) 
{ 
    $component.Value('ComponentAccessChecksEnabled') = $true 
    $component.value('RolesForComponentEnabled') = #t 
    '{0,-30}{2,-10}{1}{1}' -f $component.Name, $component.Value('CLSID'), $component.Value('ComponentAccessChecksEnabled'), $component.Key 

} 
$components.SaveChanges() 

La première partie des scripts fonctionne, il permet à la case à cocher. Mais la deuxième partie ne vérifie pas la case à cocher avant le rôle. Il ressemble maintenant à ceci:

enter image description here

J'ai besoin peu d'aide pour obtenir le script à travailler pour cocher la case. Des idées?

Répondre

0

Vérifiez s'il est possible d'activer la case à cocher via le registre. Si vous avez déjà le ClassId de l'objet COM, vous pouvez rechercher le registre après. Si elle est stockée dans le registre, vous pouvez changer la clé via Set-ItemProperty.

Espérons que ça aide.