Skip to main content

Eseguo lo script con powershell in locale e non mi da problemi, ma se lo eseguo tramite agent NRPE mi restituisce l’errore in oggetto.

$job = Get-VBRJob

Help me!!!

Ciao @w.palumbo , solo per check, prima hai lanciato questo comando?

Get-Module -Name Veeam.Backup.PowerShell

Perché sembra che non riesca a caricare il modulo Veeam

 


Esatto, quando powershell fa così è perchè mancano i moduli o non riesce a caricarli correttamente..


Si infatti, questo l’avevo intuito, ma esiste un modo standard per caricare il modulo? O una modalità consigliata?


Quello che ti ho condiviso è il modo standard. :)

Edit.

Forse il link di @marco_s è quello che cerchi.


Se puoi installare la console di Veeam nel server remoto, il modulo powershell viene caricato di default:

https://helpcenter.veeam.com/docs/backup/powershell/getting_started.html?ver=120


@marcofabbri ma eseguendo il Get faccio solo una verifica dell’esistenza del modulo. Lo script in locale gira, il problema è quando viene eseguito tramite NRPE.

Ho provato in diversi modi ad eseguire l’import, es. Import-Module Veeam.Backup.PowerShell -DisableNameChecking

Ma non riesce a caricarlo ugualmente.

Ho trovato sul forum anche un alternativa, eseguire il caricamento dei moduli:

Import-module -name "C:\Program Files\Veeam\Backup and Replication\Console\Veeam.Backup.PowerShell\Veeam.Backup.PowerShell.psd1"

ma mi restituisce un altro errore:

 Impossibile caricare il file o l'assembly 'file:///C:\Program
Files\Veeam\Backup and Replication\Console\Veeam.Backup.Core.dll' o una delle
relative dipendenze. Tentativo di caricare un programma con un formato non
corretto.
 

