Question activer wsman sur un pc distant wia wmi

Plus d'informations
il y a 13 ans 9 mois #12049 par blanc
Bonjour,
Le but : depuis mon PC, je souhaite configurer sur un pc distant le service wsman pour qu'il accepte les appels http ( en gros faier winrm quickconfig /q sur un pc distant ).
Contexe du PC distant :
XP PRO SP3 avec powershellV2 et wsman installés.
J'ai éliminé psexec qui n'est pas autorisé (mais ....).

Avec wmi, je crée un process à distance avec les crédential d'un administrateur local de PC-Distant( pas de domaine ).
[code:1]$psec = ConvertTo-SecureString $mdp -asplaintext -force
$cred = New-Object System.Management.Automation.PSCredential $user, $psec
#$cmd='powershell -command \"&{ Set-WSManQuickConfig -Force }\" '
$cmd='c:\winnt\system32\cmd.exe /c c:\test.cmd'
#Set ObjWmiLocator = CreateObject(\"WbemScripting.SWbemLocator\"«»)
$locator = New-Object -ComObject \"WbemScripting.SWbemLocator\"
#Set objWMIService = objWmiLocator.ConnectServer (strIRGP,\"root\cimv2\",strUser2,strPwd2)
$oRemoteWmi = $locator.ConnectServer($computer,\"root\cimv2\",$user,$mdp)
#Set oClassProcess = objWMIService.Get(\"Win32_Process\"«»)
$oRemoteClassProcess=$oRemoteWmi.Get(\"Win32_Process\"«»)
# pour la position sur l'écran
#Set objProcessStartup = objWMIService.Get(\"Win32_ProcessStartup\"«»)
$oPS=$oRemoteWmi.Get(\"Win32_ProcessStartup\"«»)
#Set objMethod = oClassProcess.Methods_(\"Create\"«»)
$oMethodeCreate=$oRemoteClassProcess.Methods_|?{$_.name -eq 'create'}
#Set objInParameters = objMethod.inParameters.SpawnInstance_()
$oInParam=$oMethodeCreate.inParameters.SpawnInstance_()
#objInParameters.CommandLine = strExeName & strArgs
($oInParam.Properties_ | where {$_.name -eq \"CommandLine\"}).Value = $cmd
#objInParameters.CurrentDirectory = strCurrentDir
($oInParam.Properties_ | where {$_.name -eq \"CurrentDirectory\"}).Value = \"c:\\"
#Set objInParameters.ProcessStartupInformation = objProcessStartup
($oInParam.Properties_ | where {$_.name -eq \"ProcessStartupInformation\"}).Value = $oPS
#Set objOutParameters = oClassProcess.ExecMethod_(\"Create\", objInParameters)
$outParam = $oRemoteClassProcess.ExecMethod_(\"Create\", $oInParam)
#lecture code du pid
$remotePid = ($outParam.Properties_ | ?{$_.name -eq \"ProcessId\"}).Value
Write-Host \"remotePid = $remotePid\"
#comment savoir si la commande est terminée ?
[/code:1]
Mais ce process qui tourne sur le pc distant n'a pas le droit de configurer wsman.

Le process que je souhaite lancée sur PC-Distant pour configurer wsman est :
powershell.exe -command \"& {Set-WSManQuickConfig -Force}\"
J'ai essayé avec cmd.exe /c winrm.cmd quickconfig /q et cscript.exe winrm.vbs quickconfig /q

La partie WMI marche bien car je lance notepad.exe, powershell.exe, un cmd.exe pour lancer un script de contrôle déposé sur la machine distante pour les tests.

le script de contrôle qui m'a permis de trouver l'erreur retournée par powershell:
set >> c:\test.txt
echo %date% %time% >> c:\test.txt
powershell.exe -command \"&{ Set-WSManQuickConfig -Force}\" >> c:\test.txt 2>>&1
echo %date% %time% >> c:\test.txt

note : pour pouvoir faire de multiples tests, je supprime le listener http et la commande lancée à distance devrait le reconstruire
rem c:\winnt\system32\winrm delete winrm/config/Listener?Address=*+Transport=HTTP

Le message d'erreur de powershell est : \"accès refusé\"

18/06/2012 17:12:38,88
WinRM est déjà configuré pour recevoir des demandes sur cet ordinateur.
Set-WSManQuickConfig : <f:WSManFault xmlns:f=\"schemas.microsoft.com/wbem
/wsman/1/wsmanfault\" Code=\"5\" Machine=\"PC-Distant\"><f:Message>Accès refusé. </
f:Message></f:WSManFault>
Au niveau de ligne : 1 Caractère : 24
+ &{ Set-WSManQuickConfig <<<< -Force}
+ CategoryInfo : InvalidOperation: (:) [Set-WSManQuickConfig], In
validOperationException
+ FullyQualifiedErrorId : WsManError,Microsoft.WSMan.Management.SetWSManQu
ickConfigCommand
18/06/2012 17:12:39,90

Pour cet \"accès refusé\"? Comment contourner?
Merci d'avance.
Noël

Message édité par: noel, à: 18/06/12 22:36<br><br>Message édité par: noel, à: 18/06/12 22:41

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

Plus d'informations
il y a 13 ans 8 mois #12280 par Matthew BETTON
Salut,

Il n'est pas possible d'activer WinRM à distance, en tout cas via ce type de solution, pour des raisons de sécurité.

Une solution consiste à planifier l'exécution de la commande 'Enable-PSRemoting -Force'.

Copie le script à distance sur chaque machine puis utilises 'schtasks.exe' pour planifier son exécution, toujours à distance.

Source :

social.technet.microsoft.com/Forums/en-U...f-9c05-0e1a33412941/

Sinon, tu trouveras ici les 3 solutions pour configurer WinRM (De mémoire, Laurent et Richard en ont déjà parlé dans ce même forum) :

blogs.msdn.com/b/wmi/archive/2009/03/17/...winrm-listeners.aspx

@ +

Matthew

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

Plus d'informations
il y a 13 ans 8 mois #12286 par Richard Lazaro
Alors j'ai déjà configuré WinRM a distance de mémoire.

Je lance un process PowerShell à distance via WMI et la classe Win32_Process avec la commande suivante :

[code:1]
powershell.exe -ExcutionPolicy byPass -Command \&quot;Enable-PSRemoting -Force:$true -Confirm:$false\&quot;[/code:1]

Il me semble bien que cela fonctionne.

Bien cordialement,
Richard Lazaro.

Think-MS : (Get-Life).Days | %{ Learn-More }

\\&quot;Problems cannot be solved by the same level of thinking that created them.\\&quot; - Albert Einstein

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

Plus d'informations
il y a 13 ans 8 mois #12301 par Matthew BETTON
Bonsoir,

Je vais tester demain sur un XP.

@ +

Matthew

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

Plus d'informations
il y a 13 ans 8 mois #12321 par Matthew BETTON
Bonsoir,

J'ai testé mais ce n'était pas concluant. Au final, il n'y avait pas de listener créé... Toutefois, j'ai des doutes sur la configuration que j'ai utilisé. Il va falloir que je trouve un moment pour le faire sur une plateforme de tests perso (avec au moins un XP virtualisé).

Pour info, j'ai testé la commande dans une fenêtre DOS distante ouverte avec un psexec exécuté en tant qu'Admin : La commande renvoie un simple \&quot;Access Denied\&quot;.

Je reviendrai ici lorsque j'aurais fait le test (Dans tous les cas, ça m'intéresse, bien qu'en entreprise, je le ferai bien volontiers via les GPO :p ).

@ +

Matthew

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

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