TeamViewer 整合

Jamf Pro 與 TeamViewer 這款快速安全的全功能解決方案整合後,就能從遠端存取電腦和網路,讓您在 Jamf Pro 管理員與使用者的電腦之間建立遠端螢幕共用連線。如需使用 Jamf Pro 和 TeamViewer 建立遠端管理工作階段的相關資訊,請參閱 使用 TeamViewer 的螢幕共用

注意:

TeamViewer 整合可支援全部三種 TeamViewer 的應用程式:TeamViewer、TeamViewer Host 及 TeamViewer QuickSupport。

TeamViewer 使用下列網路連接埠進行連線:

  • 5938

    這是主要連接埠。您的防火牆設定最少應允許此連接埠。

  • 443

    這是在 TeamViewer 無法透過連接埠 5938 連線時使用。選取的 TeamViewer 處理程序 (例如更新檢查) 和 TeamViewer Management Console 中建立的自訂模組也都是使用連接埠 443。

  • 80

    這是在 TeamViewer 無法透過連接埠 5938 或 443 連線時使用。

注意:

與連接埠 5938 或 443 相較之下,連接埠 80 的連線速度較慢,且較不可靠。若暫時失去連線,不會自動重新連線。

各網站有專屬的 TeamViewer 整合。這表示,Jamf Pro 允許您針對每個網站新增一個組態。如果您的環境中沒有網站,您可以在 Jamf Pro 執行個體的完整關聯內容中新增 TeamViewer 組態。

新增新的 TeamViewer 組態

需求條件
  • 具備管理權限的 TeamViewer 帳戶

  • 具備遠端管理權限的 Jamf Pro 使用者帳戶

  • 在 TeamViewer中配置 Jamf Pro 的指令碼 Token。

  • 若要傳送「Self Service」通知,您必須在 Jamf Pro「Self Service」設定的「互動」區段中進行配置。如需更多資訊,請見適用 macOS 的 Jamf「Self Service」通知

  1. 以您的管理帳戶登入 TeamViewer Management Console (TeamViewer 管理主控台),並執行下列其中一項操作:
    • 若要擷取指令碼 Token,請瀏覽至 編輯設定檔 > 應用程式。您的 Token 必須具備 「建立、檢視及編輯所有工作階段」 的工作階段管理權限。

    • 若要建立 Token,請執行下列操作:

      1. 在 TeamViewer 管理主控台的右上角,開啟描述檔設定。

      2. 按一下 應用程式

      3. 按一下 建立指令碼 Token

      4. 添加 Token 的名稱和說明。

      5. 工作階段管理 快顯功能表選擇 Create, view and edit all sessions (建立、檢視及編輯所有工作階段)

      6. 按一下 儲存

    注意:

    為了避免無法存取帳戶的潛在問題,建議使用一般 TeamViewer 帳戶 (例如,support@yourcompany.com) 建立指令碼 Token。請勿將指令碼 Token 連結至特定管理員。

  2. 在另一個 Web 瀏覽器視窗中,登入 Jamf Pro
  3. 在頁面右上角按一下 設定
  4. 全域管理 區段中,按一下 遠端管理
  5. 按一下
  6. 依照螢幕指示新增 TeamViewer 組態。考慮下列各項:
    • 此組態只限用於某個網站。若您的環境包括網站,且您是以 Jamf Pro 網站完全管理員的身分登入,您必須為您的組態選取一個網站,或在整個 Jamf Pro 執行個體中新增組態。對於特定的網站管理員,網站將被自動指派。

    • 「工作階段時間上限」設定可讓您控制工作階段期間。它預設為 15 分鐘,最小值為 1 分鐘,最大值為 1440 分鐘。建議最小值用 5 分鐘以上。在工作階段期間開始進行的會議並不會在工作階段超時遭到終止。

  7. 按一下 完成

儲存組態會觸發自動連線驗證。驗證處理程序必須順利完成,才能使用該組態。

遠端電腦的隱私權權限需求

