Question Recupere la version de powershell a distance

Plus d'informations
il y a 11 ans 6 mois #18106 par Laurent Dardenne
6ratgus écrit:

powershell ne se retrouve pas non plus dans les programmes installer surtout depuis qui est intégré a OS.

Exact.
6ratgus écrit:

il va falloir plusieurs test en fonction de l'OS de la version de powershell et peut être au chose encore !

Recenser les scénarios et déterminer le type d'accès le plus 'robuste' est un bon début :)

Un script d'inventaire de ce type doit exister, reste à savoir où...

Tutoriels PowerShell

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

Plus d'informations
il y a 11 ans 6 mois #18107 par Demagalhaes
Merci pour la fonction elle fonctionne.
et l'utilisation du \"cmd /c\" à la place d'\"invoke-commande\" marche sans problème j'ai juste changé la commande \"$PSVersionTable\" par \"Get-Host\" car apparemment elle ne renvoyer rien sur du powershell v1.

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

Plus d'informations
il y a 11 ans 6 mois #18108 par Philippe
a partir des clés de la base de registre j'ai la fonction suivante, à la suite des exemples donc une solution pour un groupe ordinateur :

[code:1]
function get-versionpowershell
{
Param($target = \".\", $user = \"\", $password)

if ($user -ne \"\" -and $target -ne \".\"«») {
$pass = ConvertTo-SecureString $password -AsPlainText -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $user,$pass
$reg = Get-WmiObject -List -Namespace root\default -ComputerName $target -Credential $cred | Where-Object {$_.Name -eq \"StdRegProv\"}
}
else {
$reg = Get-WmiObject -List -Namespace root\default -ComputerName $target | Where-Object {$_.Name -eq \"StdRegProv\"}
}
$HKLM = 2147483650
$value = ($reg.EnumKey($HKLM,\"Software\Microsoft\"«»)).sNames | where {$_ -like \"*powershell*\"}
if (($reg.EnumKey($HKLM,\"Software\Microsoft\"«»)).sNames | where {$_ -like \"*powershell*\"}) {
$value = $reg.GetStringValue($HKLM,\"Software\Microsoft\PowerShell\1\PowerShellEngine\",\"PowerShellVersion\"«»).sValue
#write-host \"Powershell est installé avec la version : $value sur $target\"
}
else {
#write-host \"Powershell n'est pas installé sur $target\"
}
return $value
}

# version local
get-versionpowershell
#>> 2.0

# version sur un ordi distant
$ordi = \"PC-accueil\"
$value = get-versionpowershell $ordi
if ($value) {
write-host \"Powershell est installé avec la version : $value sur $ordi\"
}
else {
write-host \"Powershell n'est pas installé sur $ordi\"
}

#>> Powershell n'est pas installé sur PC-accueil

# version sur un ordi distant avec interrogation sur le compte admin
$user = \".\administrateur\"
$password = \"password\"
$ordi = \"PC-detest\"
get-versionpowershell $ordi $user $password
#>> 2.0

# version sur un groupe d'ordi distant
$result = @()
\"PC-accueil\", \"PC-test1\", \"pc-test2\", \"pc-test3\" | foreach {
$resultat = get-versionpowershell $_ $user $password
if ($resultat) {$resultat = \"Version $resultat\"} else {$resultat = \"Absent\"}
$obj = New-Object Psobject
$obj | Add-Member -Name \"Ordinateur\" -membertype Noteproperty -Value $_
$obj | Add-Member -Name \"Etat\" -membertype Noteproperty -Value $resultat
$result += $obj
}
$result

Ordinateur Etat
----
PC-accueil Version 2.0
PC-test1 Version 2.0
pc-test2 Absent
pc-test3 Version 1.0
[/code:1]<br><br>Message édité par: 6ratgus, à: 16/09/14 16:37

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

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