---
title: "เครื่องมือ MSP"
description: "PowerShell, Datto RMM, N-able, ConnectWise Automate การออกข้อมูลรับรองสำหรับฐานลูกค้าของคุณ"
lang: th
url: https://clavitor.ai/th/developers/msp
markdown: https://clavitor.ai/th/developers/msp.md
translation_of: https://clavitor.ai/en/developers/msp.md
authoritative: false
publisher: Clavitor LLC
---

> This is the Thai translation of [MSP Tools](https://clavitor.ai/en/developers/msp.md). The original English text is authoritative; where the two differ, the English version prevails.

# เครื่องมือ MSP: RMM ของคุณเรียกใช้ API อยู่แล้ว Clavitor ทำให้การเรียกใช้เหล่านั้นปลอดภัยครับ

ช่างเทคนิคของคุณใช้ Datto, N-able และ ConnectWise ทุกวัน ทุกสคริปต์ ทุกการทำงานอัตโนมัติ และทุกงานที่ตั้งเวลาไว้ล้วนต้องการข้อมูลรับรอง ปัจจุบันข้อมูลเหล่านี้ถูกเก็บในตัวแปรสคริปต์ ฟิลด์กำหนดเอง หรือห้องนิรภัยร่วมกันที่ทุกคนสามารถอ่านได้ พร็อกซีและ CLI ของ Clavitor จะเปลี่ยนสิ่งนี้โดยไม่เปลี่ยน workflow ของคุณครับ

## รูปแบบพร็อกซีสำหรับ RMM

ตั้งค่า `HTTPS_PROXY` บน endpoint แล้วสคริปต์ที่มีอยู่ของคุณจะทำงานได้เหมือนเดิมโดยไม่มีการเปลี่ยนแปลง พร็อกซีจะดักจับคำขอ HTTPS ขาออก แปลงการอ้างอิง `clavitor://` ในเฮดเดอร์ และแทรกข้อมูลรับรองจริง สคริปต์ของคุณจะไม่เห็นความลับนี้ และคอนโซล RMM ของคุณจะไม่บันทึกมันครับ

```
# On the managed endpoint — one-time setup

$env:HTTPS_PROXY = "http://localhost:1983"

# Your existing automation scripts work unchanged

# The proxy resolves clavitor:// references in request headers

Invoke-RestMethod -Uri "https://api.openai.com/v1/models" `
  -Headers @{ Authorization = "Bearer clavitor://OpenAI/key" }
```

## PowerShell

PowerShell เป็นภาษาที่ MSP ใช้ทุกวัน ทั้ง CLI และพร็อกซีต่างทำงานได้แบบ native ครับ

### CLI — ค่าเดี่ยว

```
# Resolve, use, scrub — the credential lives for one statement

$cred = clavitor-cli get "Client-Acme/VPN" --field password
Add-VpnConnection -Name "Acme" -ServerAddress "vpn.acme.com" -AuthenticationMethod MSChapv2
$secure = ConvertTo-SecureString $cred -AsPlainText -Force
Set-VpnConnectionUsernamePassword -ConnectionName "Acme" -Password $secure
Remove-Variable cred, secure
```

### Render — เทมเพลตการกำหนดค่า

```
# Template with clavitor:// references (safe to store in your RMM)

clavitor-cli render monitoring-config.json | `
  Set-Content -Path "C:\ProgramData\Monitor\config.json"
```

### พร็อกซี — การแทรกอย่างโปร่งใส

```
$env:HTTPS_PROXY = "http://localhost:1983"

# Every Invoke-RestMethod and Invoke-WebRequest now resolves clavitor://

Invoke-RestMethod -Uri "https://api.datto.com/v1/devices" `
  -Headers @{ Authorization = "Bearer clavitor://Datto API/key" }
```

## Atera

Atera จะแทนที่ตัวยึดตำแหน่งฟิลด์กำหนดเองลงในพารามิเตอร์สคริปต์ขณะรันไทม์ โดยใช้ไวยากรณ์ `{[Atera.<level>.CustomField.<name>]}` ส่งโทเค็น Clavitor ไปยังสคริปต์ติดตั้งแบบครั้งเดียวในฐานะพารามิเตอร์ สคริปต์ในภายหลังจะเรียกใช้ CLI บน endpoint ครับ

### ติดตั้งผ่านโปรไฟล์ IT Automation

ในไลบรารีสคริปต์ Atera ให้สร้างสคริปต์ PowerShell ชื่อ **Install Clavitor** ที่มีหนึ่งพารามิเตอร์ ในโปรไฟล์ IT Automation ที่รันสคริปต์นี้ ให้เรียกใช้ด้วยตัวยึดตำแหน่งฟิลด์ระดับลูกค้า:

```
Install-Clavitor.ps1 -Token "{[Atera.Customer.CustomField.ClavitorToken]}"
```

Atera จะแทนที่ค่าก่อนที่เอเจนต์จะอ่านรายการอาร์กิวเมนต์ สคริปต์:

```
param([Parameter(Mandatory)][string]$Token)
$Token | clavitor-cli init
Remove-Variable Token
```

### ดึงข้อมูลรับรองขณะรันไทม์

เมื่อ endpoint ถูกลงทะเบียนแล้ว สคริปต์ Atera ในภายหลังทุกสคริปต์จะอ่านข้อมูลรับรองจากห้องนิรภัย โดย Atera จะเก็บเฉพาะช่องโทเค็นเท่านั้น:

```
$pass = clavitor-cli get "Client-Acme/SQL Server" --field password
$secure = ConvertTo-SecureString $pass -AsPlainText -Force
Invoke-Sqlcmd -ServerInstance "sql.acme.local" `
  -Credential (New-Object PSCredential("sa", $secure)) -Query "SELECT 1"
Remove-Variable pass, secure
```

## ConnectWise Automate

Automate จะแทนที่มาโคร Extra Data Field (EDF) ลงในอาร์กิวเมนต์ขั้นตอนสคริปต์โดยใช้ไวยากรณ์ `{%^el:FieldName^%}` (EDF ระดับคอมพิวเตอร์) CLI จะติดตั้งผ่านสคริปต์ Automate ที่ดาวน์โหลดไบนารีและเรียกใช้ขั้นตอน PowerShell โดยส่งโทเค็นเป็นพารามิเตอร์ ซึ่งค่า EDF จะถูกแทนที่ก่อนที่ขั้นตอนสคริปต์จะทำงานครับ

### สคริปต์ Automate: ติดตั้ง

ในตัวแก้ไขสคริปต์ Automate ให้สร้างสคริปต์ที่มีสองขั้นตอน:

```
Step 1  File Download from LTShare       clavitor-cli.exe → %windir%\Temp\
Step 2  Shell Execute (PowerShell)       Install-Clavitor.ps1 -Token "{%^el:ClavitorToken^%}"
```

มาโคร `{%^el:ClavitorToken^%}` จะถูกแทนที่ด้วยค่า EDF ระดับคอมพิวเตอร์ก่อนที่ขั้นตอน PowerShell จะทำงาน รักษาความยาวโทเค็นให้ต่ำกว่า 255 ตัวอักษรเพื่อให้อยู่ในขีดจำกัดการแทนที่ของ LabReplace ตัวสคริปต์เอง:

```
# Install-Clavitor.ps1

param([Parameter(Mandatory)][string]$Token)
$Token | clavitor-cli init
Remove-Variable Token
```

### สคริปต์ Automate: การหมุนเวียนข้อมูลรับรองโดเมน

สคริปต์ในภายหลังจะอ่านจากห้องนิรภัยและเขียนสถานะกลับไปยัง EDF เพื่อแสดงบนแดชบอร์ด:

```
$cred = clavitor-cli get "Client-Delta/Domain Admin" --field password
$secure = ConvertTo-SecureString $cred -AsPlainText -Force
Reset-ComputerMachinePassword `
  -Credential (New-Object PSCredential("administrator", $secure))
# Push timestamp back to EDF "LastRotation" via Automate's ExtraData Set Value step

Write-Output (Get-Date -Format o)
Remove-Variable cred, secure
```

## Datto RMM

Datto RMM จะเปิดเผยตัวแปรไซต์และตัวแปรส่วนกลางให้กับคอมโพเนนต์ PowerShell ในฐานะตัวแปรสภาพแวดล้อมที่มีคำนำหน้า `$env:` ฟิลด์ที่ผู้ใช้กำหนด (UDF) จะถูกเปิดเผยเป็น `$env:UDF_1` ถึง `$env:UDF_30` หนึ่งคอมโพเนนต์จะติดตั้ง CLI และทุกอย่างหลังจากนั้นจะอ่านจากห้องนิรภัยครับ

### คอมโพเนนต์: ติดตั้งและเริ่มต้น

กำหนดตัวแปรไซต์ `ClavitorToken` ในคอนโซล Datto ซึ่งจะปรากฏภายในคอมโพเนนต์เป็น `$env:ClavitorToken`:

```
# Datto RMM component: bootstrap Clavitor CLI

# Site variable "ClavitorToken" → $env:ClavitorToken at runtime

$env:ClavitorToken | clavitor-cli init
```

### คอมโพเนนต์: ตรวจสอบ API ผ่านพร็อกซี

คอมโพเนนต์ในภายหลังจะเขียนการอ้างอิง `clavitor://` ในเฮดเดอร์คำขอ โดยพร็อกซีจะแปลงการอ้างอิงเหล่านั้นบนโฮสต์ ข้อมูลรับรองจะไม่เข้าไปอยู่ในหน่วยความจำของสคริปต์หรือบันทึกของ Datto:

```
# Scheduled monitor — runs every 15 minutes

$env:HTTPS_PROXY = "http://localhost:1983"
$response = Invoke-RestMethod -Uri "https://api.client.com/v1/status" `
  -Headers @{ Authorization = "Bearer clavitor://Client-Bravo/Monitoring API" }

# Push a status code back into UDF_5 for the Datto dashboard

New-ItemProperty -Path "HKLM:\SOFTWARE\CentraStage" `
  -Name "Custom5" -Value $response.status -Force | Out-Null
```

## Kaseya VSA

ขั้นตอนเอเจนต์ VSA จะแทนที่มาโคร `#variable#` ลงในอาร์กิวเมนต์ PowerShell ขณะรันไทม์ จากนั้นรันสคริปต์ผ่านกลุ่มขั้นตอน `executePowershell` (`executePowerShell64BitSystem` ฯลฯ) ฟิลด์กำหนดเองในระเบียนเอเจนต์จะเก็บโทเค็น Clavitor และขั้นตอนจะส่งไปยัง init ผ่าน stdin ครับ

### ขั้นตอนเอเจนต์: ติดตั้ง

เพิ่มฟิลด์กำหนดเองของเอเจนต์ `ClavitorToken` (Audit → Edit Profile → Custom Fields) จากนั้นสร้างโพรซีเจอร์ที่มีสองขั้นตอน:

```
Step 1  Get File from VSA Server     clavitor-cli.exe → C:\Program Files\Clavitor\
Step 2  Execute PowerShell (64 Sys)  "C:\Program Files\Clavitor\clavitor-cli.exe init" \
                                     stdin = "#vAgentConfiguration.ClavitorToken#"
```

มาโคร `#vAgentConfiguration.ClavitorToken#` จะถูกแทนที่ด้วยค่าฟิลด์กำหนดเองก่อนที่ VSA จะรันคำสั่ง โดยโทเค็นจะไม่ปรากฏในประวัติโพรซีเจอร์ของ VSA ครับ

### ขั้นตอนเอเจนต์: การหมุนเวียนข้อมูลรับรองที่มีสิทธิพิเศษ

เมื่อเริ่มต้นแล้ว โพรซีเจอร์ในภายหลังใดๆ จะอ่านจากห้องนิรภัย:

```
# Executed via executePowerShell64BitSystem

$cred = clavitor-cli get "Client-Hotel/Local Admin" --field password
$secure = ConvertTo-SecureString $cred -AsPlainText -Force
Set-LocalUser -Name "Administrator" -Password $secure
Remove-Variable cred, secure
```

## N-able N-central

หน่วยของการทำงานอัตโนมัติคือ **AMP** (Automation Manager Policy) ซึ่งเป็นนโยบายที่สร้างจาก PowerShell และสร้างขึ้นใน Automation Manager คุณสมบัติกำหนดเองที่ระดับองค์กร ลูกค้า หรือไซต์สามารถส่งไปยังออบเจ็กต์ `Run PowerShell Script` ในฐานะพารามิเตอร์อินพุตได้ครับ

### AMP: ติดตั้งโดยใช้คุณสมบัติกำหนดเองเป็นอินพุต

เพิ่มคุณสมบัติกำหนดเอง `ClavitorToken` ที่ระดับลูกค้า (Administration → Custom Properties) ใน Automation Manager ให้สร้าง AMP ที่ออบเจ็กต์ `Run PowerShell Script` ผูกพารามิเตอร์อินพุต `Token` กับคุณสมบัตินั้น สคริปต์:

```
param([Parameter(Mandatory)][string]$Token)
$Token | clavitor-cli init
Remove-Variable Token
```

ค่าคุณสมบัติกำหนดเองจะไหลเข้ามาเป็น `$Token` และจะไม่ปรากฏใน XML ที่ส่งออกของ AMP หรือในบันทึกการตรวจสอบของ N-central เลยครับ

### Script Repository: ดึงข้อมูลรับรองขณะรันไทม์

สำหรับสคริปต์เฉพาะกิจที่พุชผ่าน Script Repository (Configuration → Repository → Scripts/Software) endpoint จะถูกเริ่มต้นเรียบร้อยแล้ว สคริปต์เพียงเรียกใช้ CLI:

```
$dbPass = clavitor-cli get "Client-Bcme/SQL Server" --field password
$secure = ConvertTo-SecureString $dbPass -AsPlainText -Force
Invoke-Sqlcmd -ServerInstance "sql.bcme.com" `
  -Credential (New-Object PSCredential("sa", $secure)) -Query "SELECT 1"
Remove-Variable dbPass, secure
```

## N-able N-sight

N-sight (เดิมคือ SolarWinds RMM) รันเอนจิน Automation Manager เดียวกับ N-central พร้อม Script Manager สำหรับ `.ps1`, AMP, batch และประเภทสคริปต์อื่นๆ รูปแบบจะเหมือนกับ N-central คือ AMP ที่มีพารามิเตอร์อินพุตสำหรับโทเค็น จากนั้นทุกอย่างจะถูกแปลงขณะรันไทม์ครับ

### Script Manager: ติดตั้งผ่าน Automated Task

อัปโหลด `Install-Clavitor.ps1` ไปยัง Settings → Script Manager พร้อมพารามิเตอร์สำหรับโทเค็น แนบเป็น Automated Task บน endpoint และส่งโทเค็นเป็นอาร์กิวเมนต์สคริปต์จากการตั้งค่าระดับอุปกรณ์:

```
param([Parameter(Mandatory)][string]$Token)
$Token | clavitor-cli init
Remove-Variable Token
```

### Automated Task: การสำรองข้อมูลที่ตั้งเวลาไว้ด้วยข้อมูลรับรองจากห้องนิรภัย

เมื่อเริ่มต้นแล้ว งานที่ตั้งเวลาไว้จะดึงข้อมูลรับรองจากห้องนิรภัย ผลลัพธ์มาตรฐานใดๆ ที่มีความยาวไม่เกิน 255 ตัวอักษรจะปรากฏกลับไปยังแดชบอร์ด N-sight:

```
$pass = clavitor-cli get "Client-India/SQL Backup" --field password
$secure = ConvertTo-SecureString $pass -AsPlainText -Force
Backup-SqlDatabase -ServerInstance "sql.india.com" -Database "AppDB" `
  -Credential (New-Object PSCredential("backup-svc", $secure))
Write-Output "backup OK $(Get-Date -Format o)"
Remove-Variable pass, secure
```

## NinjaOne

สคริปต์ NinjaOne ที่รันบน endpoint สามารถอ่านและเขียนฟิลด์กำหนดเองผ่าน cmdlet ในตัว: `Ninja-Property-Get <name>` จะคืนค่า และ `Ninja-Property-Set <name> <value>` จะเขียนกลับ เก็บโทเค็น Clavitor ในฟิลด์กำหนดเองขององค์กร (เลือกประเภท **Secure** เพื่อให้เขียนได้เท่านั้นจากคอนโซล) สคริปต์ติดตั้งจะอ่านค่านี้เพียงครั้งเดียวครับ

### สคริปต์ติดตั้ง: อ่านโทเค็นจากฟิลด์กำหนดเอง

ใน Administration → Library → Custom Fields ให้เพิ่มฟิลด์องค์กร `clavitorToken` ประเภท Secure จากนั้นรันสคริปต์ติดตั้ง:

```
$token = Ninja-Property-Get clavitorToken
$token | clavitor-cli init
Remove-Variable token
```

### Custom Action: เรียกใช้ API ผ่านพร็อกซี

เมื่อติดตั้งแล้ว ระบบอัตโนมัติจะเรียกใช้ API ภายนอกผ่านพร็อกซี โดยข้อมูลรับรองจะไม่ถูกคัดลอกลงในตัวแปรสคริปต์เลย:

```
$env:HTTPS_PROXY = "http://localhost:1983"
$response = Invoke-RestMethod -Uri "https://api.client-echo.com/v1/status" `
  -Headers @{ Authorization = "Bearer clavitor://Client-Echo/Monitoring API" }

# Push the result back to a device custom field for dashboarding

Ninja-Property-Set lastApiStatus $response.status
```

## Syncro

Syncro จะเปิดเผยฟิลด์กำหนดเองและแท็กของแอสเซตเป็นตัวแปรสคริปต์ **Platform** โดยใช้ไวยากรณ์วงเล็บปีกกาสองชั้น `{{asset_custom_field_<name>}}` กำหนดตัวแปรสคริปต์ประเภท Platform และผูกกับฟิลด์ดังกล่าว Syncro จะแทนที่ค่าลงในพารามิเตอร์ PowerShell เมื่อรันสคริปต์ครับ

### สคริปต์ Syncro: ติดตั้ง

สร้างฟิลด์กำหนดเองของแอสเซต `clavitor_token` ในตัวแก้ไขสคริปต์ ให้ประกาศตัวแปร `Token` ประเภท **Platform** ที่ผูกกับ `{{asset_custom_field_clavitor_token}}` และส่งไปยังพารามิเตอร์ PowerShell ในเนื้อหาสคริปต์:

```
param([Parameter(Mandatory)][string]$Token)
$Token | clavitor-cli init
Remove-Variable Token
```

แผง Quick Help ที่ด้านล่างของตัวแก้ไขสคริปต์ Syncro ทุกตัวจะแสดงรายการตัวแปรแพลตฟอร์มที่มีอยู่ทั้งหมดสำหรับบริบทของแอสเซต ลูกค้า และตั๋วครับ

### สคริปต์ Syncro: เชื่อมต่อ VPN ด้วยข้อมูลรับรองจากห้องนิรภัย

หลังการติดตั้ง สคริปต์และ Automated Remediations จะดึงข้อมูลรับรองจากห้องนิรภัยและใช้งานโดยตรง:

```
$pass = clavitor-cli get "Client-Golf/VPN" --field password
$secure = ConvertTo-SecureString $pass -AsPlainText -Force
Add-VpnConnection -Name "Golf" -ServerAddress "vpn.golf.com" `
  -AuthenticationMethod MSChapv2 -Force
Set-VpnConnectionUsernamePassword -ConnectionName "Golf" -Password $secure
# Write status back to asset for Syncro dashboard

Rmm-Alert -Category "vpn-status" -Body "Golf connected $(Get-Date -Format o)"
Remove-Variable pass, secure
```

## เหตุใดสิ่งนี้จึงสำคัญสำหรับ MSP

แพลตฟอร์ม RMM ทุกแห่งจัดเก็บข้อมูลรับรองไว้ที่ใดที่หนึ่ง ไม่ว่าจะเป็นคุณสมบัติกำหนดเอง ตัวแปรไซต์ ฟิลด์ข้อมูลพิเศษ หรือพารามิเตอร์สคริปต์ ช่างเทคนิคทุกคนที่มีสิทธิ์เข้าถึงคอนโซลสามารถเห็นข้อมูลเหล่านี้ได้ การรั่วไหลทุกครั้งของคอนโซล RMM ของคุณจะทำให้ข้อมูลรับรองของลูกค้าทุกรายถูกเปิดเผยครับ

Clavitor ย้ายข้อมูลรับรองออกจาก RMM โดย RMM จะเก็บเฉพาะโทเค็นเอเจนต์ (หนึ่งโทเค็นต่อลูกค้าหนึ่งราย) โทเค็นนี้จะให้สิทธิ์การเข้าถึงห้องนิรภัยของลูกค้ารายนั้นแบบจำกัดขอบเขต การรั่วไหลของคอนโซล RMM ของคุณจะเปิดเผยเฉพาะโทเค็น ไม่ใช่ข้อมูลรับรอง และแต่ละโทเค็นจะถูกระบุไว้ในไวท์ลิสต์ IP สำหรับ endpoint ที่ถูกปรับใช้เท่านั้นครับ

### ขอบเขตต่อลูกค้า

ห้องนิรภัยของลูกค้าแต่ละรายมีโทเค็นเอเจนต์ของตัวเอง การเข้าถึงของช่างเทคนิคถูกควบคุมโดยขอบเขต ไม่ใช่โดย "ผู้ที่สามารถล็อกอินเข้าคอนโซล RMM ได้" ครับ

### การตรวจสอบต่อสคริปต์

การเข้าถึงข้อมูลรับรองทุกครั้งจะถูกบันทึกไว้ ว่าสคริปต์ใด endpoint ใด ข้อมูลรับรองใด และเมื่อใด ลูกค้าของคุณสามารถเห็นบันทึกการตรวจสอบได้ และคุณสามารถพิสูจน์ได้ว่าใครเข้าถึงอะไรครับ

### เพิกถอนได้ในคลิกเดียว

ลูกค้าเลิกใช้บริการหรือ เพิกถอนโทเค็นเอเจนต์ของพวกเขา ทุก endpoint จะหยุดดึงข้อมูลรับรองทันที ไม่ต้องทำการหมุนเวียนรหัสผ่าน ไม่ต้องล้างคุณสมบัติกำหนดเองทั่ว 200 เครื่องครับ

## หยุดจัดเก็บข้อมูลรับรองใน RMM ของคุณครับ

หนึ่ง CLI สำหรับลูกค้าทุกราย ข้อมูลรับรองทุกชิ้นถูกกำหนดขอบเขต ตรวจสอบ และเพิกถอนได้ครับ
[เริ่มต้นใช้งานฟรี](https://clavitor.ai/th/checkout)
[ภาพรวมสำหรับนักพัฒนา →](https://clavitor.ai/th/developers)