若要執行 TeamViewer 工作階段,TeamViewer 應用程式會要求遠端電腦上的下列隱私權權限:

  • 存取能力

    這是執行指令碼和系統命令所需。

  • 完整磁碟存取

    這是檔案傳輸和電腦上所有使用者的某些管理設定所需。

  • 螢幕錄製

    可讓工作階段支援者看見使用者的螢幕。

具有管理員權限的使用者可手動授與隱私權權限。不過,Jamf 建議您部署「隱私權偏好原則控制」(PPPC) 組態設定檔來代替使用者授與必要的權限。

注意:

管理員授與的權限會授與電腦上的所有使用者。如需更多資訊,請參閱 Apple 的 macOS 使用者指南中的 Change Privacy preferences on Mac (更改 Mac 上的「隱私權」偏好設定)。

上傳 .mobileconfig 檔案以授與 TeamViewer 隱私權限

若要授與必要的 TeamViewer 隱私權限,Jamf Pro 管理員可以選擇上傳下列其中一個行動組態檔案,或手動建立必要的 PPPC 組態設定檔。若要上傳下列其中一個 mobileconfig 檔案,請參閱 電腦組態設定檔

TeamViewer Unsigned.mobileconfig

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1">
  <dict>    
    <key>PayloadUUID</key>
    <string>d0adae37-56d9-47d4-9907-920fa564b45c</string>
    <key>PayloadType</key>
    <string>Configuration</string>
    <key>PayloadOrganization</key>
    <string>Jamf</string>
    <key>PayloadIdentifier</key>
    <string>d0adae37-56d9-47d4-9907-920fa564b45c</string>
    <key>PayloadDisplayName</key>
    <string>TeamViewer</string>
    <key>PayloadDescription</key>
    <string/>
    <key>PayloadVersion</key>
    <integer>1</integer>
    <key>PayloadEnabled</key>
    <true/>
    <key>PayloadRemovalDisallowed</key>
    <true/>
    <key>PayloadScope</key>
    <string>System</string>
    <key>PayloadContent</key>
    <array>
      <dict>
        <key>PayloadUUID</key>
        <string>E48F876C-0EE8-45D0-BBDA-6312D03484C4</string>
        <key>PayloadType</key>
        <string>com.apple.TCC.configuration-profile-policy</string>
        <key>PayloadOrganization</key>
        <string>Jamf</string>
        <key>PayloadIdentifier</key>
        <string>154416B2-3FA9-4CD8-9708-61FC5A1AF02C</string>

        <key>PayloadDisplayName</key>
        <string>TeamViewer</string>
        <key>PayloadDescription</key>
        <string/>
        <key>PayloadVersion</key>
        <integer>1</integer>
        <key>PayloadEnabled</key>
        <true/>
        <key>Services</key>
        <dict>
          <key>ScreenCapture</key>
          <array>
          <dict>
            <key>Authorization</key>
            <string>AllowStandardUserToSetSystemService</string>
            <key>Identifier</key>
            <string>com.teamviewer.TeamViewer</string>
            <key>CodeRequirement</key>
            <string>anchor apple generic and identifier "com.teamviewer.TeamViewer" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = H7UGFBUGV6)</string>
            <key>IdentifierType</key>
            <string>bundleID</string>
            <key>StaticCode</key>
            <integer>0</integer>
          </dict>
        </array>
        <key>Accessibility</key>
        <array>
          <dict>
            <key>Identifier</key>
            <string>com.teamviewer.TeamViewer</string>
            <key>CodeRequirement</key>
            <string>anchor apple generic and identifier "com.teamviewer.TeamViewer" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = H7UGFBUGV6)</string>
            <key>IdentifierType</key>
            <string>bundleID</string>
            <key>StaticCode</key>
            <integer>0</integer>
            <key>Allowed</key>
            <integer>1</integer>
          </dict>
          </array>
          <key>SystemPolicyAllFiles</key>
          <array>
            <dict>
              <key>Identifier</key>
              <string>com.teamviewer.TeamViewer</string>
              <key>CodeRequirement</key>
              <string>anchor apple generic and identifier "com.teamviewer.TeamViewer" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = H7UGFBUGV6)</string>
              <key>IdentifierType</key>
              <string>bundleID</string>
              <key>StaticCode</key>
              <integer>0</integer>
              <key>Allowed</key>
              <integer>1</integer>
            </dict>
          </array>
        </dict>
      </dict>
    </array>
  </dict>
