Question Résultat différent entre local et remote!

Plus d'informations
il y a 12 ans 1 mois #17278 par Beaudier
Bonjour,

J'essaie d'utiliser un SnapIn Powershell pour manipuler des VM et leurs sauvegardes.

Pour cela, il y a tout ce qu'il faut sur le serveur de sauvegarde. Lorsque je lance powershell sur le serveur (2008 R2), je dois lancer un script d'initialisation, et j'ai mes cmdlets.

Je souhaite pouvoir manipuler mes VM à distance (depuis mon Windows 7)

J'ouvre correctement ma session (enter-pssession), et je lance le fameux script, mais j'obtiens plein d'erreurs :

Exception lors de l'appel de « GetAssemblyName » avec « 1 » argument(s) : « Impossible de charger le fichier ou l'assembly 'C:\Program Files\Veeam\Backup and Replication\Backup\Veeam.Backup.PowerShell.dll' ou une de ses dépendances. Cet assembly a été constru
it par un runtime plus récent que le runtime actuellement chargé et ne peut pas être chargé. »

Add-PSSnapin : Impossible de charger le composant logiciel enfichable Windows PowerShell VeeamPSSnapIn en raison de l'erreur suivante : Impossible de charger le fichier ou l'assembly 'file:///C:\Program Files\Veeam\Backup and Replication\Backup\Veeam.Backup.P
owerShell.dll' ou une de ses dépendances. Cet assembly a été construit par un runtime plus récent que le runtime actuellement chargé et ne peut pas être chargé.


Le serveur et le client sont à jour des mises à jour de Windows...

Je ne sais pas pourquoi je n'ai pas le même résultat lorsque j'exécute le script localement ou depuis une session distante.

merci pour votre aide !

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 1 mois #17280 par xyz
Salut,
quelle version de Powershell utilises-tu ?
De prime abord, il semblerait qu'une version du framework plus récente soit nécessaire...

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 1 mois #17305 par Beaudier
Bonjour,

J'ai un Windows SP1 Entreprise x64

J'ai exécuté ceci:

[code:1]PS C:\Users\cedric> (Get-Host).Version

Major Minor Build Revision



2 0 -1 -1

PS C:\Users\cedric> $PSVersionTable.PsVersion

Major Minor Build Revision



2 0 -1 -1

PS C:\Users\cedric> Get-WmiObject win32_product |where { $_.name.Contains('NET') } | ft name,version -auto

name version
----
Microsoft ASP.NET MVC 2 2.0.50217.0
Microsoft .NET Framework 4.5 4.5.50709
Microsoft ASP.NET MVC 2 - FRA 2.0.50331.0
Microsoft ASP.NET MVC 2 - Visual Studio 2010 Tools 2.0.50217.0
Outils Microsoft Visual Studio 2010 ADO.NET Entity Framework 10.0.30319
Microsoft Sync Services for ADO.NET v2.0 SP1 (x64) fr 2.0.3010.0
Microsoft .NET Framework 4 Multi-Targeting Pack 4.0.30319
Microsoft .NET Framework 4.5 FRA Language Pack 4.5.50709
Microsoft ASP.NET MVC 2 - Visual Studio 2010 Tools - FRA 2.0.50331.0[/code:1]

Sur le Windows Server 2008 R2 x64, ceci :

[code:1]PS C:\Users\cedric> (get-host).Version

Major Minor Build Revision



2 0 -1 -1


PS C:\Users\cedric> $PSVersionTable.PsVersion

Major Minor Build Revision



2 0 -1 -1

PS C:\Users\cedric> Get-WmiObject win32_product |where { $_.name.Contains('NET')
} | ft name,version -auto

name version
----
Microsoft .NET Framework 4 Extended 4.0.30319
Microsoft .NET Framework 4 Client Profile 4.0.30319[/code:1]


Par contre, lorsque j'exécute ces commandes, le résultat diffère :


[code:1]PS C:\Users\cedric> $s = New-PSSession -ComputerName veeamserver


PS C:\Users\cedric> enter-pssession -session $s


[veeamserver]: PS C:\Users\cedric\Documents> (get-host).Version

Major Minor Build Revision



1 0 0 0


[veeamserver]: PS C:\Users\cedric\Documents> $PSVersionTable.PsVersion

Major Minor Build Revision



2 0 -1 -1 [/code:1]


Du coup je ne comprend pas très bien le problème. A priori le client et le serveur ont les mêmes version de powershell et du framework.

Merci pour votre aide

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 1 mois #17307 par xyz
Baud écrit:

Du coup je ne comprend pas très bien le problème.

Le numéro du host n'est pas le numéro de version de PS, la version '1.0' est le numéro du host du 'remoting' :
[code:1]
(get-host).Version
start-job {(get-host).Version}
[/code:1]
Baud écrit:

A priori le client et le serveur ont les mêmes version de powershell et du framework.

Oui effectivement.
Je n'ai jamais rencontré ce pb, mais le message d'erreur est peut être dû au PSremoting,
voir ce post et celui-ci .

