0
try { 
    $ErrorActionPreference = "..."; #<- tried all settings 
# $myRole = Get-ManagementRole $CustomRole; #<- terminates if role doesnt exist 
    New-ManagementRole $CustomRole -UnScopedTopLevel; #<- same if existent 
} catch { 
    ... #<- never happens 
} 

新しいスコープのないスコープのないロールを作成する必要があります。私の問題は、ロールが既に存在し、そのロールが存在しない場合にスクリプトを終了するため、Get-ManagementRoleを使用してそのロールをチェックできない場合、New-ManagementRoleはスクリプトを終了するだけです^^存在しないロールでGet-ManagementRole例外をキャッチ

両方のコマンドレットは'キャッチ'でキャッチ(!! ??)

まあ、何か提案してください...? (テスト-ManagementRole「MyCustomRole」 - シングル)場合{

:あなたはそれを動作させる必要があるようなあなたのツールがdoesntの仕事のであれば

答えて

0

、 新しいツールを;-)構築する...ここでは、ソリューションのいくつかの種類であります...}

function global:Test-ManagementRole 
{ 
<# 
.SYNOPSIS 
Mit Test-ManagementRole wird überprüft, ob eine Management-Rolle existiert und 
optional, ob sie einem bestimmten Typ entspricht. 
.DESCRIPTION 
Test-ManagementRole (by .rhavin;) überprüft die im System vorhandenen Management- 
Rollen und liefert die Zurück, die den angegeben Kriterien entsprechen. 
.PARAMETER Roles 
Objekt-Array der Management-Rollen. Kann als Pipe übergeben werden. Wird dieser 
Parameter weggelassen, werden alle im System definierten Rollen überprüft. 
.PARAMETER Name 
Der Name der Management-Rolle. Es können Wildcards (z.B. '*mail*') verwendet werden. 
.PARAMETER Type 
Der Typ der Management-Rolle. Es können Wildcards (z.B. '*recover*') verwendet werden. 
.PARAMETER Display 
Wird dieser Switch angegeben, wird ein ausführlicher Text angezeigt, 
ansonsten liefert das Commandlet nur Wahr/Falsch zur weitern Verarbeitung 
zurück. 
.PARAMETER HideFalse 
Wird dieser Switch angegeben, werden nur User, welche zur angegebenen 
Rolle gehören, an die Pipeline weitergegeben bzw. angezeigt. 
.PARAMETER Single 
Wird dieser Switch angegeben, wird der Vorgang bei der ersten Übereinstimmung abgebrochen. 
.EXAMPLE 
Test-ManagementRole -Name *mail* -Type *im* -Display 
Zeigt alle Management-Rollen an, welche 'mail' als Namensbestandteil haben und 
in deren Typ 'im' vorkommt. 
.EXAMPLE 
Test-ManagementRole *Organization* -Single 
Überprüft, ob eine Rolle mit dem Namensbestandteil "organization" existiert. 
#> 

param(
$Name = '*', 
$Type = '*', 
[switch]$Display, 
[switch]$HideFalse, 
[switch]$Single, 
[Parameter(ValueFromPipeline=$true)]$Roles 
) 

begin { 
    if ($PSCmdlet.MyInvocation.PipelinePosition -eq 1) 
    { 
     $cmd = "Get-ManagementRole | Test-ManagementRole"; 
     if ($Name) {$cmd += (' -Name "' + $Name + '"');} 
     if ($Type) {$cmd += (' -Type "' + $Type + '"');} 
     if ($Display) {$cmd += ' -Display';} 
     if ($HideFalse) {$cmd += ' -HideFalse';} 
     if ($Single) {$cmd += ' -Single';} 
     Invoke-Expression $cmd; 
     break; 
    } 
    $colOldTx = $host.UI.RawUI.ForegroundColor; 
    $found = $false; 
    if ($Display) {Echo "";} 
} 

process { 
    if ($Single -and $found) {return $null;} 
    function DoTest 
    { 
     if ($_.Name -like $Name) 
     { 
      if ($_.RoleType -like $Type) {return 2;} 
      return 1; 
     } 
     return 0; 
    } 
    $mytest = DoTest; 
    if ($mytest -eq 2) 
    { 
     $found = $true; 
     if ($Display) 
     { 
      $host.UI.RawUI.ForegroundColor = 'Green'; 
      Write-Host $_.Name 'ist vom Typ' $_.RoleType; 
      return; 
     } 
     return $true 
    } 
    if ($HideFalse -or ($mytest -eq 0)) {return $null} 
    if ($Display) 
    { 
     $host.UI.RawUI.ForegroundColor = 'Red'; 
     Write-Host $_.Name 'ist vom Typ' $_.RoleType; 
     return; 
    } 
    return $false 
} 

end { 
    if ($Display) 
    { 
     if (!($found)) 
     { 
      $host.UI.RawUI.ForegroundColor = 'Red'; 
      Write-Host "Es wurde keine ManagementRolle mit Namen `"$Name`" vom Typ `"$Type`" gefunden."; 
     } 
     echo ""; 
    } 
    $host.UI.RawUI.ForegroundColor = $colOldTx; 
} 

} 
関連する問題