# エンタープライズロールコマンド

#### 使い方 <a href="#usage-4" id="usage-4"></a>

```bash
enterprise-role command [--options] OR er command [--option]
```

**別名:** `er`

#### コマンド <a href="#commands-2" id="commands-2"></a>

エンタープライズロールコマンドで利用できるコマンドは次のとおりです。

| コマンド                                        | 説明                         | 別名  |
| ------------------------------------------- | -------------------------- | --- |
| [`view`](#enterprise-role-view)             | エンタープライズロールを表示します。         | `v` |
| [`add`](#enterprise-role-add)               | エンタープライズロールを作成します。         | `a` |
| [`edit`](#enterprise-role-edit)             | エンタープライズロールを編集します。         | `e` |
| [`delete`](#enterprise-role-delete)         | エンタープライズロールを削除します。         |     |
| [`admin`](#enterprise-role-admin)           | エンタープライズ管理者ロールを管理します。      |     |
| [`membership`](#enterprise-role-membership) | エンタープライズロールのメンバーシップを管理します。 | `m` |
| [`copy`](#enterprise-role-copy)             | エンフォースメント付きでロールをコピーします。    |     |

### エンタープライズロール表示コマンド (view) <a href="#enterprise-role-view" id="enterprise-role-view"></a>

エンタープライズロールを表示します。

<details>

<summary>Dotnet CLI</summary>

**コマンド:** `enterprise-role name`

**例:**

```
My Vault> enterprise-role view "IT Admin" OR er view "IT Admin"
```

</details>

<details>

<summary>DotNet SDK</summary>

`RoleData` からデータを取得できます。

<br>

**関数:** `RoleData`

```csharp
 public interface IRoleDataManagement
```

**例:**

```csharp
await roleData.Enterprise.Load();
```

</details>

<details>

<summary>PowerCommander</summary>

**コマンド:** `Get-KeeperEnterpriseRole`

**構文:**

```powershell
Get-KeeperEnterpriseRole [[-Role] <long>] [<CommonParameters>]
```

**別名:** `ker`

**パラメータ:**

* `-Name` - ロール名 (完全一致)
* `-Filter` - 検索用フィルター文字列
* `-Format` - 出力形式
* `-Output` - 出力先ファイル名

**例:**

```powershell
# すべてのロールを一覧
PS> Get-KeeperEnterpriseRole
ker

# 特定のロールを取得
PS> Get-KeeperEnterpriseRole -Role 123453e

# ロールを検索
PS> Get-KeeperEnterpriseRole -Filter Test1
```

**コマンド:** `Get-KeeperEnterpriseRoleUsers` / `Get-KeeperEnterpriseRoleTeams`

ロールのメンバーを取得します。

**構文:**

```powershell
Get-KeeperEnterpriseRoleUsers [-Role] <long> [<CommonParameters>]
Get-KeeperEnterpriseRoleTeams [-Role] <long> [<CommonParameters>]
```

**別名:** `keru`, `kert`

**パラメータ:**

* `-Role` - ロールID (必須)

**例:**

```powershell
# ロール内のユーザーを取得
Get-KeeperEnterpriseRoleUsers -Role 12345
keru 12345

# ロール内のチームを取得
Get-KeeperEnterpriseRoleTeams -Role 12345
kert 12345
```

</details>

<details>

<summary>Python CLI</summary>

**コマンド:** `enterprise-role view`

**パラメータ:**

`role` - ロール名またはID (必須)

**フラグ:**

* `-v`, `--verbose` - 詳細情報を出力する
* `--format` - 出力形式: `json`
* `--output` - 出力ファイル名

</details>

<details>

<summary>Python SDK</summary>

**関数:**

```python
if isinstance(role_name, int):
    role = enterprise_data.roles.get_entity(role_name)
elif isinstance(role_name, str):
    if role_name.isnumeric():
        role = enterprise_data.roles.get_entity(int(role_name))
    if not role:
        role = [x for x in enterprise_data.roles.get_all_entities() if x.name.lower() == role_name.lower()]
```

</details>

### エンタープライズロール追加コマンド (add) <a href="#enterprise-role-add" id="enterprise-role-add"></a>

エンタープライズロールを作成します。

<details>

<summary>Dotnet CLI</summary>

**コマンド:** `enterprise-role add "Role Name" --node "Node Name" OR er add "Role Name" --node "Node Name"`

**例:**

```
My Vault> enterprise-role add "Help Desk" --node "IT Department"
OR 
er add "Help Desk" --node "IT Department"
```

</details>

<details>

<summary>DotNet SDK</summary>

**関数:** `CreateRole`

```
Task<EnterpriseRole> CreateRole(string roleName, long nodeId, bool newUserInherit);
```

**例:**

```
await roleData.CreateRole(arguments.Role, nodeId, arguments.NewUser);
```

</details>

<details>

<summary>PowerCommander</summary>

**コマンド:** `New-KeeperEnterpriseRole`

**別名:** `keradd`

**パラメータ:**

<table><thead><tr><th width="163.71875">パラメータ</th><th width="128.453125">必須</th><th>説明</th></tr></thead><tbody><tr><td><code>-Role</code></td><td>はい</td><td>ロール名。複数指定できます。</td></tr><tr><td><code>-ParentNode</code></td><td>いいえ</td><td>親ノード名またはID。省略時はルートノードです。</td></tr><tr><td><code>-NewUser</code></td><td>いいえ</td><td>新規ユーザーにロールを割り当てます。値: <code>on</code>、<code>off</code>。既定: <code>off</code>。</td></tr><tr><td><code>-VisibleBelow</code></td><td>いいえ</td><td>子ノードからロールを表示可能にします。値: <code>on</code>、<code>off</code>。既定: <code>off</code>。</td></tr><tr><td><code>-Enforcement</code></td><td>いいえ</td><td><code>KEY:VALUE</code> 形式のロールエンフォースメント。繰り返し指定できます。一覧は<a href="/pages/-McBBhPRYGc9uLwMe71Z#changing-role-enforcements-and-privileges">こちら</a>です。</td></tr><tr><td><code>-Force</code></td><td>いいえ</td><td>ロール名が既に存在するときに確認をスキップします。</td></tr></tbody></table>

**例:**

```powershell
PS> New-KeeperEnterpriseRole -ParentNode test_node_updated2 -Role PowerShellTest -NewUser on -VisibleBelow on -Enforcement "RESTRICT_IMPORT:True","RESTRICT_EXPORT:True"
Role with name "PowerShellTest" already exists. Do you want to create a new one? (Yes/No): yes
Role "PowerShellTest" created successfully (ID: 894448862131)

Id              DisplayName    NodeName           NewUserInherit Users Teams IsAdminRole
--              -----------    --------           -------------- ----- ----- -----------
894448862131    PowerShellTest test_node_updated2       X          0     0        -
```

</details>

<details>

<summary>Python CLI</summary>

**コマンド:** `enterprise-role add`

**パラメータ:**

`role` - ロール名。繰り返し指定可 (必須)

**フラグ:**

* `--parent` - 親ノード名またはID
* `--new-user` - 新規ユーザーにこのロールを割り当てる: `on` または `off`
* `--visible-below` - すべてのノードに表示する。`add` のみ: `on` または `off`
* `--enforcement` - ロールエンフォースメントを設定する。形式: `KEY:VALUE`。繰り返し指定可。
* `-f`, `--force` - 確認プロンプトを表示しない

</details>

<details>

<summary>Python SDK</summary>

**関数:**

```python
from keepersdk.enterprise import batch_management,  enterprise_management

roles = list['追加するロール名']
role_lookup: Dict[str, Union[enterprise_types.Role, List[enterprise_types.Role]]] = {}

for role in e_data.roles.get_all_entities():
    role_lookup[str(role.role_id)] = role
    if role.name:
        role_name = role.name.lower()
        n = role_lookup.get(role_name)
        if n is None:
            role_lookup[role_name] = role
        elif isinstance(n, list):
            n.append(role)
        elif isinstance(n, enterprise_types.Role):
            role_lookup[role_name] = [n, role]
            
role_names: Optional[Dict[str, str]] = None
if isinstance(roles, list):
    role_names = {x.lower(): x for x in roles}
    for role_key, role_name in list(role_names.items()):
        r = role_lookup.get(role_key)
        if r is not None:
            skip = False
            if isinstance(r, enterprise_types.Role):
                r = [r]
            for r1 in r:
                if r1.node_id == parent_node_id:
                    logging.info('Role \"%s\" already exists', r1.name)
                    skip = True
                    break
            if skip:
                del role_names[role_key]
                
roles_to_add = [enterprise_management.RoleEdit(
    role_id=enterprise_loader.get_enterprise_id(), name=x, node_id=parent_node_id,
    new_user_inherit=apply_to_new_user, visible_below=visible_to_all_nodes)
    for x in role_names.values()]
batch = batch_management.BatchManagement(loader=enterprise_loader, logger=enterprise_manager_logger)
batch.modify_roles(to_add=roles_to_add)
batch.apply()
```

</details>

### エンタープライズロール編集コマンド (edit) <a href="#enterprise-role-edit" id="enterprise-role-edit"></a>

エンタープライズロールを編集します。

<details>

<summary>DotNet CLI</summary>

**コマンド:** `enterprise-role update`

**使い方:** `enterprise-role update role-name --flags=values`

**フラグ:**

<table><thead><tr><th width="168.7578125">パラメータ</th><th>説明</th></tr></thead><tbody><tr><td><code>-new-user</code></td><td>ノード内の新規ユーザー向け既定ロールにします。</td></tr><tr><td><code>-visible-below</code></td><td>子ノードへのロール表示を設定します。</td></tr><tr><td><code>-new-role-name</code></td><td>新しいロール表示名です。</td></tr></tbody></table>

**例:**

```console
My Vault> enterprise-role update Analyst --new-user=true --visible-below=true
Role "Analyst" updated successfully.
        Role Name:  Analyst
    Visible Below:  X
 New User Inherit:  X   

My Vault> enterprise-role update Test1 --new-user=false --visible-below=false
Role "Test1" updated successfully.
        Role Name:  Test1
    Visible Below:  -    
 New User Inherit:  -    
```

</details>

<details>

<summary>DotNet SDK</summary>

**関数:** `UpdateRole`

**使い方:**

```csharp
public async Task<EnterpriseRole> UpdateRole(EnterpriseRole role, bool? newUserInherit = null, bool? visibleBelow = null, string displayName = null)
```

**パラメータ:**

<table><thead><tr><th width="227.4921875"></th><th>説明</th></tr></thead><tbody><tr><td><code>newUserInherit</code></td><td>編集中のロールを既定ロールにします。</td></tr><tr><td><code>visibleBelow</code></td><td>子ノードへのロール表示を設定します。<code>null</code> の場合は変更しません。</td></tr><tr><td><code>displayName</code></td><td>新しいロール表示名です。<code>null</code> の場合は変更しません。</td></tr></tbody></table>

\
**例:**

```csharp
roleData.UpdateRole(
                updateParams['newUserInherit'],
                updateParams['visibleBelow'],
                updateParams['displayName']
            )
```

</details>

<details>

<summary>PowerCommander</summary>

**コマンド:** `Set-KeeperEnterpriseRole`

**使い方:** `Set-KeeperEnterpriseRole <Role Name> -NewUserInherit $true`

**オプション:**

<table><thead><tr><th width="168.7578125">パラメータ</th><th>説明</th></tr></thead><tbody><tr><td><code>-Role</code></td><td>ロール名、ID、または EnterpriseRole オブジェクト (必須) です。</td></tr><tr><td><code>-NewUserInherit</code></td><td>ノード内の新規ユーザー向け既定ロールにします。</td></tr><tr><td><code>-VisibleBelow</code></td><td>子ノードへのロール表示を設定します。</td></tr><tr><td><code>-NewDisplayName</code></td><td>新しいロール表示名です。</td></tr></tbody></table>

**例:**

```powershell
PS> Set-KeeperEnterpriseRole Test1 -NewUserInherit $true
Role "Test1" updated successfully

Id              DisplayName NodeName   NewUserInherit Users Teams IsAdminRole
--              ----------- --------   -------------- ----- ----- -----------
894122414228537 Test1       Metronlabs       X          1     0        -
```

</details>

<details>

<summary>Python CLI</summary>

**コマンド:** `enterprise-role edit`

**パラメータ:**

`role` - ロール名またはID。繰り返し指定可 (必須)

**フラグ:**

* `--parent` - 親ノード名またはID
* `--name`, `--displayname` - ロール表示名を設定する
* `--new-user` - 新規ユーザーにこのロールを割り当てる: `on` または `off`
* `--visible-below` - すべてのノードに表示する: `on` または `off`
* `--enforcement` - ロールエンフォースメントを設定する。形式: `KEY:VALUE`。繰り返し指定可。

</details>

<details>

<summary>Python SDK</summary>

**関数:**

```python
from keepersdk.enterprise import batch_management,  enterprise_management

if isinstance(role_name, int):
    role = enterprise_data.roles.get_entity(role_name)
elif isinstance(role_name, str):
    if role_name.isnumeric():
        role = enterprise_data.roles.get_entity(int(role_name))
    if not role:
        role = [x for x in enterprise_data.roles.get_all_entities() if x.name.lower() == role_name.lower()]

role_list = [role]
batch = batch_management.BatchManagement(loader=enterprise_loader, logger=enterprise_manager_logger)

roles_to_update = [enterprise_management.RoleEdit(
    role_id=x.role_id, name=role_name, node_id=parent_id,
    new_user_inherit=new_user_inherit, visible_below=visible_below)
    for x in role_list]
batch.modify_roles(to_update=roles_to_update
batch.apply()
```

</details>

### エンタープライズロール削除コマンド (delete) <a href="#enterprise-role-delete" id="enterprise-role-delete"></a>

エンタープライズロールを削除します。

<details>

<summary>DotNet CLI</summary>

**コマンド:** `enterprise-role delete <"Role name"> OR er delete <"Role name">`

**例:**

```
My Vault> enterprise-role delete "Help Desk"
```

</details>

<details>

<summary>DotNet SDK</summary>

**関数:** `DeleteRole()`

**使い方:**

```csharp
public async Task DeleteRole(EnterpriseRole role)
```

**例:**

```csharp
 await roleData.DeleteRole(role)
```

</details>

<details>

<summary>PowerCommander</summary>

**コマンド:** `Remove-KeeperEnterpriseRole`

**別名:** `kerdel`

**パラメータ:**

* `-Force` - 確認プロンプトのスキップ

**例:**

```powershell
PS> Remove-KeeperEnterpriseRole PowerShellTest                

Confirm
Are you sure you want to perform this action?
Performing the operation "Delete Enterprise Role" on target "Role "PowerShellTest" (ID: 894448414228628)".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): A
Role "PowerShellTest" (ID: 894448414228628) deleted successfully
```

</details>

<details>

<summary>Python CLI</summary>

**コマンド:** `enterprise-role delete`

**パラメータ:**

* `role` - ロール名またはID。繰り返し指定可 (必須)

</details>

<details>

<summary>Python SDK</summary>

**関数:**

```python
from keepersdk.enterprise import batch_management,  enterprise_management

if isinstance(role_name, int):
    role = enterprise_data.roles.get_entity(role_name)
elif isinstance(role_name, str):
    if role_name.isnumeric():
        role = enterprise_data.roles.get_entity(int(role_name))
    if not role:
        role = [x for x in enterprise_data.roles.get_all_entities() if x.name.lower() == role_name.lower()]

role_list = [role]
batch = batch_management.BatchManagement(loader=enterprise_loader, logger=enterprise_manager_logger)

batch.modify_roles(to_remove=(enterprise_management.RoleEdit(role_id=x.role_id) for x in role_list))
batch.apply()
```

</details>

### エンタープライズロール管理者コマンド (admin) <a href="#enterprise-role-admin" id="enterprise-role-admin"></a>

エンタープライズ管理者ロールを管理します。

<details>

<summary>DotNet CLI</summary>

**コマンド:** `enterprise-role add-users-to-admin-role <Role name> <Username> OR`

`er add-users-to-admin-role <Role name> <Username>`

**例:**

```
enterprise-role add-users-to-admin-role "Administrator" "test@demo.com"
```

</details>

<details>

<summary>DotNet SDK</summary>

**関数:** `AddUserToAdminRole`

**使い方:**

```csharp
public async Task AddUserToAdminRole(EnterpriseRole role, EnterpriseUser user)
```

</details>

<details>

<summary>PowerCommander</summary>

用途ごとにコマンドが分かれており、詳細は以下をご参照ください。

| [Add-KeeperEnterpriseRoleManagedNode](#enterprise-role-managed-node-add-command)                |
| ----------------------------------------------------------------------------------------------- |
| [Remove-KeeperEnterpriseRoleManagedNode](#enterprise-role-managed-node-delete-command)          |
| [Add-KeeperEnterpriseRolePrivilege](#enterprise-role-managed-node-privileges-add-command)       |
| [Remove-KeeperEnterpriseRolePrivilege](#enterprise-role-managed-node-privileges-remove-command) |

</details>

<details>

<summary>Python CLI</summary>

**コマンド:** `enterprise-role admin`

**パラメータ:**

`role` - ロール名またはID (必須)

**フラグ:**

* `-aa`, `--add-admin` - ロールに管理ノードを追加する。繰り返し指定可。
* `-ra`, `--remove-admin` - ロールから管理ノードを削除する。繰り返し指定可。
* `-ap`, `--add-privilege` - 管理ノードに特権を追加する。繰り返し指定可。
* `-rp`, `--remove-privilege` - 管理ノードから特権を削除する。繰り返し指定可。
* `--cascade` - 子ノードにも適用する。`--add-admin` のみ: `on` または `off`

</details>

<details>

<summary>Python SDK</summary>

**関数:**

```
from keepersdk.enterprise import batch_management,  enterprise_management

batch = batch_management.BatchManagement(loader=enterprise_loader, logger=enterprise_manager_logger)

if isinstance(role_name, int):
    role = enterprise_data.roles.get_entity(role_name)
elif isinstance(role_name, str):
    if role_name.isnumeric():
        role = enterprise_data.roles.get_entity(int(role_name))
    if not role:
        role = [x for x in enterprise_data.roles.get_all_entities() if x.name.lower() == role_name.lower()]

existing_nodes = {x.managed_node_id: x for x in enterprise_data.managed_nodes.get_links_by_subject(role.role_id)}

nodes_to_add_admin = ['ノードのリスト']
nodes_to_remove_admin = ['ノードのリスト']

nodes_to_add_admin: Optional[List[enterprise_types.Node]] = None
nodes_to_remove_admin: Optional[List[enterprise_types.Node]] = None
cascade: Optional[bool] = None
add_admins = ['ノード']
if isinstance(add_admins, list):
    for admin in add_admins:
        if isintance(admin, int):
            node = enterprise_data.nodes.get_entity(admin)
        elif isintance(admin, str):
            node = [node for node in enterprise_data.nodes.get_all_entities() if node.name.lower() == admin]
        nodes_to_add_admin.append(node)

remove_admins = ['ノード']
if isinstance(remove_admins, list):
    for admin in remove_admins:
        if isintance(admin, int):
            node = enterprise_data.nodes.get_entity(admin)
        elif isintance(admin, str):
            node = [node for node in enterprise_data.nodes.get_all_entities() if node.name.lower() == admin]
        nodes_to_remove_admin.append(node)

add_privileges = ['付与する特権']
remove_priviliges = ['削除する特権']
if nodes_to_add_admin is not None:
    aps: Optional[Set[str]] = None
    rps: Optional[Set[str]] = None
    if isinstance(add_privileges, list):
        privilege = enterprise_types.RolePrivileges(role_id=0, managed_node_id=0)
        for p in add_privileges:
            if not privilege.set_by_name(p, True):
                logger.info('Invalid privilege "%s"', p)
        aps = privilege.to_set()

    if isinstance(remove_privileges, list):
        privilege = enterprise_types.RolePrivileges(role_id=0, managed_node_id=0)
        for p in remove_privileges:
            if not privilege.set_by_name(p, False):
                logger.info('Invalid privilege "%s"', p)
        rps = privilege.to_set()

    for node in nodes_to_add_admin:
        mne = enterprise_management.ManagedNodeEdit(
            role_id=role.role_id, managed_node_id=node.node_id, cascade_node_management=cascade)
        if aps and len(aps) > 0:
            if mne.privileges is None:
                mne.privileges = {}
            for p in aps:
                mne.privileges[p] = True
        if rps and len(rps) > 0:
            if mne.privileges is None:
                mne.privileges = {}
            for p in rps:
                mne.privileges[p] = False
        if node.node_id in existing_nodes:
            en = existing_nodes[node.node_id]
            assert en
            if (isinstance(cascade, bool) and en.cascade_node_management != cascade) or aps or rps:
                batch.modify_managed_nodes(to_update=[mne])
        else:
            batch.modify_managed_nodes(to_add=[mne])

if nodes_to_remove_admin is not None:
    for node in nodes_to_remove_admin:
        if node.node_id in existing_nodes:
            batch.modify_managed_nodes(to_remove=[enterprise_management.ManagedNodeEdit(
                role_id=role.role_id, managed_node_id=node.node_id)])

batch.apply()
```

</details>

### エンタープライズロールメンバーシップコマンド (membership) <a href="#enterprise-role-membership" id="enterprise-role-membership"></a>

エンタープライズロールのメンバーシップを管理します。

<details>

<summary>DotNet CLI</summary>

**コマンド:** `enterprise-role add-members "Role Name"`

**別名:** `er`

**例:**

```
My Vault> enterprise-role add-members "IT Admin" admin1@company.com
My Vault> enterprise-role remove-members "IT Admin" admin1@company.com
```

</details>

<details>

<summary>DotNet SDK</summary>

**関数:**

`AddUserToAdminRole` - ユーザーを管理者として追加する

`RemoveUserFromRole` - ユーザーから管理者ロールを削除する

**例:**

```csharp
public async Task AddUserToAdminRole(EnterpriseRole role, EnterpriseUser user)
```

```csharp
 public async Task RemoveUserFromRole(EnterpriseRole role, EnterpriseUser user)
```

</details>

<details>

<summary>PowerCommander</summary>

**指定ロールへのユーザー追加**

**コマンド:** `Grant-KeeperEnterpriseRoleToUser`

**別名:** `kerua`

**フラグ:**

* `-Role` : ロール名、ID、または EnterpriseRole オブジェクト
* `-User` : ユーザーのメール、ID、または EnterpriseUser オブジェクト

**例:**

```ps1
PS > Grant-KeeperEnterpriseRoleToUser -Role "Administrator Role" -User "user@example.com"
User "user@example.com" added to role "Administrator Role"
```

**指定ロールからのユーザー削除:**

**コマンド:** `Revoke-KeeperEnterpriseRoleFromUser`

**別名:** `kerur`

**フラグ:**

* `-Role` : ロール名、ID、または EnterpriseRole オブジェクト
* `-User` : ユーザーのメール、ID、または EnterpriseUser オブジェクト

**例:**

```ps1
PS > Revoke-KeeperEnterpriseRoleFromUser -Role "Administrator Role" -User "user@example.com"
User "user@example.com" removed from role "Administrator Role"
```

</details>

<details>

<summary>Python CLI</summary>

**コマンド:** `enterprise-role membership`

**パラメータ:**

* `role` - ロール名またはID (必須)

**オプション:**\
`-h, --help` このヘルプメッセージを表示して終了する\
`-au, --add-user` EMAIL - ロールにユーザーを追加する。繰り返し指定可。\
`-ru, --remove-user` EMAIL - ロールからユーザーを削除する（メール、ユーザーID、@all）。繰り返し指定可。\
`-at, --add-team` TEAM - ロールにチームを追加する。繰り返し指定可。\
`-rt, --remove-team` TEAM - ロールからチームを削除する（名前、チームUID、@all）。繰り返し指定可。

**警告:** この操作は元に戻せず、すべてのユーザー、ロール、チーム、および子ノードを削除します。

</details>

<details>

<summary>Python SDK</summary>

**関数:**

```python
from keepersdk.enterprise import batch_management,  enterprise_management

if isinstance(role_name, int):
    role = enterprise_data.roles.get_entity(role_name)
elif isinstance(role_name, str):
    if role_name.isnumeric():
        role = enterprise_data.roles.get_entity(int(role_name))
    if not role:
        role = [x for x in enterprise_data.roles.get_all_entities() if x.name.lower() == role_name.lower()]

role_list = [role]
users_to_add: Optional[List[enterprise_types.User]] = None
teams_to_add: Optional[List[enterprise_types.Team]] = None
users_to_remove: Optional[List[enterprise_types.User]] = None
teams_to_remove: Optional[List[enterprise_types.Team]] = None
add_users = ['追加するユーザーのリスト']
add_teams = ['追加するチームのリスト']
remove_users = ['削除するユーザーのリスト']
has_remove_all_users: bool = False
remove_teams = ['削除するチームのリスト']
has_remove_all_teams: bool = False

if isinstance(add_users, list):
    for add_user in add_users:
        user = [user for user in enterprise_data.users.get_all_entities() if user.username.lower() == add_user.lower()]
        users_to_add.append(user)
if isinstance(add_teams, list):
    team_lookup: Dict[str, Union[enterprise_types.Team, List[enterprise_types.Team]]] = {}
    for team in enterprise_data.teams.get_all_entities():
        team_lookup[team.team_uid] = team
        team_name = team.name.lower()
        t = team_lookup.get(team_name)
        if t is None:
            team_lookup[team_name] = team
        elif isinstance(t, list):
            t.append(team)
        elif isinstance(t, enterprise_types.Team):
            team_lookup[team_name] = [t, team]

    found_teams: Dict[str, enterprise_types.Team] = {}
    t: Optional[enterprise_types.Team]
    for team_name in add_teams:
        t = None
        if isinstance(team_name, str):
            t = enterprise_data.teams.get_entity(team_name)
            if t is None:
                tt = team_lookup.get(team_name.lower())
                if isinstance(tt, list):
                    if len(tt) == 1:
                        t = tt[0]
                    elif len(tt) >= 2:
                        continue
                elif isinstance(tt, enterprise_types.Team):
                    t = tt
        if t is None:
            continue
        found_teams[t.team_uid] = t
    teams_to_add = list(found_teams.values())
if isinstance(remove_users, list):
    has_remove_all_users = any((True for x in remove_users if x == '@all'))
    if not has_remove_all_users:
        for remove_user in remove_users:
            user = [user for user in enterprise_data.users.get_all_entities() if user.username.lower() == remove_user.lower()]
            users_to_remove.append(user)
if isinstance(remove_teams, list):
    has_remove_all_teams = any((True for x in remove_teams if x == '@all'))
    if not has_remove_all_teams:

        team_lookup: Dict[str, Union[enterprise_types.Team, List[enterprise_types.Team]]] = {}
        for team in enterprise_data.teams.get_all_entities():
            team_lookup[team.team_uid] = team
            team_name = team.name.lower()
            t = team_lookup.get(team_name)
            if t is None:
                team_lookup[team_name] = team
            elif isinstance(t, list):
                t.append(team)
            elif isinstance(t, enterprise_types.Team):
                team_lookup[team_name] = [t, team]

        found_teams: Dict[str, enterprise_types.Team] = {}
        t: Optional[enterprise_types.Team]
        for team_name in remove_teams:
            t = None
            if isinstance(team_name, str):
                t = enterprise_data.teams.get_entity(team_name)
                if t is None:
                    tt = team_lookup.get(team_name.lower())
                    if isinstance(tt, list):
                        if len(tt) == 1:
                            t = tt[0]
                        elif len(tt) >= 2:
                            continue
                    elif isinstance(tt, enterprise_types.Team):
                        t = tt
            if t is None:
                continue
            found_teams[t.team_uid] = t
        teams_to_remove = list(found_teams.values())

batch = batch_management.BatchManagement(loader=enterprise_loader, logger=enterprise_manager_logger)
for role in role_list:
    existing_users = {x.enterprise_user_id for x in enterprise_data.role_users.get_links_by_subject(role.role_id)}
    existing_teams = {x.team_uid for x in enterprise_data.role_teams.get_links_by_subject(role.role_id)}
    if users_to_add:
        users_to_add = [x for x in users_to_add if x.enterprise_user_id not in existing_users]
        if users_to_add:
            batch.modify_role_users(to_add=[enterprise_management.RoleUserEdit(
                role_id=role.role_id, enterprise_user_id=x.enterprise_user_id) for x in users_to_add])
    if teams_to_add:
        teams_to_add = [x for x in teams_to_add if x.team_uid not in existing_teams]
        if teams_to_add:
            batch.modify_role_teams(to_add=[enterprise_management.RoleTeamEdit(
                role_id=role.role_id, team_uid=x.team_uid) for x in teams_to_add])
    if has_remove_all_users:
        batch.modify_role_users(to_remove=[enterprise_management.RoleUserEdit(
            role_id=role.role_id, enterprise_user_id=x) for x in existing_users])
    elif users_to_remove:
        batch.modify_role_users(to_remove=[enterprise_management.RoleUserEdit(
            role_id=role.role_id, enterprise_user_id=x.enterprise_user_id) for x in users_to_remove])
    if has_remove_all_teams:
        batch.modify_role_teams(to_remove=[enterprise_management.RoleTeamEdit(
            role_id=role.role_id, team_uid=x) for x in existing_teams])
    elif teams_to_remove:
        batch.modify_role_teams(to_remove=[enterprise_management.RoleTeamEdit(
            role_id=role.role_id, team_uid=x.team_uid) for x in teams_to_remove])

batch.apply()
```

</details>

#### エンタープライズロールコピーコマンド (copy) <a href="#enterprise-role-copy" id="enterprise-role-copy"></a>

エンフォースメント付きでロールをコピーします。

<details>

<summary>DotNet CLI</summary>

**コマンド:**

```bash
enterprise-role copy <source-role> --node <target-node> --new-role-name <new-name>
```

**パラメータ**

| パラメータ             | 必須 | 説明                                      |
| ----------------- | -- | --------------------------------------- |
| `copy`            | はい | コマンド: `copy` である必要があります。                |
| `<source-role>`   | はい | コピー元のロール名またはロールID。1件のロールと完全一致する必要があります。 |
| `--node`          | はい | 新しいロールを作成する先のノード名またはノードIDです。            |
| `--new-role-name` | はい | 新しいロールの表示名です。                           |

**例:**

```bash
My Vault> enterprise-role copy "Test2 Role" --node "dev" --new-role-name "third dev 2"
Role "third dev 2" created with enforcements from "Test2 Role" (10 user(s), 2 team(s) copied).
```

</details>

<details>

<summary>DotNet SDK</summary>

未実装

</details>

<details>

<summary>PowerCommander</summary>

**コマンド:**

```powershell
Copy-KeeperEnterpriseRole -SourceRole <role> -TargetNode <node> -NewRoleName <name> [-CopyUsers <bool>] [-CopyTeams <bool>] [-Force]
```

**別名:** `kercopy`

**パラメータ**

| パラメータ         | 型       | 必須  | 既定      | 説明                                             |
| ------------- | ------- | --- | ------- | ---------------------------------------------- |
| `SourceRole`  | Object  | はい  | —       | コピー元のロール名、ロールID、または `EnterpriseRole` オブジェクトです。 |
| `TargetNode`  | String  | はい  | —       | 新しいロールを作成する先のノード名またはノードIDです。                   |
| `NewRoleName` | String  | はい  | —       | 新しいロールの表示名です。                                  |
| `CopyUsers`   | Boolean | いいえ | `$true` | ソースロールから新しいロールへユーザーをコピーします。                    |
| `CopyTeams`   | Boolean | いいえ | `$true` | ソースロールから新しいロールへチームをコピーします。                     |
| `Force`       | Switch  | いいえ | —       | 実行前にエンタープライズデータを再読み込みします。                      |

**例:**

```powershell
PowerCommander> Copy-KeeperEnterpriseRole -SourceRole "Test2 Role" -TargetNode "dev" -NewRoleName "second dev"
Role "second dev" created with enforcements from "Test2 Role" (10 user(s), 4 team(s) copied).
```

</details>

<details>

<summary>Python CLI</summary>

**コマンド:** `enterprise-role copy`

**パラメータ:**

`role` - ロール名またはID (必須)

**フラグ:**

* `--node` - 新しいロールのノード名またはID (必須)
* `--name`, `--displayname` - 新しいロール名 (必須)

</details>

<details>

<summary>Python SDK</summary>

**関数:**

```python
from keepersdk.enterprise import batch_management,  enterprise_management

if isinstance(role_name, int):
    role = enterprise_data.roles.get_entity(role_name)
elif isinstance(role_name, str):
    if role_name.isnumeric():
        role = enterprise_data.roles.get_entity(int(role_name))
    if not role:
        role = [x for x in enterprise_data.roles.get_all_entities() if x.name.lower() == role_name.lower()]

node_id = 'ノードUIDまたは名前'
if isintance(node_id, int):
    node = enterprise_data.nodes.get_entity(node_id)
elif isintance(node_id, str):
    node = [node for node in enterprise_data.nodes.get_all_entities() if node.name.lower() == node_id]
    
role_name = 'コピー先のロール名'

batch = batch_management.BatchManagement(loader=enterprise_loader, logger=enterprise_manager_logger)
role_id = enterprise_loader.get_enterprise_id()
role_to_add = enterprise_management.RoleEdit(role_id=role_id, node_id=node.node_id, name=role_name, visible_below=role.visible_below,
                                                new_user_inherit=role.new_user_inherit)
batch.modify_roles(to_add=[role_to_add])

enforcements = [enterprise_management.RoleEnforcementEdit(role_id=role_id, name=x.enforcement_type, value=x.value)
                for x in enterprise_data.role_enforcements.get_links_by_subject(role.role_id)]
batch.modify_role_enforcements(enforcements=enforcements)
batch.apply()
```

</details>

### エンタープライズロールチーム管理コマンド (team-management) <a href="#enterprise-role-team-management" id="enterprise-role-team-management"></a>

チームへのロールの割り当てまたは割り当て解除を行います。

<details>

<summary>DotNet CLI</summary>

**コマンド:** `enterprise-role`

**ロールへのチーム追加:**

**操作:** `add-members`

**フラグ:**

* `--help` : このヘルプ画面を表示する。
* `--version` : バージョン情報を表示する。
* `value pos. 0` : KSM コマンド: "add-members"
* `value pos. 1` : ロール名またはID
* `value pos. 2` : ユーザーのメール、ユーザーID、チーム名、またはチームUID（スペース区切りのリスト）

**例:**

```
My Vault > enterprise-role add-members "Administrator Role" "Engineering Team"
Adding members to role "Administrator Role"
Team: "Engineering Team" : Success
```

\
**ロールからのチーム削除:**

**操作:** `remove-members`

**フラグ:**

* `--help` : このヘルプ画面を表示する。
* `--version` : バージョン情報を表示する。
* `value pos. 0` : KSM コマンド: "remove-members"
* `value pos. 1` : ロール名またはID
* `value pos. 2` : ユーザーのメール、ユーザーID、チーム名、またはチームUID（スペース区切りのリスト）

**例:**

```
My Vault > enterprise-role remove-members "Administrator Role" "Engineering Team"
Removing members from role "Administrator Role"
Team: "Engineering Team" : Success
```

</details>

<details>

<summary>DotNet SDK</summary>

**ロールへのチーム追加:**

**関数:** `AddTeamToRole`

```csharp
Task AddTeamToRole(EnterpriseRole role, EnterpriseTeam team);
```

**引数:**

`role` - チームを追加する対象ロールを表す EnterpriseRole オブジェクト

`team` - ロールに追加するチームを表す EnterpriseTeam オブジェクト

**ロールからのチーム削除:**

**関数:** `RemoveTeamFromRole`

```csharp
Task RemoveTeamFromRole(EnterpriseRole role, EnterpriseTeam team);
```

**引数:**

`role` - チームを削除する対象ロールを表す EnterpriseRole オブジェクト

`team` - ロールから削除するチームを表す EnterpriseTeam オブジェクト

</details>

<details>

<summary>PowerCommander</summary>

**ロールへのチーム追加:**

**コマンド:** `Grant-KeeperEnterpriseRoleToTeam`

**別名:** `kerta`

**フラグ:**

* `-Role` : ロール名、ID、または EnterpriseRole オブジェクト
* `-Team` : チームUID、名前、または EnterpriseTeam オブジェクト

**例:**

```
PS > Grant-KeeperEnterpriseRoleToTeam -Role "Administrator Role" -Team "Engineering Team"
Team "Engineering Team" added to role "Administrator Role"
```

**ロールからのチーム削除:**

**コマンド:** `Revoke-KeeperEnterpriseRoleFromTeam`

**別名:** `kertr`

**フラグ:**

* `-Role` : ロール名、ID、または EnterpriseRole オブジェクト
* `-Team` : チームUID、名前、または EnterpriseTeam オブジェクト

**例:**

```
PS > Revoke-KeeperEnterpriseRoleFromTeam -Role "Administrator Role" -Team "Engineering Team"
Team "Engineering Team" removed from role "Administrator Role"
```

</details>

### エンタープライズロール管理ノード追加コマンド (managed-node-add)

ロールに管理ノードを追加するコマンド/関数です。

<details>

<summary>DotNet CLI</summary>

**コマンド:** `enterprise-role <action> roll_name --node=<node_name> --cascade OR er <action> roll_name --node=<node_name> --cascade`

**パラメータ:**

`roll_name` - ロール名またはID。

`node_name` - ノード名またはID。

`cascade` - 子ノードへ連鎖する場合は true、しない場合は false

**例:**

```sh
My Vault> enterprise-role managed-node-add "Test4" --node="Test1" --cascade
```

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>DotNet SDK</summary>

**管理ノードの追加:**

**関数:** `RoleManagedNodeAdd`

**使い方:**

```csharp
public async Task RoleManagedNodeAdd(EnterpriseRole role, EnterpriseNode node, bool cascadeNodeManagement)
```

**パラメータ:**

<table><thead><tr><th width="227.4921875"></th><th>説明</th></tr></thead><tbody><tr><td><code>role</code></td><td>対象ロールを表す EnterpriseRole オブジェクト</td></tr><tr><td><code>node</code></td><td>対象ノードを表す EnterpriseNode オブジェクト</td></tr><tr><td><code>cascade</code></td><td>この管理ノードの特権を子ノードにも適用するか — <code>true / false</code></td></tr></tbody></table>

**例:**

{% code overflow="wrap" %}

```csharp
await EnterpriseManagementExamples.EnterpriseRoleExamples.RoleManagedNodeExample.RoleManagedNodeAdd(roleName: "Test2", nodeId: 70411693850884, cascadeNodeManagement: true);
```

{% endcode %}

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>PowerCommander</summary>

**コマンド:** `Add-KeeperEnterpriseRoleManagedNode`

**フラグ:**

<table><thead><tr><th width="227.8876953125">パラメータ</th><th>説明</th></tr></thead><tbody><tr><td><code>Role</code></td><td>ロール名またはID</td></tr><tr><td><code>Node</code></td><td>管理ノードとして追加するノード名またはID</td></tr><tr><td><code>Cascade</code></td><td>ノード管理を子ノードへ連鎖する</td></tr></tbody></table>

**例:**

```powershell
PS> Add-KeeperEnterpriseRoleManagedNode -Role PCRTest -Node PCTNode -Cascade 
Managed node "PCTNode" added to role "PCRTest" successfully.
```

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>Python CLI</summary>

近日公開

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>Python SDK</summary>

近日公開

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

### エンタープライズロール管理ノード更新コマンド (managed-node-update)

ロールの管理ノードを更新するコマンド/関数です。

<details>

<summary>DotNet CLI</summary>

**コマンド:** `enterprise-role <action> roll_name --node=<node_name> --cascade OR er <action> roll_name --node=<node_name> --cascade`

**パラメータ:**

`roll_name` - ロール名またはID。

`node_name` - ノード名またはID。

`cascade` - 子ノードへ連鎖する場合は true、しない場合は false

**例:**

```sh
My Vault> enterprise-role managed-node-update "Test4" --node="Test1" --cascade
```

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>DotNet SDK</summary>

**管理ノードの更新:**

**関数:** `RoleManagedNodeUpdate`

**使い方:**

```csharp
public async Task RoleManagedNodeUpdate(EnterpriseRole role, EnterpriseNode node, bool cascadeNodeManagement)
```

**パラメータ:**

<table><thead><tr><th width="227.4921875"></th><th>説明</th></tr></thead><tbody><tr><td><code>role</code></td><td>対象ロールを表す EnterpriseRole オブジェクト</td></tr><tr><td><code>node</code></td><td>対象ノードを表す EnterpriseNode オブジェクト</td></tr><tr><td><code>cascade</code></td><td>この管理ノードの特権を子ノードにも適用するか — <code>true / false</code></td></tr></tbody></table>

**例:**

{% code overflow="wrap" %}

```csharp
await EnterpriseManagementExamples.EnterpriseRoleExamples.RoleManagedNodeExample.RoleManagedNodeUpdate(roleName: "Test2", nodeId: 70411693850884, cascadeNodeManagement: true);
```

{% endcode %}

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>PowerCommander</summary>

**コマンド:**`Update-KeeperEnterpriseRoleManagedNode`

**フラグ:**

<table><thead><tr><th width="227.8876953125">パラメータ</th><th>説明</th></tr></thead><tbody><tr><td><code>Role</code></td><td>ロール名またはID</td></tr><tr><td><code>Node</code></td><td>管理ノードとして追加するノード名またはID</td></tr><tr><td><code>Cascade</code></td><td>ノード管理を子ノードへ連鎖する</td></tr></tbody></table>

**例:**

```powershell
PS> Update-KeeperEnterpriseRoleManagedNode -Role PCRTest -Node PCTNode 
Managed node "PCTNode" updated for role "PCRTest" successfully.
```

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>Python CLI</summary>

近日公開

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>Python SDK</summary>

近日公開

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

### エンタープライズロール管理ノード削除コマンド (managed-node-delete)

ロールから管理ノードを削除するコマンド/関数です。

<details>

<summary>DotNet CLI</summary>

**コマンド:** `enterprise-role <action> roll_name --node=<node_name> OR er <action> roll_name --node=<node_name>`

**パラメータ:**

`roll_name` - ロール名またはID。

`node_name` - ノード名またはID。

**例:**

```sh
My Vault> enterprise-role managed-node-delete "Test4" --node="Test1"
```

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>DotNet SDK</summary>

**管理ノードの削除:**

**関数:** `RoleManagedNodeRemove`

**使い方:**

```csharp
public async Task RoleManagedNodeRemove(EnterpriseRole role, EnterpriseNode node)
```

**パラメータ:**

<table><thead><tr><th width="227.4921875"></th><th>説明</th></tr></thead><tbody><tr><td><code>role</code></td><td>対象ロールを表す EnterpriseRole オブジェクト</td></tr><tr><td><code>node</code></td><td>対象ノードを表す EnterpriseNode オブジェクト</td></tr></tbody></table>

**例:**

{% code overflow="wrap" %}

```csharp
await EnterpriseManagementExamples.EnterpriseRoleExamples.RoleManagedNodeExample.RoleManagedNodeRemove(roleName: "Test1", nodeId: 70411693850884);
```

{% endcode %}

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>PowerCommander</summary>

**コマンド:** `Remove-KeeperEnterpriseRoleManagedNode`

**フラグ:**

<table><thead><tr><th width="227.8876953125">パラメータ</th><th>説明</th></tr></thead><tbody><tr><td><code>Role</code></td><td>ロール名またはID</td></tr><tr><td><code>Node</code></td><td>管理ノードとして追加するノード名またはID</td></tr></tbody></table>

**例:**

```
PS> Remove-KeeperEnterpriseRoleManagedNode -Role PCRTest -Node PCTNode
Managed node PCTNode deleted from role PCRTest successfully.
```

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>Python CLI</summary>

近日公開

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>Python SDK</summary>

近日公開

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

### エンタープライズロール管理ノード特権追加コマンド (managed-node-privileges-add)

管理ノードに特権を一括または個別に追加するコマンド/関数です。

<details>

<summary>DotNet CLI</summary>

**コマンド:** `enterprise-role <action> roll_name --node=<node_name> --privileges=<privilege1, privilege2> OR er <action> roll_name --node=<node_name> --privileges=<privilege1, privilege2>`

**パラメータ:**

`roll_name` - ロール名またはID。

`node_name` - ノード名またはID。

`privileges` - カンマ区切りの特権を文字列で指定します。

**例:**

```sh
My Vault> er add-privileges "Test4" --node="Ananth-Test" --privileges="manage_nodes,manage_user,run_reports"
```

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>DotNet SDK</summary>

**管理ノードへの特権追加:**

**関数:** `RoleManagedNodePrivilegeAddBatch`

**使い方:**

```csharp
public async Task<IList<KeeperApiResponse>> RoleManagedNodePrivilegeAddBatch(EnterpriseRole role, EnterpriseNode node, List<RoleManagedNodePrivilege> privileges)
```

**パラメータ:**

<table><thead><tr><th width="227.4921875"></th><th>説明</th></tr></thead><tbody><tr><td><code>role</code></td><td>対象ロールを表す EnterpriseRole オブジェクト</td></tr><tr><td><code>node</code></td><td>対象ノードを表す EnterpriseNode オブジェクト</td></tr><tr><td><code>privileges</code></td><td><p>次の型の特権のリストを追加します</p><pre class="language-csharp" data-overflow="wrap"><code class="lang-csharp">List&#x3C;RoleManagedNodePrivilege>
</code></pre></td></tr></tbody></table>

**例:**

{% code overflow="wrap" %}

```csharp
await EnterpriseManagementExamples.EnterpriseRoleExamples.RoleManagedNodeExample.RoleManagedNodePrivilegeAdd(roleName: "Test1", nodeId: 70411693850884, privileges: new List<RoleManagedNodePrivilege> { RoleManagedNodePrivilege.MANAGE_USER, RoleManagedNodePrivilege.TRANSFER_ACCOUNT });
```

{% endcode %}

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>PowerCommander</summary>

**コマンド:** `Add-KeeperEnterpriseRolePrivilege`

**別名:** `Add-KeeperRolePrivilege`

**フラグ:**

<table><thead><tr><th width="170.6611328125">フラグ</th><th>説明</th></tr></thead><tbody><tr><td><code>-Role</code></td><td>ロール名またはID（必須、位置 0）</td></tr><tr><td><code>-Node</code></td><td>管理ノードのノード名またはID（必須、位置 1）</td></tr><tr><td><code>-Privilege</code></td><td>追加する特権名を1つ以上。有効な値: MANAGE_NODES, MANAGE_USER, MANAGE_LICENCES, MANAGE_ROLES, MANAGE_TEAMS, TRANSFER_ACCOUNT, RUN_REPORTS, VIEW_TREE, MANAGE_BRIDGE, MANAGE_COMPANIES, SHARING_ADMINISTRATOR, APPROVE_DEVICE, MANAGE_RECORD_TYPES, RUN_COMPLIANCE_REPORTS（必須、位置 2）</td></tr></tbody></table>

**例:**

```powershell
PS> Add-KeeperEnterpriseRolePrivilege -Role PCRTest -Node PCTNode -Privilege MANAGE_NODES,MANAGE_USER,MANAGE_LICENCES,MANAGE_ROLES,MANAGE_TEAMS,TRANSFER_ACCOUNT,VIEW_TREE,MANAGE_COMPANIES,SHARING_ADMINISTRATOR,APPROVE_DEVICE,MANAGE_RECORD_TYPES,RUN_COMPLIANCE_REPORTS                             
Command: managed_node_privilege_add, Privilege: MANAGE_NODES, Result: success
Command: managed_node_privilege_add, Privilege: MANAGE_USER, Result: success
Command: managed_node_privilege_add, Privilege: MANAGE_LICENCES, Result: success
Command: managed_node_privilege_add, Privilege: MANAGE_ROLES, Result: success
Command: managed_node_privilege_add, Privilege: MANAGE_TEAMS, Result: success
Command: managed_node_privilege_add, Privilege: TRANSFER_ACCOUNT, Result: success
Command: managed_node_privilege_add, Privilege: VIEW_TREE, Result: fail, Code: access_denied, Message: You do not have the required privilege to perform this operation.
Command: managed_node_privilege_add, Privilege: MANAGE_COMPANIES, Result: fail, Code: access_denied, Message: You do not have the required privilege to perform this operation.
Command: managed_node_privilege_add, Privilege: SHARING_ADMINISTRATOR, Result: success
Command: managed_node_privilege_add, Privilege: APPROVE_DEVICE, Result: success
Command: managed_node_privilege_add, Privilege: MANAGE_RECORD_TYPES, Result: success
Command: managed_node_privilege_add, Privilege: RUN_COMPLIANCE_REPORTS, Result: success
```

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>Python CLI</summary>

近日公開

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>Python SDK</summary>

近日公開

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

### エンタープライズロール管理ノード特権削除コマンド (managed-node-privileges-remove)

管理ノードから特権を一括または個別に削除するコマンド/関数です。

<details>

<summary>DotNet CLI</summary>

**コマンド:** `enterprise-role <action> roll_name --node=<node_name> --privileges=<privilege1, privilege2> OR er <action> roll_name --node=<node_name> --privileges=<privilege1, privilege2>`

**パラメータ:**

`roll_name` - ロール名またはID。

`node_name` - ノード名またはID。

`privileges` - カンマ区切りの特権を文字列で指定します。

**例:**

```sh
My Vault> er remove-privileges "Test4" --node="Ananth-Test" --privileges="manage_nodes,manage_user,run_reports"
```

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>DotNet SDK</summary>

**管理ノードからの特権削除:**

**関数:** `RoleManagedNodePrivilegeRemoveBatch`

**使い方:**

```csharp
public async Task<IList<KeeperApiResponse>> RoleManagedNodePrivilegeRemoveBatch(EnterpriseRole role, EnterpriseNode node, List<RoleManagedNodePrivilege> privileges)
```

**パラメータ:**

<table><thead><tr><th width="227.4921875"></th><th>説明</th></tr></thead><tbody><tr><td><code>role</code></td><td>対象ロールを表す EnterpriseRole オブジェクト</td></tr><tr><td><code>node</code></td><td>対象ノードを表す EnterpriseNode オブジェクト</td></tr><tr><td><code>privileges</code></td><td><p>次の型の特権のリストを削除します</p><pre class="language-csharp"><code class="lang-csharp">List&#x3C;RoleManagedNodePrivilege>
</code></pre></td></tr></tbody></table>

**例:**

{% code overflow="wrap" %}

```csharp
await EnterpriseManagementExamples.EnterpriseRoleExamples.RoleManagedNodeExample.RoleManagedNodePrivilegeRemove(roleName: "Test1", nodeId: 70411693850884, privileges: new List<RoleManagedNodePrivilege> { RoleManagedNodePrivilege.MANAGE_USER, RoleManagedNodePrivilege.TRANSFER_ACCOUNT });
```

{% endcode %}

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>PowerCommander</summary>

**コマンド:** `Remove-KeeperEnterpriseRolePrivilege`

**別名:** `Remove-KeeperRolePrivilege`

**フラグ:**

<table><thead><tr><th width="185.0361328125">フラグ</th><th>説明</th></tr></thead><tbody><tr><td><code>-Role</code></td><td>ロール名またはID（必須、位置 0）</td></tr><tr><td><code>-Node</code></td><td>管理ノードのノード名またはID（必須、位置 1）</td></tr><tr><td><code>-Privilege</code></td><td>削除する特権名を1つ以上。有効な値: MANAGE_NODES, MANAGE_USER, MANAGE_LICENCES, MANAGE_ROLES, MANAGE_TEAMS, TRANSFER_ACCOUNT, RUN_REPORTS, VIEW_TREE, MANAGE_BRIDGE, MANAGE_COMPANIES, SHARING_ADMINISTRATOR, APPROVE_DEVICE, MANAGE_RECORD_TYPES, RUN_COMPLIANCE_REPORTS（必須、位置 2）</td></tr></tbody></table>

**例:**

```powershell
PS> Remove-KeeperEnterpriseRolePrivilege -Role PCRTest -Node PCTNode -Privilege MANAGE_NODES,MANAGE_USER,MANAGE_LICENCES,MANAGE_ROLES,MANAGE_TEAMS,TRANSFER_ACCOUNT,VIEW_TREE,MANAGE_COMPANIES,SHARING_ADMINISTRATOR,APPROVE_DEVICE,MANAGE_RECORD_TYPES,RUN_COMPLIANCE_REPORTS            
Command: managed_node_privilege_remove, Privilege: MANAGE_NODES, Result: success
Command: managed_node_privilege_remove, Privilege: MANAGE_USER, Result: success
Command: managed_node_privilege_remove, Privilege: MANAGE_LICENCES, Result: success
Command: managed_node_privilege_remove, Privilege: MANAGE_ROLES, Result: success
Command: managed_node_privilege_remove, Privilege: MANAGE_TEAMS, Result: success
Command: managed_node_privilege_remove, Privilege: TRANSFER_ACCOUNT, Result: success
Command: managed_node_privilege_remove, Privilege: VIEW_TREE, Result: fail, Code: doesnt_exist, Message: This object no longer exists.
Command: managed_node_privilege_remove, Privilege: MANAGE_COMPANIES, Result: fail, Code: doesnt_exist, Message: This object no longer exists.
Command: managed_node_privilege_remove, Privilege: SHARING_ADMINISTRATOR, Result: success
Command: managed_node_privilege_remove, Privilege: APPROVE_DEVICE, Result: success
Command: managed_node_privilege_remove, Privilege: MANAGE_RECORD_TYPES, Result: success
Command: managed_node_privilege_remove, Privilege: RUN_COMPLIANCE_REPORTS, Result: success
```

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>Python CLI</summary>

近日公開

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>Python SDK</summary>

近日公開

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

### エンタープライズロールエンフォースメントポリシー追加コマンド (add-enforcements)

ロールにエンフォースメントポリシーを一括または個別に追加するコマンド/関数です。

<details>

<summary>DotNet CLI</summary>

**コマンド:** `enterprise-role <action> role_name --enforcements="key1=value1; key2="value2"" OR er <action> role_name --enforcements="key1=value1; key2="value2""`

**パラメータ:**

`roll_name` - ロール名またはID。

`enforcements` - キーと値のペアを文字列内で指定します。

**例:**

```sh
My Vault>  er add-enforcements "Test4" --enforcements="RESTRICT_FILE_UPLOAD=true; TWO_FACTOR_DURATION_WEB="0,12,24""
```

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>DotNet SDK</summary>

**ロールへのエンフォースメントポリシー追加:**

**関数:** `RoleEnforcementAddBatch`

**使い方:**

```csharp
public async Task<IList<KeeperApiResponse>> RoleEnforcementAddBatch(EnterpriseRole role, IDictionary<RoleEnforcementPolicies, string> enforcements)
```

**パラメータ:**

<table><thead><tr><th width="227.4921875"></th><th>説明</th></tr></thead><tbody><tr><td><code>role</code></td><td>対象ロールを表す <code>EnterpriseRole</code> オブジェクト</td></tr><tr><td><code>enforcements</code></td><td><p>次の型のエンフォースメントポリシーのバッチを追加します</p><p><code>Dictionary&#x3C;RoleEnforcementPolicies, string></code></p></td></tr></tbody></table>

**例:**

{% code overflow="wrap" %}

```csharp
var enforcements = new Dictionary<RoleEnforcementPolicies, string> {
                    { RoleEnforcementPolicies.RESTRICT_FILE_UPLOAD, "true" },
                    { RoleEnforcementPolicies.RESTRICT_IP_ADDRESSES, "1.1.1.1-2.2.2.2" },
                    { RoleEnforcementPolicies.MASTER_PASSWORD_MINIMUM_LENGTH, "10"},
                    { RoleEnforcementPolicies.RESTRICT_DOMAIN_ACCESS, "192.168.1.100/app123"},
                    { RoleEnforcementPolicies.GENERATED_PASSWORD_COMPLEXITY, "google.com|12|4|1|3|1"},
                };
                await EnterpriseManagementExamples.EnterpriseRoleExamples.RoleManagedNodeExample.RoleEnforcementAdd(roleName: <roleName_here>, enforcements: enforcements);

```

{% endcode %}

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>PowerCommander</summary>

**コマンド:** `Add-KeeperEnterpriseRoleEnforcement`

**別名:** `Add-KeeperRoleEnforcement`

**フラグ:**

| フラグ            | 説明                                                                                   |
| -------------- | ------------------------------------------------------------------------------------ |
| `-Role`        | ロール名またはID（必須、位置 0）                                                                   |
| `-Enforcement` | `KEY=value` 形式のエンフォースメント。セミコロンまたはカンマ区切り可。複数は配列でも指定可。区切りには `=` と `:` の両方に対応。（必須、位置 1） |

**例:**

```
PS > Add-KeeperEnterpriseRoleEnforcement -Role PCRTest -Enforcement RESTRICT_FILE_UPLOAD=$true,RESTRICT_EXPORT=$true        
Command: role_enforcement_add, Enforcement: RESTRICT_FILE_UPLOAD=True, Result: success
Command: role_enforcement_add, Enforcement: RESTRICT_EXPORT=True, Result: success
```

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>Python CLI</summary>

近日公開

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>Python SDK</summary>

近日公開

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

### エンタープライズロールエンフォースメントポリシー更新コマンド (update-enforcements)

ロールのエンフォースメントポリシーを一括または個別に更新するコマンド/関数です。

<details>

<summary>DotNet CLI</summary>

**コマンド:** `enterprise-role <action> role_name --enforcements="key1=value1; key2=value2" OR er <action> role_name --enforcements="key1=value1; key2=value2"`

**パラメータ:**

`roll_name` - ロール名またはID。

`enforcements` - キーと値のペアを文字列内で指定します。

**例:**

```sh
My Vault>  er update-enforcements "Test4" --enforcements="RESTRICT_FILE_UPLOAD=false; TWO_FACTOR_DURATION_WEB="0,12,24,30""
```

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>DotNet SDK</summary>

**ロールのエンフォースメントポリシー更新:**

**関数:** `RoleEnforcementUpdateBatch`

**使い方:**

```csharp
public async Task<IList<KeeperApiResponse>> RoleEnforcementUpdateBatch(EnterpriseRole role, IDictionary<RoleEnforcementPolicies, string> enforcements)
```

**パラメータ:**

<table><thead><tr><th width="227.4921875"></th><th>説明</th></tr></thead><tbody><tr><td><code>role</code></td><td>対象ロールを表す EnterpriseRole オブジェクト</td></tr><tr><td><code>enforcements</code></td><td><p>次の型のエンフォースメントポリシーを更新します</p><pre class="language-csharp"><code class="lang-csharp">Dictionary&#x3C;RoleEnforcementPolicies, string>
</code></pre></td></tr></tbody></table>

**例:**

{% code overflow="wrap" %}

```csharp
var enforcements = new Dictionary<RoleEnforcementPolicies, string> {
                    { RoleEnforcementPolicies.RESTRICT_FILE_UPLOAD, "false" },
                    { RoleEnforcementPolicies.RESTRICT_IP_ADDRESSES, "2.2.2.2-3.3.3.3" },
                    { RoleEnforcementPolicies.MASTER_PASSWORD_MINIMUM_LENGTH, "20"},
                    { RoleEnforcementPolicies.RESTRICT_DOMAIN_ACCESS, "192.168.1.100/app345"},
                    { RoleEnforcementPolicies.GENERATED_PASSWORD_COMPLEXITY, "google.com|12|4|1|3|1"},
                };
await EnterpriseManagementExamples.EnterpriseRoleExamples.RoleManagedNodeExample.RoleEnforcementUpdate(roleName: <rollName_here>, enforcements: enforcements);
```

{% endcode %}

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>PowerCommander</summary>

**コマンド:** `Update-KeeperEnterpriseRoleEnforcement`

**別名:** `Update-KeeperRoleEnforcement`

**フラグ:**

| フラグ            | 説明                                                                                   |
| -------------- | ------------------------------------------------------------------------------------ |
| `-Role`        | ロール名またはID（必須、位置 0）                                                                   |
| `-Enforcement` | `KEY=value` 形式のエンフォースメント。セミコロンまたはカンマ区切り可。複数は配列でも指定可。区切りには `=` と `:` の両方に対応。（必須、位置 1） |

**例:**

```powershell
PS > Update-KeeperEnterpriseRoleEnforcement -Role PCRTest -Enforcement RESTRICT_FILE_UPLOAD=$true,RESTRICT_EXPORT=$true        
Command: role_enforcement_add, Enforcement: RESTRICT_FILE_UPLOAD=True, Result: success
Command: role_enforcement_add, Enforcement: RESTRICT_EXPORT=True, Result: success
```

セミコロン区切り:

```powershell
PS > Update-KeeperEnterpriseRoleEnforcement -Role "AdminRole" -Enforcement "TWO_FACTOR_DURATION_WEB=7200;MASTER_PASSWORD_MINIMUM_LENGTH=16"
Command: role_enforcement_update, Enforcement: TWO_FACTOR_DURATION_WEB=7200, Result: success
Command: role_enforcement_update, Enforcement: MASTER_PASSWORD_MINIMUM_LENGTH=16, Result: success
```

カンマ区切り:

```powershell
PS > Update-KeeperEnterpriseRoleEnforcement -Role "AdminRole" -Enforcement "TWO_FACTOR_DURATION_WEB=7200,MASTER_PASSWORD_MINIMUM_LENGTH=16"
Command: role_enforcement_update, Enforcement: TWO_FACTOR_DURATION_WEB=7200, Result: success
Command: role_enforcement_update, Enforcement: MASTER_PASSWORD_MINIMUM_LENGTH=16, Result: success
```

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>Python CLI</summary>

近日公開

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>Python SDK</summary>

近日公開

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

### エンタープライズロールエンフォースメントポリシー削除コマンド (remove-enforcements)

ロールからエンフォースメントポリシーを一括または個別に削除するコマンド/関数です。

<details>

<summary>DotNet CLI</summary>

**コマンド:** `enterprise-role <action> role_name --enforcements="key1; key2; key3" OR er <action> role_name --enforcements="key1; key2; key3"`

**パラメータ:**

`roll_name` - ロール名またはID。

`enforcements` - カンマ区切りのエンフォースメントを文字列で指定します。

**例:**

```sh
My Vault> er remove-enforcements "Test4" --enforcements="RESTRICT_FILE_UPLOAD; TWO_FACTOR_DURATION_WEB"
```

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>DotNet SDK</summary>

**ロールからのエンフォースメントポリシー削除:**

**関数:** `RoleEnforcementRemoveBatch`

**使い方:**

```csharp
public async Task<IList<KeeperApiResponse>> RoleEnforcementRemoveBatch(EnterpriseRole role, List<RoleEnforcementPolicies> enforcements)
```

**パラメータ:**

<table><thead><tr><th width="227.4921875"></th><th>説明</th></tr></thead><tbody><tr><td><code>role</code></td><td>対象ロールを表す EnterpriseRole オブジェクト</td></tr><tr><td><code>enforcements</code></td><td><p>次の型のエンフォースメントポリシーのリストを削除します</p><pre class="language-csharp" data-overflow="wrap"><code class="lang-csharp">List&#x3C;RoleEnforcementPolicies>
</code></pre></td></tr></tbody></table>

**例:**

{% code overflow="wrap" %}

```csharp
var enforcements = new List<RoleEnforcementPolicies> {
                    { RoleEnforcementPolicies.RESTRICT_FILE_UPLOAD},
                    { RoleEnforcementPolicies.RESTRICT_IP_ADDRESSES},
                    { RoleEnforcementPolicies.MASTER_PASSWORD_MINIMUM_LENGTH},
                    { RoleEnforcementPolicies.RESTRICT_DOMAIN_ACCESS},
                    { RoleEnforcementPolicies.GENERATED_PASSWORD_COMPLEXITY},
                };
await EnterpriseManagementExamples.EnterpriseRoleExamples.RoleManagedNodeExample.RoleEnforcementRemove(roleName: <rollName_here>, enforcement: enforcements);
```

{% endcode %}

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>PowerCommander</summary>

**コマンド:** `Remove-KeeperEnterpriseRoleEnforcement`

**別名:** `Remove-KeeperRoleEnforcement`

**フラグ:**

| フラグ            | 説明                                                                                         |
| -------------- | ------------------------------------------------------------------------------------------ |
| `-Role`        | ロール名またはID（必須、位置 0）                                                                         |
| `-Enforcement` | 削除するエンフォースメントのキー。セミコロンまたはカンマ区切り可。削除時はキーのみ（値なし）を指定。`KEY=value` 形式の場合はキー部分のみ使用されます。（必須、位置 1） |

**例:**

```powershell
PS> Remove-KeeperEnterpriseRoleEnforcement -Role PCRTest -Enforcement RESTRICT_FILE_UPLOAD                      
Command: role_enforcement_remove, Enforcement: RESTRICT_FILE_UPLOAD, Result: success
```

セミコロン区切り:

```powershell
PS > Remove-KeeperEnterpriseRoleEnforcement -Role "AdminRole" -Enforcement "TWO_FACTOR_DURATION_WEB;MASTER_PASSWORD_MINIMUM_LENGTH"
Command: role_enforcement_remove, Enforcement: TWO_FACTOR_DURATION_WEB, Result: success
Command: role_enforcement_remove, Enforcement: MASTER_PASSWORD_MINIMUM_LENGTH, Result: success
```

カンマ区切り:

```powershell
PS > Remove-KeeperEnterpriseRoleEnforcement -Role "AdminRole" -Enforcement "TWO_FACTOR_DURATION_WEB,MASTER_PASSWORD_MINIMUM_LENGTH"
Command: role_enforcement_remove, Enforcement: TWO_FACTOR_DURATION_WEB, Result: success
Command: role_enforcement_remove, Enforcement: MASTER_PASSWORD_MINIMUM_LENGTH, Result: success
```

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>Python CLI</summary>

近日公開

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>

<details>

<summary>Python SDK</summary>

近日公開

**参考:**

[コマンダーリファレンス](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands.md#changing-role-enforcements-and-privileges)

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.keeper.io/keeperpam/jp/commander-sdk/keeper-commander-sdks/sdk-command-reference/enterprise-management-commands/enterprise-role-commands.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
