Question
Recupere la version de powershell a distance
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 11 ans 6 mois #18106
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Recupere la version de powershell a distance
6ratgus écrit:
6ratgus écrit:
Un script d'inventaire de ce type doit exister, reste à savoir où...
Exact.powershell ne se retrouve pas non plus dans les programmes installer surtout depuis qui est intégré a OS.
6ratgus écrit:
Recenser les scénarios et déterminer le type d'accès le plus 'robuste' est un bon débutil va falloir plusieurs test en fonction de l'OS de la version de powershell et peut être au chose encore !
Un script d'inventaire de ce type doit exister, reste à savoir où...
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Demagalhaes
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 11 ans 6 mois #18107
par Demagalhaes
Réponse de Demagalhaes sur le sujet Re:Recupere la version de powershell a distance
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.
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.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 11 ans 6 mois #18108
par Philippe
Réponse de Philippe sur le sujet Re:Recupere la version de powershell a distance
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
[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
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Recupere la version de powershell a distance