Question Set-service (Résolu)

Plus d'informations
il y a 17 ans 3 mois #3475 par michault
Set-service (Résolu) a été créé par michault
Bonjour,

je viens de me créer une fonction pour modifier le type de démarrage d'un service

[code:1]function StartupService {
param ($servicename, $startup)

Set-Service $servicename -Startuptype $startup
}[/code:1]

En local, pas de problème mais peu d'intérêt

A distance j'ai un souci: je modifie mon service en local.

voilà mon script:

[code:1]#ChangeRemoteServices.ps1
# Paramètres: $ouparm :L'Unité d'Organisation dont on veut récupérer les ordinateurs.
# $who : Quels PC exemple PCOPR12 ou PC*
# $service : service \"Thèmes\" ou \"*Th*\"
# $startup : type de démarrage automatic, manual, disabled
Param($ouparm, $who, $service, $startup)
#Définition des constantes
$domain = \",DC=xxxxx,DC=xxx\"
$OU= $ouparm + $domain

get-QADComputer -searchRoot $OU -ErrorAction SilentlyContinue | where {$_.Name -like $who} | ForEach-Object {
Ping.exe $_.Name -n 1 > $null
if ($Lastexitcode -eq 0)
{
$service = Get-WmiObject -Class Win32_Service -ComputerName $_.Name | where {$_.Displayname -like \"$service\"} | `
StartupService $service.name $startup
}
else
{
Write-Host $_.Name\"`t\", \" : PC injoignable \"
}
}
[/code:1]

Je vois bien que je ne fait pas le lien avec le PC voulu, mais comment faire?<br><br>Message édité par: Arnaud, à: 16/12/08 21:09

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

Plus d'informations
il y a 17 ans 3 mois #3477 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Set-service
Peut être que \&quot;-ComputerName $_.Name\&quot; deviens \&quot;-ComputerName .\&quot; ?
Là faut tracer je pense.

Tutoriels PowerShell

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

Plus d'informations
il y a 17 ans 3 mois #3480 par michault
Réponse de michault sur le sujet Re:Set-service
Voilà ma nouvelle fonction

[code:1]
function StartupService {
param ($computer, $displayname, $startup)

$service = Get-WmiObject -Class Win32_Service -ComputerName $computer | where {$_.DisplayName -eq \&quot;$displayname\&quot;}
$service.ChangeStartMode($startup)
}[/code:1]


et voilà le script:

[code:1]
#ChangeRemoteServices.ps1
# Paramètres: $ouparm :L'Unité d'Organisation dont on veut récupérer les ordinateurs.
# $who : Quels PC exemple PCOPR12 ou PC*
# $service : service \&quot;Thèmes\&quot;
# $startup : type de démarrage (automatic, manual, disabled)
Param($ouparm, $who, $service, $startup)

#Définition des constantes
$domain = \&quot;,DC=xxxxxxx,DC=xxx\&quot;
$OU= $ouparm + $domain

get-QADComputer -searchRoot $OU -ErrorAction SilentlyContinue | where {$_.Name -like $who} | ForEach-Object {
Ping.exe $_.Name -n 1 &gt; $null
if ($Lastexitcode -eq 0)
{
StartupService $_.Name $service $startup
}
else
{
Write-Host $_.Name\&quot;`t\&quot;, \&quot; : PC injoignable \&quot;
}
} [/code:1]

Cà roule et merci;)

Message édité par: chm69, à: 16/12/08 18:38<br><br>Message édité par: Arnaud, à: 17/12/08 22:29

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

Plus d'informations
il y a 17 ans 3 mois #3481 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet Re:Set-service
Salut Chm69,

Merci pour ton script. Pourrais tu donner quelques exemples d'utilisation ? Ca me faciliterait la tâche pour l'intégrer à notre bibliothèque de scripts.

Merci !

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

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

Plus d'informations
il y a 17 ans 3 mois #3482 par michault
Réponse de michault sur le sujet Re:Set-service
Salut Arnaud,

Un exemple, je veux interdire les mises à jour automatiques sur les PC que je gère.
j'appelle ce script avec comme paramètres:
[code:1]
-ouparm(\&quot;CN=Computers\&quot;«») -who(\&quot;PC*\&quot;«») -service(\&quot;Mises à jour automatiques\&quot;«») -startup(\&quot;disabled\&quot;«»)[/code:1]

Attention il y a un prérequis dans le script pour utiliser l'applet get-QADComputer.
(ActiveRoles management shell for active directory de Quest)

Voilà également pour arrêter et redémarrer un service, 2 fonctions à appeler de la même façon que StartupService :

[code:1]#####################################################
# Arrêt d'un service
#####################################################
function StopService {
param ($computer, $displayname)

$service = Get-WmiObject -Class Win32_Service -ComputerName $computer | where {$_.DisplayName -eq \&quot;$displayname\&quot;}
$service.Stopservice()
}
#####################################################
# Démarrage d'un service
#####################################################

function StartService {
param ($computer, $displayname)

$service = Get-WmiObject -Class Win32_Service -ComputerName $computer | where {$_.DisplayName -eq \&quot;$displayname\&quot;}
$service.Startservice()
}[/code:1]

Voilà, j'espère que cela te va:)

Message édité par: chm69, à: 17/12/08 10:35<br><br>Message édité par: Arnaud, à: 17/12/08 22:12

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

Plus d'informations
il y a 17 ans 3 mois #3489 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet Re:Set-service
Salut Chm69,

Merci pour tes précisions. Je voudrais juste ajouter 3 choses :
1. Lorsque tu donnes la valeur à tes paramètres, sache que les parenthèses ne sont pas utiles. Par exemple :
[code:1]-ouparm(\&quot;CN=Computers\&quot;«») -who(\&quot;PC*\&quot;«») -service(\&quot;Mises à jour automatiques\&quot;«») -startup(\&quot;disabled\&quot;«»)
[/code:1]

Peut s'écrire :

[code:1]-ouparm \&quot;CN=Computers\&quot; -who \&quot;PC*\&quot; -service \&quot;Mises à jour automatiques\&quot; -startup \&quot;disabled\&quot;
[/code:1]

On peut même se passer des guillemets, sauf dans le cas où la valeur contient des espaces.

2. Bien que ton script soit très utile dans certains cas, sais tu qu'il est possible de faire la même chose par GPO ? L'avantage c'est que la GPO s'applique dès lors que tu places un ordinateur dans une OU (ou dans ton domaine si tu as mis la GPO à la racine de ton domaine). Tu n'aurais donc pas à lancer le script régulièrement pour s'assurer de la bonne configuration de tes machines.

3. Il est facilement faisable de se passer des commandelettes de Quest. Je regarderais ça lorsque je ferais l'intégration de ton script dans la bibliothèque.

Merci pour ton script !

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

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

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