PowerShell 指令碼能為您的環境備妥所有組態設定。當您執行 PowerShell 指令碼來部署 Unified Access Gateway 時,解決方案會在首次系統開機時做好生產準備。

重要: 您可以利用 PowerShell 部署在 INI 檔案中提供所有設定,而 Unified Access Gateway 執行個體在開機後便會處於生產就緒狀態。如果您在部署後不想變更任何設定,則不需提供管理員 UI 密碼。

不過,如果並未在部署期間提供管理員 UI 密碼,則管理員 UI 和 API 皆無法使用。如果並未在部署時提供管理員 UI 密碼,則您稍後將無法新增使用者來啟用對管理員 UI 或 API 的存取。您必須重新部署您的 Unified Access Gateway

您可以在 INI 檔案中包含參數,以用於建立具有監控角色的低權限管理員使用者。不支援建立超級使用者管理員使用者。在部署 Unified Access Gateway 執行個體之前,您可以為根使用者和管理員使用者設定密碼原則。

如需有關參數的詳細資訊,您可以查看使用對等的管理員 UI 參數的章節。例如,用於部署 Unified Access Gateway 的 PowerShell 參數使用 OVF 範本精靈來部署 Unified Access Gateway中介紹了一些部署參數,有關系統組態、Syslog 伺服器設定、網路設定等,其中所用參數的資訊,請參閱從管理組態頁面設定 Unified Access Gateway,以及有關 Edge 服務及其他 Unified Access Gateway 使用案例 (例如 Workspace ONE Intelligence 和身分識別橋接) 中所用參數的資訊,請參閱Unified Access Gateway 的部署使用案例

必要條件

  • 若為 Hyper-V 部署,且如果您要升級使用靜態 IP 的 Unified Access Gateway,請先刪除較舊的應用裝置,然後再部署 Unified Access Gateway 的較新執行個體。
  • 請確認系統需求適當且可供使用。

    以下是在環境中部署 Unified Access Gateway 的範例指令碼。

    圖 1. 範例 PowerShell 指令碼