</plist>


 TeamViewer Host Unsigned.mobileconfig

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1">
  <dict>
    <key>PayloadUUID</key>
    <string>47FC645A-AF41-46A3-81D7-11D03C37D592</string>
    <key>PayloadType</key>
    <string>Configuration</string>
    <key>PayloadOrganization</key>
    <string>Jamf</string>
    <key>PayloadIdentifier</key>
    <string>47FC645A-AF41-46A3-81D7-11D03C37D592</string>
    <key>PayloadDisplayName</key>
    <string>TeamViewer Host</string>
    <key>PayloadDescription</key>
    <string/>
    <key>PayloadVersion</key>
    <integer>1</integer>
    <key>PayloadEnabled</key>
    <true/>
    <key>PayloadRemovalDisallowed</key>
    <true/>
    <key>PayloadScope</key>
    <string>System</string>
    <key>PayloadContent</key>
    <array>
      <dict>
        <key>PayloadUUID</key>
        <string>5B08D6F0-2C2C-4473-8125-FB5BE08C69E3</string>
        <key>PayloadType</key>
        <string>com.apple.TCC.configuration-profile-policy</string>
        <key>PayloadOrganization</key>
        <string>Jamf</string>
        <key>PayloadIdentifier</key>
        <string>5B08D6F0-2C2C-4473-8125-FB5BE08C69E3</string>
        <key>PayloadDisplayName</key>
        <string>TeamViewer</string>
        <key>PayloadDescription</key>
        <string/>
        <key>PayloadVersion</key>
        <integer>1</integer>
        <key>PayloadEnabled</key>
        <true/>
        <key>Services</key>
        <dict>
          <key>ScreenCapture</key>
          <array>
            <dict>
              <key>Authorization</key>
              <string>AllowStandardUserToSetSystemService</string>
              <key>Identifier</key>
              <string>com.teamviewer.TeamViewerHost</string>
              <key>CodeRequirement</key>
              <string>anchor apple generic and identifier "com.teamviewer.TeamViewerHost" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = H7UGFBUGV6)</string>
              <key>IdentifierType</key>
              <string>bundleID</string>
              <key>StaticCode</key>
              <integer>0</integer>
            </dict>
          </array>
          <key>Accessibility</key>
          <array>
            <dict>
              <key>Identifier</key>
              <string>com.teamviewer.TeamViewerHost</string>
              <key>CodeRequirement</key>
              <string>anchor apple generic and identifier "com.teamviewer.TeamViewerHost" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = H7UGFBUGV6)</string>
              <key>IdentifierType</key>
              <string>bundleID</string>
              <key>StaticCode</key>
              <integer>0</integer>
              <key>Allowed</key>
              <integer>1</integer>
            </dict>
          </array>
          <key>SystemPolicyAllFiles</key>
          <array>
            <dict>
              <key>Identifier</key>
              <string>com.teamviewer.TeamViewerHost</string>
              <key>CodeRequirement</key>
              <string>anchor apple generic and identifier "com.teamviewer.TeamViewerHost" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = H7UGFBUGV6)</string>
              <key>IdentifierType</key>
              <string>bundleID</string>
              <key>StaticCode</key>
              <integer>0</integer>
              <key>Allowed</key>
              <integer>1</integer>
            </dict>
          </array>
        </dict>
      </dict>
    </array>
  </dict>
</plist>

