> For the complete documentation index, see [llms.txt](https://docs.keeper.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.keeper.io/keeperpam/jp/commander-sdk/keeper-commander-sdks/sdk-command-reference/nested-shared-folder-commands/nsf-record-commands.md).

# NSFレコードコマンド

### 概要

**ロールベースのフォルダ権限を備えた階層型共有サブフォルダ**の導入に伴い、ボルトのフォルダ、共有、権限モデルを一から再構築し、すべてのユーザーとチームがより柔軟でスケールしやすい体験を得られるようになります。

### 利用可能な操作

NSF共有フォルダで利用できる操作の一覧です。

1. [NSFレコードの一覧](/keeperpam/jp/commander-sdk/keeper-commander-sdks/sdk-command-reference/nested-shared-folder-commands.md#list-command)
2. [NSFレコードの取得](/keeperpam/jp/commander-sdk/keeper-commander-sdks/sdk-command-reference/nested-shared-folder-commands.md#get-command)
3. [レコード詳細の取得](#record-details-command)
4. [NSFレコードの追加](#create-record-command)
5. [NSFレコードの編集](#update-record-command)
6. [NSFレコードの削除](#remove-unlink-record-command)
7. [レコードの共有](#share-record-command)
8. [レコードの移転](#transfer-record-command)

<details>

<summary>Power Commander</summary>

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

**別名:** `nsf-record-add`

**パラメータ**:

| パラメータ                   | 説明                                                                                                                                                                                                                             |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `-Title`                | 新しいレコードのタイトル (必須)                                                                                                                                                                                                              |
| `-RecordType`           | レコードタイプ (例: `login`、`general`)。既定は `general`                                                                                                                                                                                   |
| `-FolderUid`            | レコードの配置先フォルダUID (任意)                                                                                                                                                                                                           |
| `-Notes`                | レコードの任意のメモ                                                                                                                                                                                                                     |
| `-Fields`               | `key=value` ペア形式の任意のフィールド値 (例: `login=admin password=secret url=https://example.com`)                                                                                                                                          |
| `-GeneratePassword`     | ランダムなパスワードを生成し、`password` フィールドに保存                                                                                                                                                                                             |
| `-GeneratePassphrase`   | <p>ランダムなパスフレーズを生成し、<code>password</code> フィールドに保存。<code>-GeneratePassword</code> とは同時指定不可。<br>単独指定時の既定値: 5語、"-" 区切り、useCaps=true、useDigits=true</p>                                                                            |
| `-PassphraseRuleValues` | <p>パスフレーズのオプション設定 (指定時はパスフレーズも生成): <code>WordCount, Separator, UseCaps, UseDigits</code>。<br>例: <code>-GeneratePassphrase -PassphraseRuleValues 5,-,true,true</code> (WordCount: 5〜9。区切り: <code>- . \_ ! ?</code> またはスペース)</p> |

**例**:

{% code expandable="true" %}

```ps1
PS > Add-KeeperNSFRecord -Title Test1 -RecordType login login=a@gmail.com password=123                                
Record 'Test1' created successfully (UID: LXU5SkCZqwMTnqeqNBWJNyGw).
LXU5SkCZMTnqeqNBWJqwwNyGw
```

{% endcode %}

</details>

<details>

<summary>Power Commander</summary>

**コマンド:** `Edit-KeeperNSFRecord`

**別名:** `nsf-record-update`

**パラメータ**:

| パラメータ                   | 説明                                                                                                                                                                                                                             |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `-RecordUid`            | 更新するレコードのUID (必須)                                                                                                                                                                                                              |
| `-Title`                | レコードの新しいタイトル                                                                                                                                                                                                                   |
| `-RecordType`           | 新しいレコードタイプ                                                                                                                                                                                                                     |
| `-Notes`                | レコードの新しいメモ                                                                                                                                                                                                                     |
| `-Fields`               | 追加または更新するフィールド値 (`key=value` ペア)                                                                                                                                                                                               |
| `-GeneratePAssword`     | ランダムなパスワードを生成し、`password` フィールドに保存                                                                                                                                                                                             |
| `-GeneratePassphrase`   | <p>ランダムなパスフレーズを生成し、<code>password</code> フィールドに保存。<code>-GeneratePassword</code> とは同時指定不可。<br>単独指定時の既定値: 5語、"-" 区切り、useCaps=true、useDigits=true</p>                                                                            |
| `-PassphraseRuleValues` | <p>パスフレーズのオプション設定 (指定時はパスフレーズも生成): <code>WordCount, Separator, UseCaps, UseDigits</code>。<br>例: <code>-GeneratePassphrase -PassphraseRuleValues 5,-,true,true</code> (WordCount: 5〜9。区切り: <code>- . \_ ! ?</code> またはスペース)</p> |

**例**:

{% code expandable="true" %}

```ps1
PS >  Edit-KeeperNSFRecord -RecordUid LXU5SkCZMTnqeqNBWJNyGw -Title "updated_test" -RecordType contact
Record 'LXU5SkCZMTnqeqNBWJNyGw' updated successfully.
```

{% endcode %}

</details>

{% hint style="info" %}
従来の権限モデル下のフォルダでレコードを扱う場合は、[レコードコマンド](/keeperpam/jp/commander-sdk/keeper-commander-sdks/sdk-command-reference/record-commands.md)および[共有フォルダレコードコマンド](/keeperpam/jp/commander-sdk/keeper-commander-sdks/sdk-command-reference/sharing-commands/shared-folder-commands.md#shared-folder-change-record-permissions-command)をご参照ください。
{% endhint %}

### レコード詳細コマンド <a href="#record-details-command" id="record-details-command"></a>

1件以上のKeeper NSFレコードのメタデータ (UID、タイトル、タイプ、バージョン、リビジョン) を取得して表示します。UIDまたはタイトルを受け付け、解決できなかった識別子があれば表示します。

<details>

<summary>DotNet CLI</summary>

**コマンド:** `nsf-record-details`

**パラメータ:**

| パラメータ          | 説明                                               |
| -------------- | ------------------------------------------------ |
| `--recordUids` | 詳細を取得する1件以上のレコードUID (またはタイトル)。位置引数および残りの引数から受け付け |
| `--format`     | 出力形式: `table` (既定) または `json`                    |

**例:**

{% code expandable="true" %}

```bash
My Vault> nsf-record-details GS3J1s9ARg1-P5LRQOeRTA q7vvkVySnDPJeYhfA5xCEA
           Record UID: GS3J1s-9ARg1-P5LRQOeRTA
                Title: Record-Share
                 Type: login
              Version: 3
             Revision: 4983790

           Record UID: q7vvkVySnDP-JeYhfA5xCEA
                Title: Rec12
                 Type: login
              Version: 3
             Revision: 4988959

Total records retrieved: 2
```

{% endcode %}

</details>

<details>

<summary>DotNet SDK</summary>

**メソッド:**

```csharp
var vault = new VaultOnline(auth);
await vault.SyncDown();

var resolved = new List<KeeperNSFRecord>();
var notFound = new List<string>();

foreach (var id in recordUidsOrTitles)
{
    if (vault.TryResolveKeeperNSFRecord(id, out var rec))
    {
        resolved.Add(rec);
    }
    else
    {
        notFound.Add(id);
    }
}

foreach (var r in resolved)
{
    Console.WriteLine($"UID:      {r.RecordUid}");
    Console.WriteLine($"Title:    {r.Name}");
    Console.WriteLine($"Version:  {r.Version}");
    Console.WriteLine($"Revision: {r.Revision}");
    Console.WriteLine();
}

if (notFound.Count > 0)
{
    Console.WriteLine($"Forbidden / not found: {string.Join(", ", notFound)}");
}
```

</details>

<details>

<summary>Power Commander</summary>

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

**別名:** `nsf-record-details`

**パラメータ:**

| パラメータ         | 説明                                               |
| ------------- | ------------------------------------------------ |
| `-RecordUids` | 詳細を取得する1件以上のレコードUID (またはタイトル)。位置引数および残りの引数から受け付け |
| `-Format`     | 出力形式: `table` (既定) または `json`                    |

**例:**

{% code expandable="true" %}

```ps1
PS >  Get-KeeperNSFRecordDetails <record_uid>
           Record UID: <record_uid>
                Title: Updated_nsf
                 Type: contact
              Version: 3
             Revision: 4966123

Total records retrieved: 1
```

{% endcode %}

</details>

<details>

<summary>Python CLI</summary>

**コマンド:** `nsf-record-details`

**パラメータ:**

`record_uids` レコードUIDまたはタイトル\
`--format` {table, json} 出力形式 (既定: table)

**例**:

```shellscript
My Vault> nsf-record-details <record_uid>
Record UID: <record_uid>
  Title: Test Configuration
  Type: pamNetworkConfiguration
  Version: 6
  Revision: 3623320011

Total records retrieved: 1
```

</details>

<details>

<summary>Python SDK</summary>

**関数:** `get_nsf_record_details`

```python
    RECORD_IDENTIFIERS = ["My NSF Login"]  # UIDs or titles

    result = nsf_management.get_nsf_record_details(vault, RECORD_IDENTIFIERS)
    for record in result.get("data", []):
        print(f"Record UID: {record['record_uid']}")
        print(f"  Title: {record.get('title')}")
        print(f"  Type: {record.get('type', 'Unknown')}")
        print(f"  Version: {record.get('version', 0)}")
        print(f"  Revision: {record.get('revision', 0)}")
        print()
    forbidden = result.get("forbidden_records") or []
    if forbidden:
        print(f"Forbidden records: {len(forbidden)}")
        for uid in forbidden:
            print(f"  {uid}")
    print(f"Total records retrieved: {len(result.get('data', []))}")
```

</details>

### レコード作成コマンド <a href="#create-record-command" id="create-record-command"></a>

Keeper NSFに新しいレコードを作成します。レコードタイプ、配置先フォルダ、メモ、型付きフィールドを任意で設定できます。

<details>

<summary>DotNet CLI</summary>

**コマンド:** `nsf-record-add`

**パラメータ:**

| パラメータ                | 説明                                           |
| -------------------- | -------------------------------------------- |
| `-t` or `--type`     | レコードタイプ (例: `login`、`general`)。既定は `general` |
| `--folder`           | レコードを配置する任意のフォルダUID                          |
| `--notes`            | レコードの任意のメモ                                   |
| `-g` or `--generate` | ランダムパスワードを生成し、`password` フィールドに保存            |

**例:**

{% code expandable="true" %}

```bash
My Vault> nsf-record-add "H12" --type login --notes "hello" login=a2@exam -g
Record 'H12' created successfully (UID: NBPPHWMkzjss3z_WacXoIA).

```

{% endcode %}

</details>

<details>

<summary>DotNet SDK</summary>

**メソッド:**

```csharp
var vault = new VaultOnline(auth);
await vault.SyncDown();

var fields = new Dictionary<string, string>
{
    ["login"]    = login,
    ["password"] = password,
    ["url"]      = url,
};

string newRecordUid = await vault.CreateKeeperNSFRecord(
    title:       title,
    recordType:  "login",
    folderUid:   folderUid,
    notes:       notes,
    fields:      fields);

Console.WriteLine($"Created Keeper NSF record: {newRecordUid}");
```

</details>

<details>

<summary>Power Commander</summary>

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

**別名:** `nsf-record-add`

**パラメータ:**

| パラメータ                   | 説明                                                                                                                                                                                                                             |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `-Title`                | 新しいレコードのタイトル (必須)                                                                                                                                                                                                              |
| `-RecordType`           | レコードタイプ (例: `login`、`general`)。既定は `general`                                                                                                                                                                                   |
| `-FolderUid`            | レコードを配置する任意のフォルダUID                                                                                                                                                                                                            |
| `-Notes`                | レコードの任意のメモ                                                                                                                                                                                                                     |
| `-Fields`               | 任意のフィールド値 (`key=value` 形式。例: `login=admin password=secret url=https://example.com`)                                                                                                                                            |
| `-GeneratePassword`     | ランダムパスワードを生成し、`password` フィールドに保存                                                                                                                                                                                              |
| `-GeneratePassphrase`   | <p>ランダムなパスフレーズを生成し、<code>password</code> フィールドに保存。<code>-GeneratePassword</code> とは同時指定不可。<br>単独指定時の既定値: 5語、"-" 区切り、useCaps=true、useDigits=true</p>                                                                            |
| `-PassphraseRuleValues` | <p>パスフレーズのオプション設定 (指定時はパスフレーズも生成): <code>WordCount, Separator, UseCaps, UseDigits</code>。<br>例: <code>-GeneratePassphrase -PassphraseRuleValues 5,-,true,true</code> (WordCount: 5〜9。区切り: <code>- . \_ ! ?</code> またはスペース)</p> |

**例:**

{% code expandable="true" %}

```ps1
PS > Add-KeeperNSFRecord -Title Test1 -RecordType login login=a@gmail.com password=123                                
Record 'Test1' created successfully (UID: LXU5SkCZqwMTnqeqNBWJNyGw).
LXU5SkCZMTnqeqNBWJqwwNyGw
```

{% endcode %}

</details>

<details>

<summary>Python CLI</summary>

**コマンド:** `nsf-record-add`

**パラメータ:**

`fields` ドット記法の文字列からレコードタイプデータを読み込む\
`--syntax-help` フィールドパラメータのヘルプを表示\
`-f, --force` 警告を無視\
`-t, --title` TITLE レコードタイトル\
`-rt, --record-type` RECORD\_TYPE\
`-n, --notes` NOTES レコードメモ\
`--folder` FOLDER レコードを保存するフォルダ名またはUID

**例:**

```shellscript
My Vault> nsf-record-add -t Test_record_add -n "Test and demo how to create records" -rt login --folder <folder_uid>
NSF record created: <record_uid>
```

</details>

<details>

<summary>Python SDK</summary>

**関数:** `create_nsf_record`

```python
    TITLE = "My NSF Login"
    RECORD_TYPE = "login"  # e.g. login, password, general
    FOLDER_UID_OR_NAME = "Projects"  # NSF folder name or UID; None for root
    NOTES = "Created via SDK"
    FIELDS = {
        "login": "user@example.com",
        "password": "changeme",
        "url": "https://example.com",
    }

    folder_uid = None
    if FOLDER_UID_OR_NAME:
        folder_uid = nsf_management.resolve_nsf_folder_uid(vault, FOLDER_UID_OR_NAME)
        if not folder_uid:
            raise ValueError(f"NSF folder not found: {FOLDER_UID_OR_NAME}")

    result = nsf_management.create_nsf_record(
        vault,
        title=TITLE,
        record_type=RECORD_TYPE,
        folder_uid=folder_uid,
        fields=FIELDS,
        notes=NOTES,
    )
    print(f"NSF record created: {result.record_uid} (status: {result.status})")
```

</details>

### レコード更新コマンド <a href="#update-record-command" id="update-record-command"></a>

既存のKeeper NSFレコードを更新します。指定したパラメータのみ変更され、それ以外は保持されます。`-Title`、`-RecordType`、`-Notes`、またはフィールド値のいずれか1つ以上を指定する必要があります。

<details>

<summary>DotNet CLI</summary>

**コマンド:** `nsf-record-update`

**パラメータ:**

| パラメータ                | 説明                                |
| -------------------- | --------------------------------- |
| `-RecordUid`         | 更新するレコードのUID (必須)                 |
| `--title`            | レコードの新しいタイトル                      |
| `-t` or `--type`     | 新しいレコードタイプ                        |
| `--notes`            | レコードの新しいメモ                        |
| `-g` or `--generate` | ランダムパスワードを生成し、`password` フィールドに保存 |

**例:**

{% code expandable="true" %}

```bash
My Vault> nsf-record-update "NBPPHWMkzjss3z_WacXoIA" --type login --notes "hello" login=a3@exam -g --title "H134"
Record 'NBPPHWMkzjss3z_WacXoIA' updated successfully.
```

{% endcode %}

</details>

<details>

<summary>DotNet SDK</summary>

**メソッド:**

```csharp
var vault = new VaultOnline(auth);
await vault.SyncDown();

var fields = new Dictionary<string, string>
{
    ["password"] = newPassword,
};

await vault.UpdateKeeperNSFRecord(
    recordUid:   recordUid,
    title:       newTitle,
    recordType:  null,
    notes:       newNotes,
    fields:      fields);

Console.WriteLine("Keeper NSF record updated.");
```

</details>

<details>

<summary>Power Commander</summary>

**コマンド:** `Edit-KeeperNSFRecord`

**別名:** `nsf-record-update`

**パラメータ:**

| パラメータ                   | 説明                                                                                                                                                                                                                             |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `-RecordUid`            | 更新するレコードのUID (必須)                                                                                                                                                                                                              |
| `-Title`                | レコードの新しいタイトル                                                                                                                                                                                                                   |
| `-RecordType`           | 新しいレコードタイプ                                                                                                                                                                                                                     |
| `-Notes`                | レコードの新しいメモ                                                                                                                                                                                                                     |
| `-Fields`               | 追加または更新するフィールド値 (`key=value` 形式)                                                                                                                                                                                               |
| `-GeneratePAssword`     | ランダムパスワードを生成し、`password` フィールドに保存                                                                                                                                                                                              |
| `-GeneratePassphrase`   | <p>ランダムなパスフレーズを生成し、<code>password</code> フィールドに保存。<code>-GeneratePassword</code> とは同時指定不可。<br>単独指定時の既定値: 5語、"-" 区切り、useCaps=true、useDigits=true</p>                                                                            |
| `-PassphraseRuleValues` | <p>パスフレーズのオプション設定 (指定時はパスフレーズも生成): <code>WordCount, Separator, UseCaps, UseDigits</code>。<br>例: <code>-GeneratePassphrase -PassphraseRuleValues 5,-,true,true</code> (WordCount: 5〜9。区切り: <code>- . \_ ! ?</code> またはスペース)</p> |

**例:**

{% code expandable="true" %}

```ps1
PS >  Edit-KeeperNSFRecord -RecordUid LXU5SkCZMTnqeqNBWJNyGw -Title "updated_test" -RecordType contact
Record 'LXU5SkCZMTnqeqNBWJNyGw' updated successfully.
```

{% endcode %}

</details>

<details>

<summary>Python CLI</summary>

**コマンド:** `nsf-record-update`

**パラメータ**:

`fields` ドット記法の文字列からレコードタイプデータを読み込む\
`--syntax-help` フィールドパラメータのヘルプを表示\
`-f, --force` 警告を無視\
`-t, --title` レコードタイトルを変更\
`-rt, --record-type` RECORD\_TYPE\
`-n, --notes` NOTES レコードメモの変更\
`-r, --record` RECORD レコードUIDまたはタイトル

**例**:

```shellscript
My Vault> nsf-record-update -t Test_record_add_nsf -n "Test and demo how to create records" -rt login -r <record_uid>
NSF record updated: <record_uid> (RS_SUCCESS)
```

</details>

<details>

<summary>Python SDK</summary>

**関数:** `update_nsf_record`

```python
    RECORD_UID_OR_TITLE = "My NSF Login"
    NEW_TITLE = "My NSF Login (updated)"
    FIELDS = {"password": "new-secret-value"}
    NOTES = "Updated via SDK"

    result = nsf_management.update_nsf_record(
        vault,
        RECORD_UID_OR_TITLE,
        title=NEW_TITLE,
        fields=FIELDS,
        notes=NOTES,
    )
    print(f"NSF record updated: {result.record_uid} (status: {result.status})")
```

</details>

### レコード削除/リンク解除コマンド <a href="#remove-unlink-record-command" id="remove-unlink-record-command"></a>

v3 remove APIを使用して1件以上のKeeper NSFレコードを削除します。常にプレビューを実行し、影響を表示してから確認を求めます。`-Force` を指定した場合は確認をスキップします。

<details>

<summary>DotNet CLI</summary>

**コマンド:** `nsf-rm`

**パラメータ:**

| パラメータ                 | 説明                                             |
| --------------------- | ---------------------------------------------- |
| `--folder`            | 操作の文脈となるフォルダUIDまたは名前 (`unlink` では必須)           |
| `-o` or `--operation` | `owner-trash` (既定)、`folder-trash`、または `unlink` |
| `-f` or `--force`     | プレビュー後の確認プロンプトをスキップ                            |
| `--dry-run`           | プレビューのみ。レコードは削除しない                             |

**例:**

{% code expandable="true" %}

```bash
My Vault> nsf-rm NBPPHWMkzjss3z_WacXoIA

=== Keeper NSF Remove Preview ===

Record: NBPPHWMkzjss3z_WacXoIA
  Folder context: AAAAAAAAAAAAAAAAAALjjA
  Status: Success
  Impact:
    Folders:          0
    Records:          1
    Affected users:   1
    Affected teams:   0
    Other locations:  1
    Warning: Record will be removed from all folders and moved to owner's trash
Are you sure you want to move the record(s) above to your trash? (yes/No) yes

Removing records...

Keeper NSF record removal completed.
```

{% endcode %}

</details>

<details>

<summary>DotNet SDK</summary>

**メソッド:**

```csharp
var vault = new VaultOnline(auth);
await vault.SyncDown();

var removals = new List<KeeperNSFRecordRemoval>();
foreach (var name in recordUidsOrTitles)
{
    if (!vault.TryResolveKeeperNSFRecord(name, out var record)) continue;

    vault.TryResolveKeeperNSFRecordRemovalFolder(
        record.RecordUid,
        folderUidOrName,
        KeeperNSFRecordRemoveOperation.FolderTrash,
        out var folderUid);

    removals.Add(new KeeperNSFRecordRemoval
    {
        RecordUid = record.RecordUid,
        FolderUid = folderUid,
        Operation = KeeperNSFRecordRemoveOperation.FolderTrash,
    });
}

var preview = await vault.RemoveKeeperNSFRecords(removals, dryRun: true);
VaultOnline.ValidateRemoveResponse(preview.PreviewResponse, throwOnWarnings: false);

var confirm = await vault.RemoveKeeperNSFRecords(removals, dryRun: false);
if (!confirm.Confirmed)
{
    throw new InvalidOperationException("Record removal was not confirmed by the server.");
}

await vault.SyncDown(false);
```

</details>

<details>

<summary>Power Commander</summary>

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

**別名:** `nsf-rm`

**パラメータ:**

| パラメータ        | 説明                                             |
| ------------ | ---------------------------------------------- |
| `-Record`    | 1件以上のレコードUIDまたはタイトル。パイプライン入力を受け付け              |
| `-Folder`    | 操作の文脈となるフォルダUIDまたは名前 (`unlink` では必須)           |
| `-Operation` | `owner-trash` (既定)、`folder-trash`、または `unlink` |
| `-Force`     | プレビュー後の確認プロンプトをスキップ                            |
| `-DryRun`    | プレビューのみ。レコードは削除しない                             |

**例:**

{% code expandable="true" %}

```ps1
PS > Remove-KeeperNSFRecord -Record LXU5SAWkCZMTnqeqNBWJNyGw

=== Keeper NSF Remove Preview ===

Record: LXU5SkCZMTnqeqNBWJNyGw
  Folder context: AA123424ASSGREGGBJYAAAAALjjA
  Status: Success
  Impact:
    Folders:          0
    Records:          1
    Affected users:   1
    Affected teams:   0
    Other locations:  1
    Warning: Record will be removed from all folders and moved to owner's trash
Are you sure you want to move the record(s) above to your trash? (yes/No): y

Removing records...

Keeper NSF record removal completed.
```

{% endcode %}

</details>

<details>

<summary>Python CLI</summary>

**コマンド:** `nsf-rm`

**パラメータ**:

`RECORD` 削除するレコードUIDまたはタイトル (最大500件)\
`--folder` FOLDER 操作コンテキスト用のフォルダUIDまたは名前\
`--operation, -o` {owner-trash,folder-trash,unlink}\
削除操作 (既定: owner-trash)\
`--force, -f` プレビュー後の確認をスキップ\
`--dry-run` プレビューのみ。削除しない

**例**:

```shellscript
My Vault> nsf-ln <record_uid> <folder_uid>
Record <record_uid> linked to folder <folder_uid>
```

</details>

<details>

<summary>Python SDK</summary>

**関数:** `remove_nsf_records`

```python
    RECORD_IDENTIFIERS = ["My NSF Login"]  # UIDs or titles
    OPERATION = "owner-trash"  # owner-trash, folder-trash, unlink
    FOLDER_UID_OR_NAME = None  # Required when OPERATION is unlink
    FORCE = True  # Skip confirmation after preview
    DRY_RUN = False  # Preview only

    if OPERATION == "unlink" and not FOLDER_UID_OR_NAME:
        raise ValueError('--folder is required when operation is "unlink"')

    removals = nsf_management.build_nsf_record_removals(
        vault,
        RECORD_IDENTIFIERS,
        operation_type=OPERATION,
        folder_uid=FOLDER_UID_OR_NAME,
    )
    preview = nsf_management.remove_nsf_records(vault, removals, dry_run=True)
    for pr in preview.preview_results:
        print(f"  {pr.item_uid}: {pr.error or 'ok to remove'}")
    if DRY_RUN:
        print("[Dry-run] No records were deleted.")
        return
    if not FORCE:
        answer = input("Proceed with deletion? [y/N]: ").strip().lower()
        if answer not in ("y", "yes"):
            print("Aborted.")
            return
    result = nsf_management.remove_nsf_records(vault, removals, dry_run=False)
    if result.confirmed:
        print("Record removal completed.")
    else:
        print("Record removal was not confirmed by the server.")
```

</details>

### レコード共有コマンド <a href="#share-record-command" id="share-record-command"></a>

1人以上のユーザーとKeeper NSFレコードを共有または共有解除します。付与時は、レコードキーを各受信者向けに暗号化して送信します。

<details>

<summary>DotNet CLI</summary>

**コマンド:** `nsf-share-record`

**パラメータ:**

| パラメータ        | 説明                                                                                                         |
| ------------ | ---------------------------------------------------------------------------------------------------------- |
| `position 0` | 共有または共有解除するレコードのUID (必須)                                                                                   |
| `--action`   | `grant` (既定) または `revoke`                                                                                  |
| `--email`    | 1件以上のユーザーメールアドレス (必須)                                                                                      |
| `--role`     | `grant` 用のアクセスロール: `viewer` (既定)、`shared-manager`、`content-manager`、`content-share-manager`、`full-manager` |

**例:**

{% code expandable="true" %}

```bash
My Vault> nsf-share-record BZ--Sa17UztyFkh5JWWgBg --action grant --email example@keepersecurity.com --role
Granted 'viewer' access to 'example@keepersecurity.com' on record 'BZ--Sa17UztyFkh5JWWgBg'.
```

{% endcode %}

</details>

<details>

<summary>DotNet SDK</summary>

**メソッド:**

```csharp
var vault = new VaultOnline(auth);
await vault.SyncDown();

foreach (var email in emails)
{
    await vault.ShareKeeperNSFRecord(
        recordUid: recordUid,
        userEmail: email,
        role:      "content-manager");
}

await vault.UnshareKeeperNSFRecord(
    recordUid: recordUid,
    userEmail: emailToRemove);
```

</details>

<details>

<summary>Power Commander</summary>

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

**別名:** `nsf-share-record`

**パラメータ:**

| パラメータ        | 説明                                                                                                         |
| ------------ | ---------------------------------------------------------------------------------------------------------- |
| `-RecordUid` | 共有または共有解除するレコードのUID (必須)                                                                                   |
| `-Action`    | `grant` (既定) または `revoke`                                                                                  |
| `-Email`     | 1件以上のユーザーメールアドレス (必須)                                                                                      |
| `-Role`      | `grant` 用のアクセスロール: `viewer` (既定)、`shared-manager`、`content-manager`、`content-share-manager`、`full-manager` |

**例:**

{% code overflow="wrap" expandable="true" %}

```ps1
PS > Set-KeeperNSFRecordAccess -RecordUid ykGAnzx6n1VRMcH-SPTtsA -Email example1@keepersecurity.com -Role viewer
Granted 'viewer' access to 'example1@keepersecurity.com' on record 'ykGAnzx6n1VRMcH-SPTtsA'.
```

{% endcode %}

</details>

<details>

<summary>Python CLI</summary>

**コマンド:** `Not implemented`

**パラメータ**:

`record` レコードUID、タイトル、またはフォルダ\
`-e, --email` 受信者メール (繰り返し指定可)\
`-a, --action` {grant, revoke, owner}\
`-r, --role` {viewer, share-manager, content-manager, content-share-manager, full-manager}\
`-R, --recursive` 共有フォルダ階層にコマンドを適用\
`--dry-run` コミットせずに権限変更を表示\
`--expire-at` EXPIRE\_AT 共有の有効期限 (`never` または UTC 日時)\
`--expire-in` \[(mi)nutes|(h)ours|(d)ays|(mo)nths|(y)ears]\
共有の有効期限: never または期間

**例**:

```shellscript
My Vault> nsf-share-record -e user@keepersecurity.com -a grant -r content-manager --expire-in 45mi <record_uid>
Record <record_uid> permissions grant for user@keepersecurity.com
My Vault>
```

</details>

<details>

<summary>Python SDK</summary>

**関数:** `share_nsf_record_with_action`

```python
    RECORD_UID_OR_TITLE = "My NSF Login"
    RECIPIENT_EMAIL = "colleague@example.com"
    ACTION = "grant"  # grant, revoke, owner
    ROLE = "viewer"  # Required for grant
    RECURSIVE = False
    EXPIRATION_TIMESTAMP = None

    record_uids = nsf_sharing.resolve_nsf_share_record_uids(
        vault, RECORD_UID_OR_TITLE, recursive=RECURSIVE
    )
    for record_uid in record_uids:
        result, effective = nsf_sharing.share_nsf_record_with_action(
            vault,
            record_uid,
            RECIPIENT_EMAIL,
            action=ACTION,
            role=ROLE,
            expiration_timestamp=EXPIRATION_TIMESTAMP,
        )
        if result.success:
            print(f"Record {record_uid} permissions {effective} for {RECIPIENT_EMAIL}")
        else:
            msg = result.results[0]["message"] if result.results else "failed"
            print(f"Share failed for {record_uid}: {msg}")
```

</details>

### レコード移転コマンド <a href="#transfer-record-command" id="transfer-record-command"></a>

1件以上のKeeper NSFレコードの所有権を別のユーザーへ移転します。位置引数には、1件以上のレコードUID (またはタイトル) を指定し、最後に新しい所有者のメールアドレスを指定します。移転が完了すると、対象レコードの所有者ではなくなります。

<details>

<summary>DotNet CLI</summary>

**コマンド:** `nsf-transfer-record`

**パラメータ:**

| パラメータ        | 説明                                                   |
| ------------ | ---------------------------------------------------- |
| `position 0` | 1件以上のレコードUIDまたはタイトル、続けて最後の位置引数として新しい所有者のメールアドレス (必須) |
| `--force`    | 安全警告プロンプトをスキップ                                       |

**例:**

{% code expandable="true" %}

```bash
My Vault> nsf-transfer-record BZ--Sa17UztyFkh5JWWgBg apohane@keepersecurity.com

*** WARNING ***
After ownership is transferred you will lose owner rights on the record(s).
You may still see the record(s) if you retain access via a shared folder or admin role; otherwise they will disappear after sync.
Make sure the new owner is correct before continuing.

Are you sure you want to transfer ownership to 'apohane@keepersecurity.com'? This action cannot be undone. (yes/No) y
Record 'BZ--Sa17UztyFkh5JWWgBg' ownership transferred to apohane@keepersecurity.com.
You no longer own this record. Run sync-down to refresh; it will remain visible only if you retain accessvia a shared folder or admin role.
```

{% endcode %}

</details>

<details>

<summary>DotNet SDK</summary>

**メソッド:**

```csharp
var vault = new VaultOnline(auth);
await vault.SyncDown();

var records = new List<string> { recordUidOrTitle1, recordUidOrTitle2 };

var results = await vault.TransferKeeperNSFRecordOwnership(
    recordUidOrTitles: records,
    newOwnerEmail:     newOwnerEmail);

VaultOnline.ValidateKeeperNSFTransferResults(results);

foreach (var result in results)
{
    Console.WriteLine($"Record '{result.RecordUid}' ownership transferred to {result.Username}.");
}

await vault.SyncDown(false);
```

</details>

<details>

<summary>Power Commander</summary>

**コマンド:** `Transfer-KeeperNSFRecordOwnership`

**別名:** `nsf-transfer-record`

**パラメータ:**

| パラメータ           | 説明                                                   |
| --------------- | ---------------------------------------------------- |
| `-ArgumentList` | 1件以上のレコードUIDまたはタイトル、続けて最後の位置引数として新しい所有者のメールアドレス (必須) |
| `-Force`        | 安全警告プロンプトをスキップ                                       |

**例:**

{% code overflow="wrap" expandable="true" %}

```ps1
PS > Transfer-KeeperNSFRecordOwnership oqf7DOKZvSYuwhwFc6qvOw example1@keepersecurity.com

*** WARNING ***
After ownership is transferred you will lose owner rights on the record(s).
You may still see the record(s) if you retain access via a shared folder or admin role; otherwise they will disappear after sync.
Make sure the new owner is correct before continuing.

Are you sure you want to transfer ownership to 'example1@keepersecurity.com'? This action cannot be undone. (yes/No): y
Record 'oqf7DOKZvSYuwhwFc6qvOw' ownership transferred to example1@keepersecurity.com.
You no longer own this record. Run Sync-Keeper to refresh; it will remain visible only if you retain access via a shared folder or admin role.
```

{% endcode %}

</details>

<details>

<summary>Python CLI</summary>

**コマンド:** `nsf-transfer-record`

**パラメータ:**

`record_uids` レコードUIDまたはタイトル

`new_owner_email` 新しい所有者のメールアドレス

**例:**

```
My Vault> nsf-transfer-record <record_uid> user@keepersecurity.com
Record '<record_uid>' transferred to user@keepersecurity.com
You will no longer have access to this record!
My Vault>
```

</details>

<details>

<summary>Python SDK</summary>

**関数:** `transfer_nsf_record_ownership`

```python
    RECORD_IDENTIFIERS = ["My NSF Login"]
    NEW_OWNER_EMAIL = "newowner@example.com"

    for identifier in RECORD_IDENTIFIERS:
        result = nsf_sharing.transfer_nsf_record_ownership(
            vault, identifier, NEW_OWNER_EMAIL
        )
        for row in result.results:
            if row.get("success"):
                print(f"Record '{row['record_uid']}' transferred to {NEW_OWNER_EMAIL}")
                print("You will no longer have access to this record!")
            else:
                print(f"Transfer failed: {row.get('message')}")
```

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.keeper.io/keeperpam/jp/commander-sdk/keeper-commander-sdks/sdk-command-reference/nested-shared-folder-commands/nsf-record-commands.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
