Una raccolta di riferimenti, più che altro, forse utile per chi fuori da qui utilizza strumenti per il controllo remoto dei dispositivi aziendali come iPhone o iPad e necessita di aggiungere rapidamente configurazioni al dispositivo. Stavolta niente pappa pronta, più paio di collegamenti utili per costruire, come ho fatto io, un buono script PowerShell che ti permetta di creare un file di tipo MobileConfig
da dare in pasto a iPhone o iPad (anche via console di terze parti come Cisco Meraki o AirWatch).
Giusto per capirci un po’ meglio. Il file MobileConfig
è in realtà un XML che puoi aprire con qualsiasi editor di testo (io utilizzo Notepad++ in ogni caso), e che propone una serie di informazioni in grado di istruire in un colpo solo il dispositivo di destinazione. Un collegamento a una particolare rete WiFi, un certificato utente che permette l’autenticazione su applicazioni web aziendali, ecc. Molte di queste informazioni possono rimanere identiche tra più utenti, altre invece no (come il certificato di sicurezza personale che permette l’autenticazione su una WiFi, per esempio).
Per questo motivo ho scritto un codice PowerShell che fonda insieme le informazioni e che, prendendo in pasto il file PFX generato da un server di dominio (esportazione del certificato utente e della chiave privata, protetto da password), generi autonomamente il XML con estensione MobileConfig
da caricare successivamente sulle piattaforme di management dei dispositivi mobili.
Si tratta tutto sommato di comandi basilari, come un Add-Content "Utente.mobileconfig" -value $blocco -encoding UTF8
dove il $blocco
è magari una parte di quelle informazioni precedentemente inserite nella variabile, che rimane sempre uguale, che può essere replicata per ciascun file MobileConfig
da generare. Poi c’è il PFX, che va encodato e poi inserito in una variabile che utilizzerò in seguito, utilizzando un blocco simile a questo:
#Inietto contenuto PFX personale certutil -encode ("$PFXDir\" + $($i.Name)) "Temp.enc" $base64 = Get-Content "Temp.enc" $base64 = $base64[1..($base64.count - 1)] Add-Content "Utente.mobileconfig" -value $base64 -encoding UTF8 #Rimuovo file ENC precedentemente creato Remove-Item "Temp.enc"
Dove $PFXDir
sarà la directory contenente i file PFX (ma va?) e Temp.enc
viene generato esclusivamente per poterne catturare il contenuto (encodato in base64).
Da qui in poi si potranno aggiungere ulteriori blocchi già stabiliti e che rimarranno sempre uguali, se necessario (occhio agli UUID per certificati e impostazioni, ogni MobileConfig
dovrà averne uno proprio, diverso dall’altro, basterà un’istruzione di tipo [guid]::NewGuid()
), fino poi a chiudere il file, fino all’ultimo $blocco
.
Ci ho messo un po’ a capire bene la logica che sta dietro la generazione automatica dei MobileConfig
, ma una volta arrivato a far funzionare il tutto, è tutto diventato tutto più semplice. Partendo infatti da una cartella contenente i tuoi file PFX, potrai far svolgere il lavoro alla PowerShell semplicemente richiamando un blocco di questo tipo:
$ListPFX = Get-ChildItem $PFXDir | where { ! $_.PSIsContainer } | Select-Object Name foreach ($i in $ListPFX) { #Clono il nome PFX (senza estensione) per generare il MobileConfig $dest = [System.IO.Path]::GetFileNameWithoutExtension($($i.Name))
Dove $ListPFX
corrisponderà al contenuto della cartella contenente i PFX, che verrà quindi utilizzata per fare il lavoro sporco dal primo all’ultimo MobileConfig
da generare. Vorrei poter pubblicare il codice sorgente del mio PS1 ma ci sono davvero troppi riferimenti aziendali, impiegherei un po’ di tempo a pulirlo e generalizzarlo, rischiando poi di confonderti maggiormente le idee ;-)
Con l’occasione ti lascio qualche collegamento alle fonti utilizzate:
- discussions.apple.com/thread/2780207?start=0&tstart=0
- www.poshcodebear.com/blog/2014/2/1/removing-the-first-or-last-lines-from-a-text-file
- social.technet.microsoft.com/Forums/scriptcenter/en-US/4f5bf6bf-4e22-4faf-9245-b8caf4668cab/powershell-how-to-get-a-filename-without-extension?forum=ITCG
Buon lavoro!
L'articolo potrebbe non essere aggiornato
Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)