:-(


@w.palumbo se non vuoi/puoi installare la console, l’alternativa dovrebbe essere questa:

 

$Session = New-PSSession -ComputerName XXXXXXXXX
Invoke-Command -ScriptBlock {Add-PSSnapin VeeamPSSnapin} -Session $Session
Import-PSSession -PSSnapin VeeamPSSnapin -Session $Session

 

https://forums.veeam.com/powershell-f26/install-pssnapin-on-a-core-server-t45094.html

 


@marco_s ho tentato, ma mi restituisce il seguente:

Nessuno snap-in registrato per Windows PowerShell versione ...


Hai ragione, scusami..lo snap-in non è più utilizzato dalla versione v11..tu che versione hai? Provato ad installare la console?


@marco_s io ho la v12 e da locale funziona dal prompt: powershell -f nome_script.ps1 non mi restituisce errori. Ma se lo eseguo tramite NRPE va in errore… 


Prova questo al posto dello snap-in: Import-Module -PSSession $Session -Name Veeam.Backup.PowerShell


@marcofabbri ma eseguendo il Get faccio solo una verifica dell’esistenza del modulo. Lo script in locale gira, il problema è quando viene eseguito tramite NRPE.

Ho provato in diversi modi ad eseguire l’import, es. Import-Module Veeam.Backup.PowerShell -DisableNameChecking

Ma non riesce a caricarlo ugualmente.

Ho trovato sul forum anche un alternativa, eseguire il caricamento dei moduli:

Import-module -name "C:\Program Files\Veeam\Backup and Replication\Console\Veeam.Backup.PowerShell\Veeam.Backup.PowerShell.psd1"

ma mi restituisce un altro errore:

 Impossibile caricare il file o l'assembly 'file:///C:\Program
Files\Veeam\Backup and Replication\Console\Veeam.Backup.Core.dll' o una delle
relative dipendenze. Tentativo di caricare un programma con un formato non
corretto.
 

:-(

 

Ho trovato un post su un forum che dice questo:
 

It seems I’ve found the cause of the issue. For some reason PRTG won’t find the module when using: Import-module -name Veeam.Backup.Powershell as it claims it can’t find it.
However, if I after “-name”, specify the complete path to the Veeam.Backup.Powershell.dll, the script is successful. So the script is working fine and as intended, and the issue seems to be on our server and it’s ability to load the Module at times.

 

Nello stesso thread hanno creato uno script per caricare tutti i moduli necessari, farei un tentativo 😳

# Make sure PSModulePath includes Veeam Console
$MyModulePath = "C:\Program Files\Veeam\Backup and Replication\Console\"
$env:PSModulePath = $env:PSModulePath + "$(tSystem.IO.Path]::PathSeparator)$MyModulePath"
if ($Modules = Get-Module -ListAvailable -Name Veeam.Backup.PowerShell) {
try {
$Modules | Import-Module -WarningAction SilentlyContinue
}
catch {
throw "Failed to load Veeam Modules"
}
}

 


Prova questo al posto dello snap-in: Import-Module -PSSession $Session -Name Veeam.Backup.PowerShell

Questo in realtà potrebbe dargli dei problemi se non trova il percorso adatto mi sa… che diventerebbe tipo questo. Ma va provato.

Import-module -name "C:\Program Files\Veeam\Backup and Replication\Console\Veeam.Backup.PowerShell\Veeam.Backup.PowerShell.psd1"

 


@marco_s ho provato come mi avevi detto a caricare i parametri di import tramite session:

$Session = New-PSSession
Import-Module -PSSession $Session -Name Veeam.Backup.PowerShell

Questo è quello che mi restituisce:

AVVISO: Alcuni nomi di comandi importati dal modulo 'Veeam.Backup.PowerShell'
includono verbi non approvati che possono renderli meno individuabili. Per
trovare i comandi con verbi non approvati, eseguire di nuovo il comando
Import-Module con il parametro Verbose. Per visualizzare l'elenco dei verbi
approvati, digitare Get-Verb.
AVVISO: Alcuni nomi di comandi importati dal modulo 'Veeam.Backup.PowerShell'
includono verbi non approvati che possono renderli meno individuabili. Per
trovare i comandi con verbi non approvati, eseguire di nuovo il comando
Import-Module con il parametro Verbose. Per visualizzare l'elenco dei verbi
approvati, digitare Get-Verb.
Import-Module : Impossibile generare proxy per il modulo remoto
'Veeam.Backup.PowerShell'.  The -OutputModule parameter does not resolve to a
path, and a user module path cannot be found for the provided name.
In C:\Program Files (x86)\NSClient++\scripts\check_veeam_backup.ps1:13 car:1
+ Import-Module -PSSession $Session -Name Veeam.Back

Lasciando perdere l’avviso, comunque non riesce a caricare il modulo (ho provato ad aggiungere l’opzione -DisableNameChecking, ma non cambia nulla).


@marcofabbri avevo già provato quello script, che crea una variabile $env per associarla al path, ma non riesce comunque a caricare i moduli.

Ho provato ad impostare la path per esteso del file che carica tutti i moduli:

Import-module -name "C:\Program Files\Veeam\Backup and Replication\Console\Veeam.Backup.PowerShell\Veeam.Backup.PowerShell.psd1"

, ma niente:

Get-VBRJob : Termine 'Get-VBRJob' non riconosciuto come nome di cmdlet,
funzione, programma eseguibile o file script.

:-(


Peccato @w.palumbo ..a me ha funzionato.

In ogni caso, dato che mi sembra di vedere che sei su un server Windows, hai provato ad installare la console di Veeam come da indicazione iniziale?


@marco_s si la console di veeam è già installata e funzionante, credo che dipenda da come gestisce le variabili l’agent NRPE. Farò qualche altra prova ed eventualmente rifaccio lo script in un linguaggio differente, magari lo riesce a digerire…

Grazie @marco_s , grazie @marcofabbri 

 


@marco_s si la console di veeam è già installata e funzionante, credo che dipenda da come gestisce le variabili l’agent NRPE. Farò qualche altra prova ed eventualmente rifaccio lo script in un linguaggio differente, magari lo riesce a digerire…

Grazie @marco_s , grazie @marcofabbri 

 

Non ho mai usato l’agent NRPE ma con Zabbix lanciavo uno script powershell sul VBR server e non ho mai avuto problemi di errore delle funzioni… cerco di recuperare lo script 


Comment