Question Administration d'un serveur Core en mode graphique

Plus d'informations
il y a 14 ans 7 mois #6166 par Olivier
Bonjour à tous !

Travaillant beaucoup avec Hyper-v sur une installation \"Core\" de Hyper-V Server 2008 R2, j'ai longtemp utilisé la ligne de commande pour gérer mon serveur ...

J'ai récement trouvé un outil de gestion géré par PowerShell avec une interface graphique permettant de gérer un serveur version Core avec une interface graphique.

Le projet sort du site www.CodePlex.com

Le téléchargement est disponible ICI

Le documentations ICI

Maintenant, pour l'installation de cet outil, il faudra au préalable activer les fonctionnalités suivante :

1 - NetFx2-ServerCore
2 - MicrosoftWindowsPowerShell

Pour consulter les fonctionnalités activées (ou pas), utiliser la commande suivante :
[code:1]OCIST[/code:1]

Pour commencer, il faut activer en premier la
fonctionnalité \"NetFx2-ServerCore\" par la commande suivante :
[code:1]OCSetup NetFX2-ServerCore[/code:1]

Et ensuite, pour la fonctionnalité \"MicrosoftWindowsPowerShell\", utilisez la commande suivante :
[code:1]OCSetup MicrosoftWindowsPowerShell[/code:1]

Pour l'installation de l'utilitaire, il ne faut pas mettre d'espace dans le chemin d'accès au repertoire où on aura \"décompresser\" le contenu du fichier \"CoreConfig.cab\" (dispo ICI ). Autrement, l'installation ne fonctionnera pas ...

Si tout se passe bien, une fenêtre de gestion \"graphique\" et gérée par PowerShell sera à disposition sur votre installation version \"Core\" :-)

Maintenant, ma question est la suivante :
Le module \"Roles.ps1\" ne fonctionne pas dans mon cas et me retourne l'erreur suivante :
[code:1]Exception lors de l'appel de \"Contains\" avec +\"1\" argument(s): \"La valeur ne peut pas être null.
Nom du paramètre : value\"
Au niveau de D:\Administration\CoreConfigurator2.0\Roles.ps1 : 518 Caractère : 23
+ if ($tt.Contains <<<< ($element))
+ CategoryInfo : NotSpecifiedfied: (:«») [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException[/code:1]

Le code complet de la commande est le suivant :
[code:1]function Get-Status($Value)
{
if ($Value -eq $True)
{
$processStartInfo = New-Object System.Diagnostics.ProcessStartInfo
$processStartInfo.FileName = \"oclist\"
$processStartInfo.UseShellExecute = $false
$processStartInfo.RedirectStandardOutput = $true
#
$process = [System.Diagnostics.Process]::«»Start($processStartInfo)
while (!$process.StandardOutput.endofStream)
{
$myoutputline = $process.StandardOutput.ReadLine()
if ($myoutputline.Contains(\"Not Installed:\"«»))
{
$iPos = $myoutputline.indexof(\"Not Installed:\"«»)
$procOutput += @($myoutputline.substring($iPos + 14))
}
}
#
foreach ($element in $procOutput)
{
$tt = $ListRoles.items
if ($tt.Contains($element))
{
#Do Nothing
}
else
{
$ListRoles.Items.Add($element, $Null)
}
}
$process.WaitForExit()
}
else
{
$processStartInfo = New-Object System.Diagnostics.ProcessStartInfo
$processStartInfo.FileName = \"oclist\"
$processStartInfo.UseShellExecute = $false
$processStartInfo.RedirectStandardOutput = $true

$process = [System.Diagnostics.Process]::«»Start($processStartInfo)
while (!$process.StandardOutput.endofStream)
{
$myoutputline = $process.StandardOutput.ReadLine()
if ($myoutputline.Contains(\"Installed:\"«»))
{
if (!$myoutputline.Contains(\"Not Installed:\"«»))
{
$iPos = $myoutputline.indexof(\"Installed:\"«»)
$procOutput += @($myoutputline.substring($iPos + 10))
}
}
}
#
foreach ($element in $procOutput)
{
$tt = $ListRoles.items
if ($tt.Contains($element))
{
#Do Nothing
}
else
{
$ListRoles.Items.Add($element, $Null)
}
}
$process.WaitForExit()
}
}[/code:1]

Si quelqu'un pourrait me dépanner ...

Pour les plus motivés, je pense que cet utilitaire mérite qu'on s'y attache et pourquoi pas pouvoir l'améliorer et pouvoir proposer ces améliorations directement au CoreConfigTeam de la part du Team PowerShell Francophone


Merci d'avance et à +

Olivier<br><br>Message édité par: Olivier, à: 14/02/10 18:32

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

Plus d'informations
il y a 14 ans 7 mois #6167 par Laurent Dardenne
Salut,
dans ton code la variable $ListRoles sort de nulle part, elle donc $null.
Et comme le code n'est pas \&quot;bétonné\&quot;, la suite part en vrille.
C'est ça le dynamisme :laugh:

Tutoriels PowerShell

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

Plus d'informations
il y a 13 ans 2 mois #9937 par Bran
Bonjour

ce post est un peu vieux mais comme personne n'a clairement identifié le pb je me permet de le déterrer, si ça évite des heures de réflexion à certains.

Il semble qu'à priori vous utilisez une version non anglaise de 2008 server.

Aussi la ligne 508 par exemple,
[code:1]if ($myoutputline.Contains(\&quot;Not installed:\&quot;«»))[/code:1]
ne retourne rien.
En français, en faisant un oclist on se rends bien compte que les rôles sont précédés d'un \&quot;Non installé\&quot; ou \&quot;Installé\&quot; et non pas \&quot;Not Installed\&quot; ou \&quot;Installed\&quot;.
A priori, une simple modification du script en changeant :
Not Installed: -&gt; Non installé
Installed: -&gt; Installé
devrait suffire pour faire marcher le script.

A+

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

Plus d'informations
il y a 13 ans 2 mois #9939 par Laurent Dardenne
Salut,
reabran écrit:

ce post est un peu vieux mais comme personne n'a clairement identifié le pb

Tu en soulèves un autre.
reabran écrit:

A priori, une simple modification du script en changeant :
Not Installed: -&gt; Non installé
Installed: -&gt; Installé
devrait suffire pour faire marcher le script.

Joli !
C'est vrai que cela aidera, en même temps ceux utilisant l'anglais font la même erreur ;-)
Ce n'est pas évident de localiser ce type de traitement, mais de l'avoir à l'esprit c'est bien de le rappeler :)

Tutoriels PowerShell

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

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