PowerShell
0 - Prerequisiti
Informazioni sull'autorizzazione, visualizza la pagina come ottenere il token personale
1 - PowerShell in breve
PowerShell è una shell a riga di comando e un linguaggio di scripting sviluppato da Microsoft. È progettato per automatizzare le attività di amministrazione del sistema e la gestione della configurazione. PowerShell combina la potenza della riga di comando Unix con la flessibilità di un linguaggio di scripting moderno.
Caratteristiche principali di PowerShell:
- Cmdlet: PowerShell utilizza comandi speciali chiamati cmdlet, che sono piccoli script progettati per eseguire attività specifiche.
- Pipeline: Consente di passare l'output di un cmdlet come input a un altro cmdlet, facilitando la manipolazione dei dati.
- Accesso a .NET: PowerShell è costruito sul framework .NET, il che significa che può accedere a tutte le classi e i metodi .NET.
- Automazione: È ampiamente utilizzato per automatizzare attività ripetitive, come la gestione di utenti e gruppi, la configurazione del server e la distribuzione del software.
- Gestione remota: Supporta la gestione remota del sistema, consentendo agli amministratori di eseguire comandi su computer remoti.
A cosa serve PowerShell:
- Amministrazione del sistema: Gestione di utenti, gruppi, autorizzazioni, processi e servizi.
- Gestione della configurazione: Configurazione e gestione di server e applicazioni.
- Automazione delle attività: Creazione di script per automatizzare attività ripetitive e complesse.
- Gestione dell'ambiente cloud: Interazione con servizi cloud come Azure per la gestione delle risorse.
- Sviluppo di script personalizzati: Creazione di script per esigenze organizzative specifiche.
Dove posso installare e utilizzare PowerShell?
PowerShell è disponibile su più piattaforme e può essere installato e utilizzato in vari ambienti:
- Windows: PowerShell è preinstallato su Windows 10 e Windows Server 2016 e versioni successive. Può essere avviato cercando "PowerShell" nel menu Start.
- macOS: PowerShell può essere installato su macOS utilizzando Homebrew. Esegui il comando
brew install --cask powershellnel terminale. - Linux: PowerShell è disponibile per varie distribuzioni Linux, tra cui Ubuntu, CentOS e Red Hat. Può essere installato seguendo le istruzioni specifiche per la distribuzione sul sito ufficiale di PowerShell.
- Azure Cloud Shell: PowerShell è disponibile anche in Azure Cloud Shell, un ambiente shell basato su browser che può essere utilizzato direttamente dal portale di Azure.
- Docker: PowerShell può essere eseguito in un container Docker. Puoi utilizzare un'immagine Docker ufficiale di PowerShell per creare e gestire container con PowerShell preinstallato.
Indipendentemente dalla piattaforma, PowerShell offre un'esperienza coerente e potente per l'automazione e la gestione del sistema. PowerShell è uno strumento potente e versatile che può semplificare notevolmente la gestione e l'automazione del sistema.
2 - Come utilizzare PowerShell per utilizzare i nostri servizi web
Crea un file di configurazione
Crea un file di configurazione e inserisci il seguente contenuto:
{
"username": "admin_xxxxx",
"grant_type": "token",
"scope": "csdemo_xxxxxxxx",
"token": "xxxxxxxxxxJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ3ZWJhcGlhZG1pbiIsIndlYmFwaTphdXRoZW50aWNhdGlvbjpzY29wZSI6Imh1Yl9hZG1pbixjc2RlbW9fYWx5Y3NkZW1vIiwianRpIjoiNTRlOTJlY2MtN2I1OS00YWVjLThiOTMtYWVjYmQwNTk1ZmUzIiwiaWF0IjoxNjk0MDkwMzc5LCJpc3MiOiJBbHlDRVNydjJTcnZJc3N1ZXIiLCJhdWQiOiJBbHlDRVNydjJTcnZBdWRpZW5jZSJ9.QyQdBWnULnM9TF1eCuY7x8JIXxPuOUiyg1_YnxbjaCE",
"filePath": "",
"webapi_base_url": "https://xxxxxxxxxx.teamsystem.io",
"company": "1"
}
Questo ci consente di inserire i nostri dati di accesso.
Crea un file .ps1
Successivamente, crea il nostro file PowerShell con estensione .ps1
# Legge il file di configurazione
$config = Get-Content -Path "config.json" | ConvertFrom-Json
# Verifica che i parametri di configurazione siano impostati
if (-not $config.webapi_base_url) {
Write-Output "Errore: 'webapi_base_url' non è impostato nel file di configurazione."
exit
}
if (-not $config.username) {
Write-Output "Errore: 'username' non è impostato nel file di configurazione."
exit
}
if (-not $config.token) {
Write-Output "Errore: 'token' non è impostato nel file di configurazione."
exit
}
if (-not $config.scope) {
Write-Output "Errore: 'scope' non è impostato nel file di configurazione."
exit
}
if (-not $config.grant_type) {
Write-Output "Errore: 'grant_type' non è impostato nel file di configurazione."
exit
}
if (-not $config.company) {
Write-Output "Errore: 'company' non è impostato nel file di configurazione."
exit
}
if (-not $config.file_path) {
Write-Output "Avviso: 'file_path' non è impostato nel file di configurazione. Il file verrà salvato nella directory corrente."
}
# Costruisce l'URL per il token
$tokenUrl = $config.webapi_base_url + "/api/v1/auth/token"
# Ottiene il token di accesso OAuth2
$tokenResponse = Invoke-RestMethod -Method Post -Uri $tokenUrl -Body @{
username = $config.username
token = "Bearer " + $config.token
scope = $config.scope
grant_type = $config.grant_type
} -Headers @{
"Content-Type" = "application/x-www-form-urlencoded"
"Access-Control-Allow-Origin" = "http://localhost:3000"
}
$accessToken = $tokenResponse.access_token
Write-Output "Token di accesso ricevuto"
# Costruisce l'URL per la stampa del documento
$docnumber = "202500000710"
$filename = "document.pdf" # Nome file predefinito
$outputFilePath = $filename
if ($config.file_path) {
$outputFilePath = Join-Path -Path $config.file_path -ChildPath $filename
}
$webUrl = $config.webapi_base_url + "/api/v1/"+$config.scope+"/MG/Documento/"+ $docnumber +"/print?Company=" + $config.company
# Invia la richiesta tramite una chiamata RESTful
Write-Output "Invio richiesta a $webUrl"
$response = Invoke-WebRequest -Method Get -Uri $webUrl -Headers @{
"Authorization-Scope" = $config.scope
"Content-Type" = "application/pdf"
"Authorization" = "Bearer $accessToken"
}
Write-Output "Risposta ricevuta!"
# Controlla se la risposta contiene il campo streamPDF
if ($response.Content -match '"streamPDF":\s*"([^"]+)"') {
$base64String = $matches[1]
Write-Output "Contenuto Base64 trovato!"
# Decodifica il contenuto base64 e lo salva come file PDF
$decodedBytes = [System.Convert]::FromBase64String($base64String)
[System.IO.File]::WriteAllBytes($outputFilePath, $decodedBytes)
Write-Output "Risposta salvata nel file: $outputFilePath"
} else {
Write-Output "Errore: il campo streamPDF non è presente nella risposta."
}
In questo esempio, possiamo autenticarci tramite token e scaricare una stampa PDF di un documento.