> ## Documentation Index
> Fetch the complete documentation index at: https://help.gorelo.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 通过自定义客户字段安装软件

> 使用 Gorelo 脚本安装 Cove、SentinelOne、BitDefender 和 Webroot 等软件，这些脚本使用客户端特定的自定义字段存储密钥、令牌和租户 ID。

按照本指南安装 SentinelOne、Cove、DNSFilter 等。

自定义客户字段可在脚本中使用，以便用客户端特定的信息（密钥、令牌等）安装软件。

此示例安装：

* Cove
* SentinelOne
* BitDefender
* Webroot

<Tabs>
  <Tab title="Cove">
    <Steps>
      <Step title="创建客户自定义字段。">
        1. 导航到 **Settings** > **CRM** > **[<u>Custom Fields</u>](https://app.gorelo.io/Admin/admin-settings#crm#clientcustomfields)<u>。</u>**
        2. 添加自定义字段，详细信息如下：
           * **Name**：Cove Customer UID
           * **Variable**：CoverCustomerUID
      </Step>

      <Step title="为每个客户填写 Cove Customer UID。">
        1. 导航到特定客户。
        2. 点击 **Custom Fields。**
        3. 编辑 **Cove Customer UID。**
        4. 输入从 Cove 检索到的 Customer UID。
      </Step>

      <Step title="编写脚本。">
        1. 导航到 **[<u>Scripts</u>](https://app.gorelo.io/Asset/script-list)<u>。</u>**
        2. 创建一个脚本，详细信息如下：
           * **Name**：Install-Cove
           * **Content**：

        ```powershell theme={null}
        # ===== Configuration Variables =====
        $CUSTOMERUID = $gorelo:client.CoveCustomerUID
        $PROFILEID = "All-in" # Default retention policy
        $PRODUCT = "0" # Profile ID (use "0" for no profile or a specific profile ID)
        $DOWNLOADPATH = "C:\Windows\Temp"
        # ===================================

        $startTime = Get-Date
        $INSTALL = "$DOWNLOADPATH\bm#$CUSTOMERUID#$PROFILEID#.exe"

        # Download installer
        try {
            [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
            (New-Object System.Net.WebClient).DownloadFile("https://cdn.cloudbackup.management/maxdownloads/mxb-windows-x86_x64.exe", "$INSTALL")
        } catch {
            Write-Output "ERROR: Failed to download installer - $_"
            exit 1
        }

        # Run installer
        try {
            Start-Process -FilePath $INSTALL -ArgumentList "-product-name `"$PRODUCT`"" -Wait -NoNewWindow
            Start-Sleep -Seconds 5
        } catch {
            Write-Output "ERROR: Installation failed - $_"
            exit 1
        }

        # Verify installation
        $service = Get-Service -Name "Backup Service Controller" -ErrorAction SilentlyContinue
        $process = Get-Process -Name "BackupFP" -ErrorAction SilentlyContinue

        if ($service.Status -eq 'Running' -and $process) {
            Write-Output "SUCCESS: Backup Service Controller is running and BackupFP process is active."
            Write-Output "Installed for Customer UID: $CUSTOMERUID"
            $exitCode = 0
        } else {
            Write-Output "WARNING: Backup Service Controller or BackupFP process is not running as expected."
            Write-Output "Customer UID: $CUSTOMERUID"
            
            # Check log for errors
            $logDirectory = "C:\ProgramData\mxb\Backup Manager\logs\ClientTool"
            if (Test-Path $logDirectory) {
                $latestLog = Get-ChildItem -Path $logDirectory -Filter "*.log" | Sort-Object LastWriteTime -Descending | Select-Object -First 1
                if ($latestLog) {
                    $errorLines = Get-Content -Path $latestLog.FullName | Where-Object { $_ -match '\[E\]' } | Select-Object -Last 3
                    if ($errorLines) {
                        Write-Output "Recent errors from log:"
                        $errorLines | ForEach-Object { Write-Output $_ }
                    }
                }
            }
            $exitCode = 1
        }

        $endTime = Get-Date
        Write-Output "Installation completed in $([math]::Round(($endTime - $startTime).TotalSeconds, 2)) seconds."
        exit $exitCode
        ```
      </Step>
    </Steps>
  </Tab>

  <Tab title="SentinelOne">
    <Steps>
      <Step title="创建客户自定义字段。">
        1. 导航到 **Settings** > **CRM** > **[<u>Custom Fields</u>](https://app.gorelo.io/Admin/admin-settings#crm#clientcustomfields)<u>：</u>**
        2. 添加自定义字段，详细信息如下：
           * **Name**：SentinelOne Site Token
           * **Variable**：s1token

        <Frame>
          <img src="https://mintcdn.com/gorelo/-gDoUuq9lm8_69OG/images/image-87.png?fit=max&auto=format&n=-gDoUuq9lm8_69OG&q=85&s=031f83e7ab18bcf33261433dacae33df" alt="Image" width="782" height="624" data-path="images/image-87.png" />
        </Frame>
      </Step>

      <Step title="为每个客户填写软件令牌。">
        1. 导航到特定客户
        2. 点击 **Custom Fields。**
                   <Frame>
                     <img src="https://mintcdn.com/gorelo/-gDoUuq9lm8_69OG/images/image-88.png?fit=max&auto=format&n=-gDoUuq9lm8_69OG&q=85&s=b7c8ddd252eb239aaf67ef9f00553e47" alt="Image" width="699" height="914" data-path="images/image-88.png" />
                   </Frame>
        3. 编辑 **SentinelOne Site Token**。
        4. 输入从 SentinelOne 检索到的 Site Token。
                   <Frame>
                     <img src="https://mintcdn.com/gorelo/-gDoUuq9lm8_69OG/images/image-89.png?fit=max&auto=format&n=-gDoUuq9lm8_69OG&q=85&s=937c28444f16ea4989b6fc99af96f7ee" alt="Image" width="678" height="386" data-path="images/image-89.png" />
                   </Frame>
           你可以从 https\://\<DomainName>.[**sentinelone.net/dashboard**](http://sentinelone.net/dashboard) 检索你的 SentinelOne Site Token。导航到一个站点，然后转到 **Site Info** 选项卡。
                   <Frame>
                     <img src="https://mintcdn.com/gorelo/-gDoUuq9lm8_69OG/images/image-90.png?fit=max&auto=format&n=-gDoUuq9lm8_69OG&q=85&s=baef851dc57746d91b1bc79658c23bb4" alt="Image" width="1641" height="617" data-path="images/image-90.png" />
                   </Frame>
      </Step>

      <Step title="创建安装程序文件。">
        1. 导航到 **Settings** > Asset > **[<u>Files</u>](https://app.gorelo.io/Admin/admin-settings#asset#filerepository)<u>。</u>**
        2. 添加一个文件，详细信息如下：
           * **File**：上传最新的 MSI 安装程序
           * **Variable**：S1Installer
      </Step>

      <Step title="编写脚本。">
        1. 导航到 **[<u>Scripts</u>](https://app.gorelo.io/Asset/script-list)<u>。</u>**
        2. 创建一个脚本，详细信息如下：
           * **Name**：Install-SentineOne。
           * **Content**：

        ```powershell theme={null}
        #Silently install SentinelOne

        if($gorelo:client.s1token){

          $S1Service = get-service -Name 'Sentinel Agent' -ErrorAction SilentlyContinue

          if($S1Service -eq $null){

                msiexec /i $gorelo:file.S1Installer SITE_TOKEN=$gorelo:client.s1token /quiet /norestart
               
          }
        }
        ```
      </Step>

      <Step title="通过策略部署脚本。">
        1. 导航到 **[<u>Policies</u>](https://app.gorelo.io/Asset/policy-management)<u>。</u>**
        2. 编辑覆盖你想要安装 SentinelOne 的资产的现有策略。
        3. 添加 **Install-SentineOne** 脚本并设置为每天在你偏好的时间重复运行。
        4. **分发**策略。
      </Step>
    </Steps>
  </Tab>

  <Tab title="BitDefender">
    <Steps>
      <Step title="创建客户自定义字段。">
        1. 导航到 **Settings** > **CRM** > **[<u>Custom Fields</u>](https://app.gorelo.io/Admin/admin-settings#crm#clientcustomfields)<u>。</u>**
        2. 添加自定义字段，详细信息如下：
           * **Name**：Bitdefender URL
           * **Variable**：bitdefenderURL

        <Frame>
          <img src="https://mintcdn.com/gorelo/T3NJMN-hVMIJ4iQN/images/image-105.png?fit=max&auto=format&n=T3NJMN-hVMIJ4iQN&q=85&s=c3008e52a40d2950813499b65dc391f2" alt="Image" width="803" height="644" data-path="images/image-105.png" />
        </Frame>
      </Step>

      <Step title="为每个客户填写 BitDefender URL。">
        1. 导航到特定客户。
        2. 点击 **Custom Fields。**
                   <Frame>
                     <img src="https://mintcdn.com/gorelo/T3NJMN-hVMIJ4iQN/images/image-106.png?fit=max&auto=format&n=T3NJMN-hVMIJ4iQN&q=85&s=c1073ee7cec0fb54745993497c098996" alt="Image" width="699" height="914" data-path="images/image-106.png" />
                   </Frame>
        3. 编辑 **Bitdefender URL**。
        4. 为每个客户输入从 Bitdefender 检索到的安装 exe URL。
                   <Frame>
                     <img src="https://mintcdn.com/gorelo/T3NJMN-hVMIJ4iQN/images/image-107.png?fit=max&auto=format&n=T3NJMN-hVMIJ4iQN&q=85&s=d8e2868ac6c7ec0192e2e2d1f1ce2064" alt="Image" width="704" height="414" data-path="images/image-107.png" />
                   </Frame>
                   <Tip>
                     Bitdefender 安装 exe 的 URL 应类似如下（虚构示例）：`htttps://cloudgz.gravityzone.bitdefender.com/Packages/BSTWIN/0/setupdownloader_[aHR0cHM6Ly9jbG91ZGdLWDawWVjcy5ncR5em9uZS5iaXRkZWZl3ddwawGfawdmRlci5jb20vUGFja2FnZXMvQlNUV0lOLzAvdkluc3RhbGxlci54bw-bGFuZz1lbi1VUw==].exe`
                   </Tip>
      </Step>

      <Step title="编写脚本。">
        1. 导航到 **[<u>Scripts</u>](https://app.gorelo.io/Asset/script-list)<u>。</u>**
        2. 创建一个脚本，详细信息如下：
           * **Name**：Install-Bitdefender
           * **Content**：

        ```powershell theme={null}
        #$gorelo:client.bitdefenderURL

        # Check if Bitdefender is already installed
        if (Get-Service -Name "EPProtectedService" -ErrorAction SilentlyContinue) {
            Write-Host "Bitdefender is already installed. Skipping installation."
            exit 0
        }

        # Proceed with installation
        $url = $gorelo:client.bitdefenderURL
        $filename = Split-Path $url -Leaf
        $installer = Join-Path $env:TEMP $filename

        Write-Host "Downloading Bitdefender installer..."
        (New-Object System.Net.WebClient).DownloadFile($url, $installer)

        Write-Host "Installing Bitdefender..."
        Start-Process -FilePath $installer -ArgumentList "/silent" -Wait
        Remove-Item -LiteralPath $installer

        # Verify installation
        Start-Sleep -Seconds 10  # Give the service time to start
        $service = Get-Service -Name "EPProtectedService" -ErrorAction SilentlyContinue

        if ($service -and $service.Status -eq "Running") {
            Write-Host "Installation successful! EPProtectedService is running."
            exit 0
        } else {
            Write-Host "Installation may have failed. EPProtectedService not found or not running."
            exit 1
        }
        ```
      </Step>

      <Step title="通过策略部署脚本。">
        1. 导航到 **[<u>Policies</u>](https://app.gorelo.io/Asset/policy-management)<u>。</u>**
        2. 编辑覆盖你想要安装 Bitdefender 的资产的现有策略。
        3. 添加 **Install-Bitdefender** 脚本并设置为每天在你偏好的时间重复运行。
        4. **分发**策略。
      </Step>
    </Steps>
  </Tab>

  <Tab title="Webroot">
    <Steps>
      <Step title="创建客户自定义字段。">
        1. 导航到 **Settings** > **CRM** > **[<u>Custom Fields</u>](https://app.gorelo.io/Admin/admin-settings#crm#clientcustomfields)<u>。</u>**
        2. 添加自定义字段，详细信息如下：
           * **Name**：Webroot Key
           * **Variable**：webrootKey

        <Frame>
          <img src="https://mintcdn.com/gorelo/vclHs_96o-5AzbEe/images/image-102.png?fit=max&auto=format&n=vclHs_96o-5AzbEe&q=85&s=94afcc15964d77a73b1f06a85397187f" alt="Image" width="749" height="585" data-path="images/image-102.png" />
        </Frame>
      </Step>

      <Step title="为每个客户填写 Webroot 密钥。">
        1. 导航到特定客户。
        2. 点击 **Custom Fields。**
                   <Frame>
                     <img src="https://mintcdn.com/gorelo/vclHs_96o-5AzbEe/images/image-103.png?fit=max&auto=format&n=vclHs_96o-5AzbEe&q=85&s=29d3f4f00950d7dabc7b019d6c81f7f0" alt="Image" width="699" height="914" data-path="images/image-103.png" />
                   </Frame>
        3. 编辑 **Webroot Key**。
        4. 输入\*\*[从 Webroot 检索到的](https://answers.webroot.com/Webroot/ukp.aspx?pid=17\&app=vw\&vw=1\&solutionid=984)\*\* Webroot Key。
                   <Frame>
                     <img src="https://mintcdn.com/gorelo/vclHs_96o-5AzbEe/images/image-104.png?fit=max&auto=format&n=vclHs_96o-5AzbEe&q=85&s=c340167502bfba8e2933ac0d7b68a23e" alt="Image" width="673" height="399" data-path="images/image-104.png" />
                   </Frame>
      </Step>

      <Step title="创建安装程序文件。">
        1. 导航到 **Settings** > Asset > **[<u>Files</u>](https://app.gorelo.io/Admin/admin-settings#asset#filerepository)<u>。</u>**
        2. 添加一个文件，详细信息如下：
           * **File**：上传最新的 MSI 安装程序
           * **Variable**：webrootInstaller
      </Step>

      <Step title="创建脚本。">
        1. 导航到 **[<u>Scripts</u>](https://app.gorelo.io/Asset/script-list)<u>。</u>**
        2. 创建一个脚本，详细信息如下：
           * **Name**：Install-Webroot
           * **Content**：

        ```powershell theme={null}
        # Silently install Webroot
        if($gorelo:client.webrootKey){
            $WebrootService = Get-Service -Name 'WRSVC' -ErrorAction SilentlyContinue
            if($WebrootService -eq $null){
                msiexec /i $gorelo:file.webrootInstaller GUILIC=$gorelo:client.webrootKey CMDLINE=SME,quiet /qn /l*v install.log
            }
        }
        ```
      </Step>

      <Step title="通过策略部署脚本">
        1. 导航到 **[<u>Policies</u>](https://app.gorelo.io/Asset/policy-management)<u>。</u>**
        2. 编辑覆盖你想要安装 Webroot 的资产的现有策略。
        3. 添加 **Install-Webroot** 脚本并设置为每天在你偏好的时间重复运行。
        4. **分发**策略。

        或者，你可以将该脚本添加为服务检查的补救步骤，例如：

        <Frame>
          <img src="https://mintcdn.com/gorelo/T3NJMN-hVMIJ4iQN/images/image-105.png?fit=max&auto=format&n=T3NJMN-hVMIJ4iQN&q=85&s=c3008e52a40d2950813499b65dc391f2" alt="Image" width="803" height="644" data-path="images/image-105.png" />
        </Frame>
      </Step>
    </Steps>
  </Tab>
</Tabs>