TeamViewer QuickSupport Unsigned.mobileconfig

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1">
  <dict>
    <key>PayloadUUID</key>
    <string>3F7A9A1D-1CA8-474C-A82F-AB3EB1C8C30E</string>
    <key>PayloadType</key>
    <string>Configuration</string>
    <key>PayloadOrganization</key>
    <string>Jamf</string>
    <key>PayloadIdentifier</key>
    <string>3F7A9A1D-1CA8-474C-A82F-AB3EB1C8C30E</string>
    <key>PayloadDisplayName</key>
    <string>TeamViewer QuickSupport</string>
    <key>PayloadDescription</key>
    <string/>
    <key>PayloadVersion</key>
    <integer>1</integer>
    <key>PayloadEnabled</key>
    <true/>
    <key>PayloadRemovalDisallowed</key>
    <true/>
    <key>PayloadScope</key>
    <string>System</string>
    <key>PayloadContent</key>
    <array>
      <dict>
        <key>PayloadUUID</key>
        <string>0452EAAE-18FB-403F-B938-CBCFD0BF4BC1</string>
        <key>PayloadType</key>
        <string>com.apple.TCC.configuration-profile-policy</string>
        <key>PayloadOrganization</key>
        <string>Jamf</string>
        <key>PayloadIdentifier</key>
        <string>0452EAAE-18FB-403F-B938-CBCFD0BF4BC1</string>
        <key>PayloadDisplayName</key>
        <string>TeamViewer</string>
        <key>PayloadDescription</key>
        <string/>
        <key>PayloadVersion</key>
        <integer>1</integer>
        <key>PayloadEnabled</key>
        <true/>
        <key>Services</key>
        <dict>
          <key>ScreenCapture</key>
          <array>
            <dict>
              <key>Authorization</key>
              <string>AllowStandardUserToSetSystemService</string>
              <key>Identifier</key>
              <string>com.teamviewer.TeamViewerQS</string>
              <key>CodeRequirement</key>
              <string>anchor apple generic and identifier "com.teamviewer.TeamViewerQS" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = H7UGFBUGV6)</string>
              <key>IdentifierType</key>
              <string>bundleID</string>
              <key>StaticCode</key>
              <integer>0</integer>
            </dict>
          </array>
          <key>Accessibility</key>
          <array>
            <dict>
              <key>Identifier</key>
              <string>com.teamviewer.TeamViewerQS</string>
              <key>CodeRequirement</key>
              <string>anchor apple generic and identifier "com.teamviewer.TeamViewerQS" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = H7UGFBUGV6)</string>
              <key>IdentifierType</key>
              <string>bundleID</string>
              <key>StaticCode</key>
              <integer>0</integer>
              <key>Allowed</key>
              <integer>1</integer>
            </dict>
          </array>
          <key>SystemPolicyAllFiles</key>
          <array>
            <dict>
              <key>Identifier</key>
              <string>com.teamviewer.TeamViewerQS</string>
              <key>CodeRequirement</key>
              <string>anchor apple generic and identifier "com.teamviewer.TeamViewerQS" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = H7UGFBUGV6)</string>
              <key>IdentifierType</key>
              <string>bundleID</string>
              <key>StaticCode</key>
              <integer>0</integer>
              <key>Allowed</key>
              <integer>1</integer>
            </dict>
          </array>
        </dict>
      </dict>
    </array>
  </dict>
</plist>