程序

  1. Customer Connect 入口網站將 Unified Access Gateway OVA 下載到您的機器。
  2. uagdeploy-XXX.zip 檔案下載到機器上的資料夾。
    您可以從 Unified Access GatewayCustomer Connect 頁面取得 ZIP 檔案。
  3. 開啟 PowerShell 指令碼,並將目錄修改為指令碼的所在位置。
  4. Unified Access Gateway 虛擬應用裝置建立 INI 組態檔案。
    例如:部署新的 Unified Access Gateway 應用裝置 UAG1。組態檔案的名稱為 uag1.ini。該檔案含有 UAG1 的所有組態設定。您可以使用 uagdeploy.ZIP 檔案中的範例 INI 檔案來建立 INI 檔案,接著再適度修改設定。
    備註:
    • 您可以將獨一無二的 INI 檔案用於環境中的多個 Unified Access Gateway 部署。您必須適度變更 INI 檔案中的 IP 位址和名稱參數,才能部署多個應用裝置。
    • 若要將私密金鑰從 PKCS8 轉換為 PKCS1,也就是說,從 BEGIN PRIVATE KEY 格式到 BEGIN RSA PRIVATE KEY 格式,請執行下列 openssl 命令:

      openssl rsa -in key.pem -out keyrsa.pem

      若要轉換具有 .p12 或 .pfx 副檔名的 PKCS#12 格式檔案,以及確保該金鑰為 RSA 金鑰,請執行下列命令:

      openssl pkcs12 -in cert.pfx -nokeys -out cert.pem

      openssl pkcs12 -in cert.pfx -nodes -nocerts -out key.pem

      openssl rsa -in key.pem -check -out keyrsa.pem

    要修改的 INI 檔案範例。
    [General]
    netManagementNetwork=
    netInternet=
    netBackendNetwork=
    name=
    dns = 192.0.2.1 192.0.2.2
    dnsSearch = example1.com example2.com
    ip0=10.108.120.119
    diskMode=
    source=
    defaultGateway=10.108.120.125
    target=
    ds=
    deploymentOption=threenic
    eth0CustomConfig=DHCP^UseDNS=false
    eth1CustomConfig=DHCP^UseDNS=false
    eth2CustomConfig=DHCP^UseDNS=false
    authenticationTimeout=300000
    fipsEnabled=false
    uagName=UAG1
    locale=en_US
    ipModeforNIC3=DHCPV4_DHCPV6
    tls12Enabled=true
    ipMode=DHCPV4_DHCPV6
    requestTimeoutMsec=10000
    ipModeforNIC2=DHCPV4_DHCPV6
    tls11Enabled=false
    clientConnectionIdleTimeout=180
    tls10Enabled=false
    adminCertRolledBack=false
    cookiesToBeCached=none
    healthCheckUrl=/favicon.ico
    quiesceMode=false
    isCiphersSetByUser=false
    tlsPortSharingEnabled=true
    ceipEnabled=true
    bodyReceiveTimeoutMsec=15000
    monitorInterval=60
    cipherSuites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
    , TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
    outboundCipherSuites=
    adminPasswordExpirationDays=90
    monitoringUsersPasswordExpirationDays=90
    rootSessionIdleTimeoutSeconds=300
    rootPasswordExpirationDays=365
    passwordPolicyMinLen=6
    passwordPolicyMinClass=1
    passwordPolicyUnlockTime=900
    passwordPolicyFailedLockout=3
    adminPasswordPolicyFailedLockoutCount=3
    adminPasswordPolicyMinLen=8
    adminPasswordPolicyUnlockTime=5
    adminSessionIdleTimeoutMinutes=10
    httpConnectionTimeout=120
    isTLS11SetByUser=false
    sessionTimeout=36000000
    ssl30Enabled=false
    snmpEnabled= TRUE | FALSE
    ntpServers=ipOrHostname1 ipOrHostname2
    fallBackNtpServers=ipOrHostname1 ipOrHostname2
    sshEnabled=
    sshPasswordAccessEnabled=
    sshKeyAccessEnabled=
    sshPublicKey1=
    adminDisclaimerText=
    sshLoginBannerText=VMware EUC Unified Access Gateway
    secureRandomSource=
    hostClockSyncEnabled=false
    extendedServerCertValidationEnabled=false
    sslprovider=
    tlsNamedGroups=
    tlsSignatureSchemes=
    osLoginUsername= 
    adminMaxConcurrentSessions=5
    osMaxLoginLimit=10
    dsComplianceOS=false
    sshPort=22
    sshInterface=eth0
    
    [WorkspaceOneIntelligenceSettings1]
    encodedCredentialsFile=
    name=TEST1
    trustedCert1=
    urlThumbprints=bed22939bf8546d15de2136f4c33f48f31d44e71
    
    [WorkspaceOneIntelligenceSettings2]
    encodedCredentialsFile=
    name=RISK_SCORE
    
    [SnmpSettings]
    version= v3
    usmUser= SAM_SNMP_V3
    securityLevel=
    authAlgorithm=
    authPassword=
    privacyAlgorithm=
    privacyPassword=
    engineID=uag1.example.com
    
    [WebReverseProxy1]
    proxyDestinationUrl=https://10.108.120.21
    trustedCert1=
    instanceId=view
    healthCheckUrl=/favicon.ico
    userNameHeader=AccessPoint-User-ID
    proxyPattern=/(.*)
    landingPagePath=/
    hostEntry1=10.108.120.21 HZNView.uagqe.auto.com
    
    [Horizon]
    endpointComplianceCheckProvider=Workspace_ONE_Intelligence_Risk_Score
    proxyDestinationUrl=https://enterViewConnectionServerUrl
    trustedCert1=
    gatewayLocation=external
    disableHtmlAccess=false
    healthCheckUrl=/favicon.ico
    proxyDestinationIPSupport=IPV4
    smartCardHintPrompt=false
    queryBrokerInterval=300
    proxyPattern=(/|/view-client(.*)|/portal(.*)|/appblast(.*))
    matchWindowsUserName=false
    windowsSSOEnabled=false
    complianceCheckOnAuthentication=true
    proxyDestinationUrlThumbprints=
    proxyDestinationPreLoginMessageEnabled=true
    customExecutable1=WEBEXVDIPLUGIN
    
    [CustomExecutableSettings1]
    name=OPSWAT2
    osType=
    trustedSigningCertificates1=
    url=<<URL to custom executable file>>
    urlResponseRefreshInterval=
    isObtainedFromURL=
    
    [Airwatch]
    tunnelGatewayEnabled=true
    disableAutoConfigUpdate=false
    pacFilePath=
    pacFileURL=
    credentialFilePath=
    apiServerUsername=domain\apiusername
    apiServerPassword=*****
    proxyDestinationUrl=https://null
    ntlmAuthentication=false
    healthCheckUrl=/favicon.ico
    organizationGroupCode=
    apiServerUrl=https://null
    outboundProxyHost=1.2.3.4
    outboundProxyPort=3128
    outboundProxyUsername=proxyuser
    outboundProxyPassword=****
    reinitializeGatewayProcess=false
    airwatchServerHostname=tunnel.acme.com
    trustedCert1=c:\temp\CA-Cert-A.pem
    hostEntry1=1.3.5.7 backend.acme.com
    
    [AirwatchSecureEmailGateway]
    memConfigurationId=abc123
    apiServerUsername=domain\apiusername
    healthCheckUrl=/favicon.ico
    apiServerUrl=https://null
    outboundProxyHost=1.2.3.4
    outboundProxyPort=3128
    outboundProxyUsername=proxyuser
    outboundProxyPassword=****
    reinitializeGatewayProcess=false
    airwatchServerHostname=serverNameForSNI
    apiServerPassword=****
    trustedCert1=c:\temp\CA-Cert-A.pem
    pfxCerts=C:\Users\admin\My Certs\mycacerts.pfx
    hostEntry1=1.3.5.7 exchange.acme.com
    
    [AirWatchContentGateway]
    cgConfigId=abc123
    apiServerUrl=https://null
    apiServerUsername=domain\apiusername
    apiServerPassword=*****
    outboundProxyHost=
    outboundProxyPort=
    outboundProxyUsername=proxyuser
    outboundProxyPassword=*****
    hostEntry1=192.168.1.1 cgbackend.acme.com
    trustedCert1=c:\temp\CA-Cert-A.pem
    ntlmAuthentication=false
    reinitializeGatewayProcess=false
    airwatchServerHostname=cg.acme.com
    
    [SSLCert]
    pemPrivKey=
    pemCerts=
    pfxCerts=
    pfxCertAlias=
    
    [SSLCertAdmin]
    pemPrivKey=
    pemCerts=
    pfxCerts=
    pfxCertAlias=
    
    [WorkspaceONEIntelligenceRiskScoreEndpointComplianceCheckSettings]
    allowLow=true
    allowMedium=true
    allowHigh=true
    complianceCheckInterval=5
    allowOthers=false
    name=Workspace_ONE_Intelligence_Risk_Score
    workspaceOneIntelligenceSettingsName=RISK_SCORE
    
    [JWTSettings1]
    publicKey1=
    publicKey2=
    publicKey3=
    name=JWT_1
    
    [JWTSettings2]
    publicKey1=
    publicKey2=
    name=JWT_2
    
    [JWTIssuerSettings1]
    issuer=issuer-1
    jwtType=PRODUCER
    name=issuerJWT_1
    pemPrivKey=
    pemCerts=
    pfxCerts=
    pfxCertAlias=
    
    [JWTIssuerSettings2]
    issuer=issuer-2
    jwtType=PRODUCER
    name=issuerJWT_2
    pemPrivKey=
    pemCerts=
    pfxCerts=
    pfxCertAlias=
    
    [AdminUser1]
    name=monitoringUser1
    enabled=true
    
    [AdminUser2]
    name=monitoringUser2
    enabled=true
    
    [OutboundProxySettings1]
    proxyUrl=
    name=
    proxyType=HTTP
    includedHosts1=
    includedHosts2=
    trustedCert1=
    
    [OutboundProxySettings2]
    proxyUrl=
    name=
    proxyType=HTTP
    includedHosts1=
    includedHosts2=
    trustedCert1=
    
    [adminSAMLSettings]
    enable=true
    entityId=https://www.entityid.com
    
    [IDPExternalMetadata1]
    allowUnencrypted=false
    certChainPem=
    encryptionCertificateType=
    entityID=<entityID>
    forceAuthN=false
    metadataXmlFile=<Path of IDP metadata xml file>
    privateKeyPem=
    
    [OPSWATEndpointComplianceCheckSettings]
    allowInCompliance=
    allowEndpointUnknown=
    complianceCheckFastInterval=
    complianceCheckInitialDelay=
    complianceCheckInterval=
    allowNotInCompliance=
    allowOutOfLicenseUsage=
    allowAssessmentPending=
    allowOthers=
    hostName=
    name=
    clientSecret=
    clientKey=
    
    [PackageUpdates]
    packageUpdatesScheme=OFF|ON_NEXT_BOOT|ON_EVERY_BOOT
    packageUpdatesOSURL=
    packageUpdatesURL=
    trustedCert1=
    
    [SyslogServerSettings1]
    sysLogType=TCP
    syslogCategory=ALL
    syslogFormat=TEXT
    syslogSettingName=
    syslogSystemMessagesEnabledV2=true
    syslogUrl=
    
    [SyslogServerSettings2]
    hostname=
    port=6515
    sysLogType=TLS
    syslogCategory=ALL
    syslogClientCertKeyPemV2=
    syslogClientCertPemV2=
    syslogServerCACertPemV2=
    syslogFormat=TEXT
    syslogSettingName=
    syslogSystemMessagesEnabledV2=false
    
    [SyslogServerSettings3]
    mqttClientCertCertPem=
    mqttClientCertKeyPem=
    mqttServerCACertPem=
    mqttTopic=
    sysLogType=MQTT
    syslogCategory=ALL
    syslogFormat=TEXT
    syslogSettingName=
    syslogSystemMessagesEnabledV2=true
    syslogUrl=
    備註:
    • INI 檔案中包含的 [adminSAMLSettings] 用於設定 SAML 驗證方法,以對具有管理員 UI 之管理員存取權的使用者進行驗證。這裡,entityId 是指外部中繼資料提供者實體識別碼。
    • 具有監控角色的低權限管理員使用者的密碼,會以參數的形式提供給 PowerShell 指令碼。如果未提供密碼,則系統會提示使用者輸入密碼。提供參數作為 newAdminUserPwd,而其參數值類似於 monitoringUser1:P@ssw0rd1;monitoringUser2:P@ssw0rd2。INI 檔案中的 enabled 參數為選用,如果參數無法使用,則預設為 true。
  5. 若要確保指令碼的執行不會受限,請輸入 PowerShell set-executionpolicy 命令。
    set-executionpolicy -scope currentuser unrestricted
    您只需執行此動作一次,即可移除此限制。
    1. (選擇性) 如果出現與指令碼相關的警告,請執行下列命令以解除封鎖警告:unblock-file -path .\uagdeploy.ps1
  6. 執行命令以開始部署。如果您未指定 .INI 檔案,指令碼的預設值為 ap.ini
    .\uagdeploy.ps1 -iniFile uag1.ini
  7. 當出現提示時,請輸入認證並完成指令碼。
    備註: 如果系統提示您新增目標機器的指紋,請輸入 yes
    Unified Access Gateway 應用裝置部署即告完成,並可供生產之用。

結果

如需 PowerShell 指令碼的詳細資訊,請參閱 https://communities.vmware.com/docs/DOC-30835

下一步

如果您想要升級 Unified Access Gateway 同時保留現有的設定,請編輯 .ini 檔案將來源參考變更為新版本,然後重新執行 .ini 檔案: uagdeploy.ps1 uag1.ini。此程序可能需要長達 3 分鐘。
[General]
name=UAG1
source=C:\temp\euc-unified-access-gateway-3.2.1-7766089_OVF10.ova

如果您想要在服務不中斷的情況下升級,請參閱不停機升級