[ps1] exemple deploy zscaler avec servicenow via powershell
# usage: .\Deploy-Zscaler_srvNow.ps1 -ZscalerClientPath "\\srv\zscaler.exe" -ZscalerUri "ServiceNow" -SN_Instance "prod00123" -SN_User "zsc_api" -SN_Password "********"
param(
[string]$ZscalerUri,
[string]$SN_Instance = "dev12345", # Nom de l'instance ServiceNow
[string]$SN_User = "admin", # Utilisateur ServiceNow API
[string]$SN_Password = "motdepasse!" # Mot de passe ServiceNow API
)
$ErrorActionPreference = "SilentlyContinue"
if (!$ZscalerUri) {
$ZscalerUri = "ServiceNow" # Par défaut, on utilise ServiceNow
}
$zscaler = Get-ItemProperty "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*" |
Where-Object { $_.DisplayName -like "*Zscaler*" }
$RetErr = "Not_Installed"
# ----- Écriture des tokens dans le registre -----
function ConfigZscaller {
param($TenantToken, $votre_token)
$regPath = "HKLM:\Software\Zscaler"
if (-not (Test-Path $regPath)) {
New-Item -Path "HKLM:\Software" -Name "Zscaler" -Force | Out-Null
}
Set-ItemProperty -Path $regPath -Name "TenantToken" -Value $TenantToken
Set-ItemProperty -Path $regPath -Name "AuthToken" -Value $votre_token
}
# ----- Lecture depuis GPO (registre entreprise) -----
function ConfigZscallerByGPO {
$TenantToken = Get-ItemPropertyValue -Path "HKLM:\Software\Entreprise\Zscaler" -Name "TenantToken"
$AuthToken = Get-ItemPropertyValue -Path "HKLM:\Software\Entreprise\Zscaler" -Name "AuthToken"
ConfigZscaller -TenantToken $TenantToken -votre_token $AuthToken
}
# ----- Lecture depuis API ServiceNow -----
function ConfigZscallerByServiceNow {
param($Instance, $User, $Password)
$uri = "https://$Instance.service-now.com/api/now/table/u_zscaler_tokens?sysparm_limit=1"
$auth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$User:$Password"))
$headers = @{
Authorization = "Basic $auth"
Accept = "application/json"
}
try {
$response = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get
$TenantToken = $response.result[0].u_tenant_token
$token = $response.result[0].u_auth_token
if ($TenantToken -and $token) {
ConfigZscaller -TenantToken $TenantToken -votre_token $token
} else {
Write-Warning "Tokens absents dans la réponse ServiceNow."
}
} catch {
Write-Error "Échec de l'appel ServiceNow : $_"
}
}
# ----- Lecture depuis WebService local générique -----
function ConfigZscallerByWebService {
param($Uri)
if (!$Uri) { $Uri = "http://localhost:5000/Api/TokenZscaler" }
if ($Uri -match "^(http://localhost|http://127\.0\.0\.1|http://intranet|https://intranet)") {
$response = Invoke-RestMethod -Uri $Uri -Method Get
} else {
$response = Invoke-RestMethod -Uri $Uri -Method Get -UseDefaultCredentials
}
$TenantToken = $response.TenantToken
$token = $response.token
ConfigZscaller -TenantToken $TenantToken -votre_token $token
}
# ----- Installation Zscaler -----
function installZscaller {
param($ZscalerClientPath)
if (-not (Test-Path $ZscalerClientPath)) {
Write-Warning "Installateur Zscaler introuvable."
return 999
}
$process = Start-Process -FilePath $ZscalerClientPath -ArgumentList "/quiet /norestart" -Wait -PassThru
return $process.ExitCode
}
# ----- Exécution principale -----
if ($zscaler) {
$zscalerName = $zscaler.DisplayName
} else {
$RetInstZscaller = installZscaller -ZscalerClientPath $ZscalerClientPath
if ($RetInstZscaller -eq 0) {
if ($ZscalerUri -eq "ServiceNow") {
ConfigZscallerByServiceNow -Instance $SN_Instance -User $SN_User -Password $SN_Password
} else {
ConfigZscallerByWebService -Uri $ZscalerUri
}
$zscaler = Get-WmiObject -Class Win32_Product | Where-Object { $_.Name -like "*Zscaler*" }
$zscalerName = if ($zscaler) { $zscaler.Name } else { $RetErr }
} else {
$zscalerName = $RetErr
}
}
return $zscalerName
/image%2F0881799%2F20140610%2Fob_a8c7fe_logo2.jpg)
Commenter cet article