手動建立組態設定檔,將隱私權權限授予 TeamViewer

  1. Jamf Pro 中,於側邊欄頂端按一下 電腦
  2. 按一下側邊欄中的 配置設定檔
  3. 按一下 新建
  4. 使用「一般」承載配置基本設定。
  5. 配置「隱私權偏好原則控制」承載:
    1. 識別碼 欄位中,輸入 com.teamviewer.TeamViewerQS
    2. 識別碼類型 快顯功能表選擇 套件組合 ID

      該程序會將 TeamViewer QuickSupport 納入為遠端管理的應用程式。針對相應的 TeamViewer 應用程式,使用下列識別碼和代碼需求:

      TeamViewer QuickSupport

      識別碼︰com.teamviewer.TeamViewerQS

      anchor apple generic and identifier "com.teamviewer.TeamViewerQS" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = H7UGFBUGV6)
      TeamViewer Full normal/TeamViewer Full start as service

      識別碼︰com.teamviewer.TeamViewer

      anchor apple generic and identifier "com.teamviewer.TeamViewer" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = H7UGFBUGV6)
      TeamViewer Host

      識別碼︰com.teamviewer.TeamViewerHost

      anchor apple generic and identifier "com.teamviewer.TeamViewerHost" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = H7UGFBUGV6)
    3. 應用程式或服務 表格中,新增下列項目:
      • Accessibility 值為 Allow—這將授予存取權限。

      • SystemPolicyAllFiles 值為 Allow—這將授予完整磁碟存取權限。

      • (選用,僅限搭載 macOS 11 或更新版本的電腦) ScreenCapture 值為 Allow Standard Users to Allow Access—這將授予螢幕錄製權限。沒有管理員權限的使用者必須決定 TeamViewer 是否可以共用螢幕。

      重要事項:

      嘗試使用 ScreenCapture 設定將組態設定檔部署至搭載 macOS 10.15.7 或更早版本的電腦將會造成設定檔安裝失敗。

  6. 按一下 範圍 索引標籤並配置設定檔的範圍。
  7. (任選) 如果您選擇在「Self Service」中提供設定檔,則按一下 Self Service 索引標籤配置該設定檔的「Self Service」設定。
  8. 按一下 儲存

設定檔會在下一次範圍內的部署目標聯絡 Jamf Pro 時,發佈至這些目標。

用 Jamf Pro 部署 TeamViewer 應用程式

Jamf 建議用戶端 Mac 在遠端支援工作階段期間下載 TeamViewer QuickSupport 應用程式。此操作無需預先安裝任何軟體。然而,您可以使用下列程序預先安裝 TeamViewer 或 TeamViewer Host 應用程式。

注意:

使用者 Mac 電腦上所安裝的 TeamViewer 應用程式不需要授權。TeamViewer 指令碼避免使用 Composer 進行重新封裝。