Essaie, sur le serveur 2008, de charger ton script d'init dans un job :
[code:1]
start-job {&\"Fullpath\Init.ps1\"} |
wait-job|
receive-job -keep
[/code:1]

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 1 mois #17308 par Beaudier
J'ai regardé avec les .config mais j'ai la même chose côté client et serveur.

J'ai essayé de charger le script depuis un Job mais j'ai retourné une erreur WinMan.

J'ai essayé de charger la DLL incriminée sur mon poste (donc pas de psremote) et j'obtiens la même erreur qu'avant (version CLR...)

Par contre la même commande sur le serveur fonctionne
[code:1]PS C:\Users\cedric> [reflection.assemblyname]::GetAssemblyName('C:\Program Files\Veeam\Backup and Replication\Backup\Ve
am.Backup.PowerShell.dll')

Version Name
----
7.0.0.0 Veeam.Backup.PowerShell[/code:1]

Puis j'ai installé Windows Management 3 sur mon poste et j'arrive enfin à charger la DLL, comme sur le serveur.

Je rappelle donc sur sur le serveur, le prompt de powershell indique \"copyright (C) 2009 Microsoft\" et sur mon poste client indique maintenant 2012.

Maintenant je tente la même commande mais en PSremote, et le problème reste intacte :
[code:1][veeamserver]: PS C:\Users\cedric> [reflection.assemblyname]::GetAssemblyName('C:\Program Files\Veeam\Backup and Replication\Backup\Veeam.backup.powershell.dll')
Exception lors de l'appel de « GetAssemblyName » avec « 1 » argument(s) : « Impossible de charger le fichier ou l'assembly 'C:\Program Files\Veeam\Backup and Replication
\Backup\Veeam.backup.powershell.dll' ou une de ses dépendances. Cet assembly a été construit par un runtime plus récent que le runtime actuellement chargé et ne peut pas
être chargé. »
Au niveau de ligne : 1 Caractère : 43
+ [reflection.assemblyname]::GetAssemblyName <<<< ('C:\Program Files\Veeam\Backup and Replication\Backup\Veeam.backup.powershell.dll')
+ CategoryInfo : NotSpecified: (:«») [], Met[/code:1]

Je retente le job mais en powershell 3
[code:1][veeamserver]: PS C:\Program Files\Veeam\Backup and Replication\Backup> start-job{&\"c:\Program Files\Veeam\Backup and Replication\Backup\Initialize-VeeamToolkit.ps1\"}|Wait-Job|Receive-Job -keep
Exception lors de la définition de « WindowTitle » : « Exception of type 'System.OutOfMemoryException' was thrown. »
+ CategoryInfo : InvalidOperation: (:«») [], RuntimeException
+ FullyQualifiedErrorId : PropertyAssignmentException

Receive-Job : Exception of type 'System.OutOfMemoryException' was thrown.
Au niveau de ligne : 1 Caractère : 116
+ start-job{&\"c:\Program Files\Veeam\Backup and Replication\Backup\Initialize-VeeamToolkit.ps1\"}|Wait-Job|Receive-Job <<<< -keep
+ CategoryInfo : NotSpecified: (:«») [Initialize-VeeamToolkit.ps1], OutOfMemoryException
+ FullyQualifiedErrorId : System.OutOfMemoryException,Initialize-VeeamToolkit.ps1[/code:1]

J'ai commenté la ligne N°2
[code:1]#$host.ui.RawUI.WindowTitle = \"$productName\"[/code:1]

Maintenant je fini:
[code:1][veeamserver]: PS C:\Users\cedric> start-job{&\"c:\Program Files\Veeam\Backup and Replication\Backup\Initialize-VeeamToolkit.ps1\"}|Wait-Job|Receive-Job -keep
Receive-Job : Le processus en arrière-plan a signalé une erreur avec le message suivant : .
Au niveau de ligne : 1 Caractère : 116
+ start-job{&\"c:\Program Files\Veeam\Backup and Replication\Backup\Initialize-VeeamToolkit.ps1\"}|Wait-Job|Receive-Job <<<< -keep
+ CategoryInfo : OperationStopped: (System.Manageme...emotingChildJob:«»PSRemotingChildJob) [Receive-Job], PSRemotingTransportException
+ FullyQualifiedErrorId : JobFailure,Microsoft.PowerShell.Commands.ReceiveJobCommand[/code:1]


Je pensais que mon problème était un truc tout bête, mais j'ai l'impression que je m'éloigne de la solution !

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 1 mois #17313 par xyz
Baud écrit:

mais j'ai l'impression que je m'éloigne de la solution !

Je ne saurais dire.
Je suppose que le pb est lié au process wsmprovhost.exe et à l'exécution de plusieurs version de la CLR dans un process ( side by side ).
Essaie en créant fichier de config pour ce process .
Auparavant essaie avec l'implicite remoting, je doute que cela change qq chose, mais on sera fixé.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.044 secondes
Propulsé par Kunena