Redémarrer un Service en PowerShell
Je vous propose dans ce tuto de redémarrer un service Windows local et distant en Powershell.

Je vous propose dans ce tuto de redémarrer un service Windows local et distant en Powershell.

Lorsque le chemin vers un répertoire source ou destination de votre script robocopy contient un accent, il est possible, selon la configuration de votre système Windows, que vous obteniez une erreur. En effet DOS n’arrivera pas à interpréter cet accent et ne va donc pas trouver le chemin du répertoire spécifié …
Je vous propose dans ce tutoriel d’exporter dans un fichier texte la liste de tous les pilotes d’impressions installés sur un serveur Windows.
En tant qu’admin, mes clients me demandent souvent de retrouver la date de la dernière connexion d’un ou plusieurs utilisateurs. Étant de nature un peu feignante (rien de plus normal me dire-vous) j’ai développé un petit HTA pour que mes clients se débrouillent comme des grands …
Dans le bon temps, nous avions accès à la propriété “Size” d’un objet ‘Dossier’ avec le FileSystemObject (le ‘FSO’) . Dans PowerShell (que j’aime bien quand même) la propriété n’est plus aussi simplement accessible. Je me suis fait une petite fonction toute simple pour la retrouver …
Ce script Powershell permet d’envoyer un mail très simplement via un serveur SMTP.
Comment installer et exécuter PowerShell sur un système Windows
Exécuter un script en PowerShell
$SmtpClient = new-object system.net.mail.smtpClient $SmtpServer = "localhost" $SmtpClient.host = $SmtpServer $From = "Lecteur de SysKB <lecteur@exemple.fr>" $To = webmaster@syskb.com $Title = "Script Powershell" $Body = "Le mail a été envoyé" $SmtpClient.Send($from,$to,$title,$Body)
Ce script Powershell permet d’afficher les caractéristiques de votre domaine Active Directory.
Comment installer et exécuter PowerShell sur un système Windows
Exécuter un script en PowerShell
Microsoft Scripting Guys
http://www.microsoft.com/technet/scriptcenter/scripts/msh/default.mspx?mfr=true
$strComputer = "."
$colItems = get-wmiobject -class "Win32_NTDomain" -namespace "root\CIMV2" `
-computername $strComputer
foreach ($objItem in $colItems) {
write-host "Caption: " $objItem.Caption
write-host "Client Site Name: " $objItem.ClientSiteName
write-host "Creation Class Name: " $objItem.CreationClassName
write-host "DC Site Name: " $objItem.DcSiteName
write-host "Description: " $objItem.Description
write-host "DNS Forest Name: " $objItem.DnsForestName
write-host "Domain Controller Address: " $objItem.DomainControllerAddress
write-host "Domain Controller Address Type: " $objItem.DomainControllerAddressType
write-host "Domain Controller Name: " $objItem.DomainControllerName
write-host "Domain GUID: " $objItem.DomainGuid
write-host "Domain Name: " $objItem.DomainName
write-host "DS Directory Service Flag: " $objItem.DSDirectoryServiceFlag
write-host "DS DNS Controller Flag: " $objItem.DSDnsControllerFlag
write-host "DS DNS Domain Flag: " $objItem.DSDnsDomainFlag
write-host "DS DNS Forest Flag: " $objItem.DSDnsForestFlag
write-host "DS Global Catalog Flag: " $objItem.DSGlobalCatalogFlag
write-host "DS Kerberos Distribution Center Flag: " $objItem.DSKerberosDistributionCenterFlag
write-host "DS Primary Domain Controller Flag: " $objItem.DSPrimaryDomainControllerFlag
write-host "DS Time Service Flag: " $objItem.DSTimeServiceFlag
write-host "DS Writable Flag: " $objItem.DSWritableFlag
write-host "Installation Date: " $objItem.InstallDate
write-host "Name: " $objItem.Name
write-host "Name Format: " $objItem.NameFormat
write-host "Primary Owner Contact: " $objItem.PrimaryOwnerContact
write-host "Primary Owner Name: " $objItem.PrimaryOwnerName
write-host "Roles: " $objItem.Roles
write-host "Status: " $objItem.Status
write-host
}
Dans mes scripts VBS, j’ai l’habitude d’initialiser une variable pour localiser mon script. Comme ça, si je dois le déplacer, je ne me préoccupe pas des divers chemins pour localiser mon fichier de log ou de source qui y est associé (à condition de les déplacer avec …). Pour info, la commande est la suivante :
strMyPath = Left(Wscript.ScriptFullName,InStrRev(Wscript.ScriptFullName, "\"))
Dans mes scripts PoSH, je cherchais une solution similaire mais “Wscript.ScriptFullName” n’existe pas et n’a (semble t-il) pas d’équivalent. La ruse consiste donc à utiliser la propriété “CurrentDirectory” de l’objet “Shell” …
$MyPath = ($WShell = New-Object -ComObject Wscript.Shell).CurrentDirectory
Et, pour un peu, c’est presque plus simple !
Vous êtes plongé dans la MAJ de votre inventaire et il vous manque le numéro de série d’un serveur Windows situé loin , très loin. Voici une petite ligne de commande en Powershell permettant de récupérer en WMI un numéro de série.
Après ma découverte de PrimalForms, j’ai eu envie d’en savoir un peu plus et donc de tester un peu le produit. J’en ai profité pour faire un tutoriel pour montrer un peu les possibilités de ce logiciel.
En me promenant sur la toile, j’ai découverts via nos confrères “powershell-scripting.com” qu’il existe un éditeur de Forms à la sauce “Visual Basic” édité par SAPIEN Technologies.
Pas mal fait, gratuit, il génère le code nécessaire pour obtenir un résultat plutôt bluffant.
Je suis un spécialiste AD pour un ‘grand compte’ et j’ai 10 comptes différents pour me connecter (3 forêts composées chacune de 3 domaines + un compte standard = 10 comptes) !
La gestion de mes mots de passe devenant un “chouillat” compliquée (toujours à cause de ma mémoire de poisson rouge) je me suis fait un petit script VBS qui me change mon mot de passe en un coup sur tous les domaines des fôrets AD.
On le sait, créer une tâche AT n’est pas toujours simple et les réfractaires à la ligne de commande en savent quelque chose. Je n’en paramètre pas tout les jours et pour moi (j’ai une mémoire de poisson rouge) c’est la syntaxe que j’oublie, surtout l’abréviation les jours de la semaine en anglais …
Lorsque l’on souhaite actualiser la stratégie de groupe appliquée à une machine il suffit d’exécuter la commande gpupdate /force depuis une invite de commande de la machine. La tâche n’est malheureusement pas aussi simple lorsqu’il s’agit d’actualiser les stratégies de groupe sur une ou plusieurs machines distantes.
Ce script permet de réinitialiser le mot de passe du compte administrateur local d’un ordinateur. Il suffit alors de le déployer à l’aide d’une GPO ou par un logonscript pour réinitialiser massivement les mots de passe de l’ensemble des comptes administrateurs locaux d’un domaine.
lire la suite…
Lorsqu’un ordinateur est intégré dans un domaine Active Directory, le groupe Domain Admins devient automatiquement membre du groupe Administrateurs local de l’ordinateur. Ainsi les administrateurs du domaine ont un accès complet à tous ces membres.
Powershell est un langage de script orienté objet développé par Microsoft. Il s’appuie sur le framework Microsoft .NET et est désormais directement intégré aux nouveaux systèmes d’exploitation Windows 7 et Windows Server 2008. Powershell est compatible avec toutes les versions de Windows supportant .NET 2.0.
Cet article est en quelque sorte une table de matières rassemblant tous les tutos de SysKB consacrés au sujet. Il doit permettre aux néophytes de rapidement pouvoir utiliser Powershell et aux plus expérimentés de découvrir ou redécouvrir des scripts essentiels dans l’accomplissement de leur travail quotidien.
J’ai eu besoin récemment de créer 1 tâche planifiée sur 100 serveurs Windows. J’avais alors 2 solutions : Me connecter sur chaque serveur en terminal serveur et répéter 100 fois la même opération ou trouver une solution pour créer à distance la tâche planifiée sur les 100 serveurs à la fois. Une petite recherche et la solution était toute trouvée …
Je vous propose une petite macro pour supprimer les doublons dans un classeur Excel. Une petite variante de cette macro permettra au contraire de ne conserver QUE les doublons.
Lorsqu’il s’agit d’exécuter un programme ou un script sur un serveur distant on peut toujours le faire en se connectant dessus en Terminal Server, Dameware Remote Control, PC Anywhere ou autre outil de prise de main à distance. Cette solution convient parfaitement pour des actions ponctuelle mais s’avère beaucoup plus contraignante lorsque l’on doit exécuter le même programme sur plusieurs serveurs ! Heureusement il existe PsExec …
Ce script vous permettra de compter très simplement le nombre de lignes contenu dans un fichier.
lire la suite…
Je vous propose un script en VBS permettant de copier un fichier et de le renommer à la volée en lui ajoutant la date et l’heure de l’éxécution du script. Très pratique pour archiver automatiquement des fichiers. Le répertoire destination bien entendu peut être différent.
Je vous propose de voir comment arrêter ou démarrer une ou plusieurs machines virtuelles en ligne de commande depuis un serveur VMware Server. C’est très simple mais surtout très pratique puisqu’il suffit de créer 2 fichiers .BAT afin de lancer en 1 seul clic l’arrêt ou le démarrage des VMs !
Il est temps de faire un peu de ménage dans votre Active Directory. Depuis de nombreuses années les comptes utilisateurs et ordinateurs s’accumulent au gré des arrivées et des départs des salariés de votre entreprise et avouez que supprimer des comptes obsolètes s’avère être un vrai casse tête.
Je vous propose, à travers quelques exemples, de contrôler simplement le démarrage d’une machine virtuelle sur Virtual Server 2005 grâce à quelques scripts en VBS.
Ces scripts vont seront très utiles pour industrialiser des processus de sauvegardes de vos machines virtuelles. lire la suite…