需求條件
  • 安裝「TeamViewer.pkg」或「Install TeamViewerHost.pkg」安裝程式

  • 安裝「TeamViewer with Choices」指令碼或「Install TeamViewer Host with Choices」指令碼

  1. 適用 macOS 的 TeamViewer 頁面下載 TeamViewer 或 TeamViewer Host。
  2. 開啟 DMG 檔案。
  3. 在「安裝 TeamViewer.app」或「安裝 TeamViewer Host.app」上按滑鼠右鍵,並選擇 顯示套件內容
  4. 開啟 內容 > 資源。將「Install TeamViewer.pkg」或「Install TeamViewerHost.pkg」套件上傳至 Jamf Pro > 設定 > 電腦管理 > 套件
  5. 在下方選擇所需的指令碼,並將該指令碼新增至 Jamf Pro > 設定 > 電腦管理 > 指令碼
    • Install TeamViewer with Choices

      #!/bin/zsh
      function logmessage()   {
          if [ $? = 0 ] ; then
              echo "$1"
          else
              echo "$2"
              echo "Aborting script"
              cleanup
              exit 1
          fi
      }
       
      function cleanup()  {
          /bin/rm -Rf "$tempDirectory"
          logmessage "Removed temporary items." "Failed removing temporary items."
          /bin/rm -f "/Library/Application Support/JAMF/Waiting Room/Install TeamViewer.pkg" && /bin/rm -Rf "/Library/Application Support/JAMF/Waiting Room/Install TeamViewer.pkg.cache.xml"
          logmessage "Removed TeamViewer package and supporting files from Jamf Waiting Room." "Failed Removing TeamViewer package and supporting files from Jamf Waiting Room."
      }
       
       
      choicesXML='<?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">
      <array>
          <dict>
              <key>attributeSetting</key>
              <integer>1</integer>
              <key>choiceAttribute</key>
              <string>selected</string>
              <key>choiceIdentifier</key>
              <string>com.teamviewer.teamviewerPriviledgedHelper</string>
          </dict>
          <dict>
              <key>attributeSetting</key>
              <integer>1</integer>
              <key>choiceAttribute</key>
              <string>selected</string>
              <key>choiceIdentifier</key>
              <string>com.teamviewer.teamviewerSilentInstaller</string>
          </dict>
      </array>
      </plist>'
       
       
      # create temporary working directory
      workDirectory=$( /usr/bin/basename $0 )
      tempDirectory=$( /usr/bin/mktemp -d "/private/tmp/$workDirectory.XXXXXX" )
      logmessage "Created working directory '$tempDirectory'." "Failed to create working directory '$tempDirectory'."
       
      # change directory to temporary working directory
      cd "$tempDirectory"
      logmessage "Changed directory to working directory '$tempDirectory'." "Failed to change directory to working directory '$tempDirectory'."
       
      echo "$choicesXML" > "$tempDirectory/choices.xml"
      logmessage "Created choices.xml file in '$tempDirectory'." "Created choices.xml file in '$tempDirectory'."
       
      /usr/sbin/installer -pkg "/Library/Application Support/JAMF/Waiting Room/Install TeamViewer.pkg" -applyChoiceChangesXML "$tempDirectory/choices.xml" -target /
      logmessage "Installed TeamViewer package with choices." "Failed to install TeamViewer package with choices."
       
      cleanup
       
      exit 0
    • Install TeamViewer Host with Choices

      #!/bin/zsh
      function logmessage()   {
          if [ $? = 0 ] ; then
              echo "$1"
          else
              echo "$2"
              echo "Aborting script"
              cleanup
              exit 1
          fi
      }
       
      function cleanup()  {
          /bin/rm -Rf "$tempDirectory"
          logmessage "Removed temporary items." "Failed removing temporary items."
          /bin/rm -f "/Library/Application Support/JAMF/Waiting Room/Install TeamViewerHost.pkg" && /bin/rm -Rf "/Library/Application Support/JAMF/Waiting Room/Install TeamViewerHost.pkg.cache.xml"
          logmessage "Removed TeamViewer Host package and supporting files from Jamf Waiting Room." "Failed Removing TeamViewer Host package and supporting files from Jamf Waiting Room."
      }
       
       
      choicesXML='<?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">
      <array>
          <dict>
              <key>attributeSetting</key>
              <integer>1</integer>
              <key>choiceAttribute</key>
              <string>selected</string>
              <key>choiceIdentifier</key>
              <string>com.teamviewer.teamviewerPriviledgedHelper</string>
          </dict>
          <dict>
              <key>attributeSetting</key>
              <integer>1</integer>
              <key>choiceAttribute</key>
              <string>selected</string>
              <key>choiceIdentifier</key>
              <string>com.teamviewer.teamviewerhostSilentInstaller</string>
          </dict>
      </array>
      </plist>'
       
       
      # create temporary working directory
      workDirectory=$( /usr/bin/basename $0 )
      tempDirectory=$( /usr/bin/mktemp -d "/private/tmp/$workDirectory.XXXXXX" )
      logmessage "Created working directory '$tempDirectory'." "Failed to create working directory '$tempDirectory'."
       
      # change directory to temporary working directory
      cd "$tempDirectory"
      logmessage "Changed directory to working directory '$tempDirectory'." "Failed to change directory to working directory '$tempDirectory'."
       
      echo "$choicesXML" > "$tempDirectory/choices.xml"
      logmessage "Created choices.xml file in '$tempDirectory'." "Created choices.xml file in '$tempDirectory'."
       
      /usr/sbin/installer -pkg "/Library/Application Support/JAMF/Waiting Room/Install TeamViewerHost.pkg" -applyChoiceChangesXML "$tempDirectory/choices.xml" -target /
      logmessage "Installed TeamViewerHost package with choices." "Failed to install TeamViewerHost package with choices."
       
      cleanup
       
      exit 0
      
  6. 建立原則,以使用步驟 4 的 DMG 和安裝程式指令碼來安裝 TeamViewer。確保下列項目:
    • TeamViewer 套件設定為 快取,而非 安裝

    • TeamViewer 指令碼優先順序設定為 After。

    如需建立原則的指示,請參閱 原則管理

原則將在範圍中的電腦下次簽入 Jamf Pro 且符合「一般」承載中的準則時,於這些電腦上執行。