janvier 28, 2021

Trucs et astuces PowerShell | Monde de l’ordinateur

Par admin2020

[ad_1]

Microsoft Windows PowerShell a été long à venir.

Windows n’a jamais apprécié les puissants environnements de script shell que ses rivaux Unix ont depuis longtemps inclus. Cela a changé maintenant avec l’inclusion de PowerShell, Le shell de ligne de commande et le langage de script de Microsoft, dans Windows Server 2008 et un passel d’autres produits serveur Microsoft.

Enfin, Windows propose une solution élégante, robuste et puissante qui peut accéder à presque toutes les parties du système d’exploitation. En effet, certaines consoles d’administration des produits serveurs Microsoft récents sont simplement des interfaces graphiques pour les commandes et scripts PowerShell groupés – telle est la puissance de PowerShell.

Si vous avez eu l’occasion de jouer un peu avec PowerShell, poursuivez votre lecture pour découvrir cinq conseils, astuces et idées pour mettre PowerShell au travail dans votre vie informatique quotidienne. (Si vous n’êtes pas encore familiarisé avec PowerShell, consultez ces ressources, puis retrouvez-nous ici pour la prochaine étape de votre formation sur les scripts.) Il existe des extraits de code, des exemples de cmdlets (prononcé « command let ») et des exemples de scripts à partir desquels vous pouvez créer vos propres solutions PowerShell.

Prêt, classe? Allons-y.

1. Créez vos propres applets de commande dans PowerShell

Au cœur de PowerShell se trouve l’applet de commande, un joli surnom qui fait référence au bit le plus simple de code .Net que vous pouvez exécuter et qui renvoie en fait un résultat, soit à partir de l’invite PowerShell, soit à partir d’un script. Par exemple, le Get-Process l’applet de commande répertorie tous les processus, tandis que Get-PSSnapin La cmdlet affiche tous les composants logiciels enfichables PowerShell actuels qui activent de nouvelles fonctionnalités.

Le vrai pouvoir vient de la création de vos propres applets de commande, un moyen pratique de sauvegarder tous les scripts que vous avez développés pour une utilisation ultérieure ou sur d’autres machines. Par exemple, si vous disposez d’un script qui interroge Active Directory, trouve des noms d’ordinateurs, puis enregistre leur niveau de Service Pack dans une table, vous souhaitez l’enregistrer et pouvoir l’exécuter ultérieurement, ou peut-être même à partir de un poste de travail central qui pourrait itérer cette commande sur une gamme d’ordinateurs.

Pour créer vos propres applets de commande, suivez ces trois étapes simples:

A: activer l’exécution des scripts

Par défaut, PowerShell ne permet pas aux scripts de s’exécuter pour des raisons de sécurité. Vous pouvez activer l’exécution de scripts personnels à l’aide de la set-executionpolicy RemoteSigned commande à l’invite PowerShell.

B: Créez vos scripts

Écrivez simplement vos commandes PowerShell dans un éditeur de texte, comme le Bloc-notes, et utilisez des sauts de ligne pour séparer les commandes. Si vous avez déjà écrit des fichiers batch DOS, c’est un vieux chapeau. Assurez-vous que vous enregistrez le nom de fichier avec une extension .ps1, qui indique à PowerShell que le fichier contient un script.

C: Exécutez les scripts à partir de l’invite de commande

Vous pouvez également créer un alias pour votre nouveau script. Si je voulais exécuter mon script de requête Active Directory comme mentionné ci-dessus et que le script se trouvait à H: Scripts AD-OSbuild.ps1, Je pourrais utiliser NewAlias ​​GetOSRevs H: Scripts AD-OSBuild.ps1 pour créer un alias qui me permet d’utiliser simplement le GetOSRevs à partir de ce point pour accéder au script. Cela économise du temps et de la fatigue des doigts.

2. Utilisez des boucles robustes dans PowerShell

Comme nous le savons tous, les boucles sont l’un des outils les plus fondamentaux, mais les plus puissants, du métier pour effectuer des actions répétitives. PowerShell peut prendre en charge les types de boucles suivants:

  • Tandis que boucles pour définir des critères au début d’une boucle.
  • Faire pendant boucles pour évaluer l’énoncé des critères à la fin d’un cycle.
  • Pour chaque boucles pour extraire des éléments d’un groupe de valeurs (dans le langage PowerShell, cela s’appelle une collection).
  • Pour boucles ou instructions For pour effectuer une action sur un sous-ensemble de valeurs.

Vous verrez ces boucles en action dans les extraits de code plus bas dans cet article.

3. Contrôlez Active Directory dans PowerShell

PowerShell peut interagir directement avec Active Directory, lire dans sa base de données, extraire des informations et les afficher pour vous. Par exemple, avec l’applet de commande suivante, vous pouvez afficher tous les utilisateurs dans Active Directory:

$Dom = 'LDAP://DC=scribnertechmediacorp;DC=local'

$Root = New-Object DirectoryServices.DirectoryEntry $Dom

$i=0

# Create a selector and start searching from the Root of AD

$selector = New-Object DirectoryServices.DirectorySearcher

$selector.SearchRoot = $root

$selector.set_pagesize(1000)

$adobj= $selector.findall() |`

where {$_.properties.objectcategory -match "CN=Person"}

foreach ($person in $adobj){

$prop=$person.properties

$i++

Write-host "First name: $($prop.givenname) " `

"Last Name: $($prop.sn) Display Name: $($prop.cn)"

}

"Total AD Users Found: $i"

Pour interroger une partie spécifique d’Active Directory – par exemple, un conteneur Utilisateurs spécifique – utilisez simplement un nouveau chemin LDAP comme valeur de la variable $ Dom. (Et avez-vous vu la boucle « foreach » là-dedans?)

L’interrogation, c’est bien, mais qu’en est-il de la création d’objets? PowerShell peut également le faire. Pour créer une unité organisationnelle appelée EastCoast dans le domaine ci-dessus, utilisez ce qui suit (remplacez « mercury », qui se trouve être mon contrôleur de domaine (DC), par le nom d’un DC de votre organisation):

$Dom = [ADSI]"LDAP://mercury:389/dc=scribnertechmediacorp;dc=local"

$newOU = $Dom.Create("organizationalUnit", "ou=EastCoast")

$newOU.SetInfo()

Vous voudrez probablement également créer de nouveaux utilisateurs dans cette nouvelle unité organisationnelle. Créons un compte pour Karen Smith:

$newOU = [ADSI]"LDAP://mercury:389/ou=eastcoast;dc=scribnertechmediacorp;dc=local"

$newUser = $newOU.Create("user", "cn=KSmith")

$newUser.Put("sAMAccountName", "KSmith")

$newUser.SetInfo()

PowerShell et ses liens avec l’intégration des services Active Directory (ADSI) fournissent un excellent environnement pour la création de scripts d’administration d’Active Directory.

4. Gérez votre réseau avec PowerShell

PowerShell est éminemment plus flexible dans la gestion des connexions réseau que les outils fournis pour la ligne de commande Windows. Par exemple, vous pouvez facilement récupérer l’adresse MAC de toutes les cartes réseau de votre machine actuelle avec le script suivant.

$strComputer = "."

$colItems = get-wmiobject -class "Win32_NetworkAdapterConfiguration" `

-computername $strComputer | Where{$_.IpEnabled -Match "True"}

foreach ($objItem in $colItems) {

write-host "Hardware Address:" $objItem.MACAddress

}

Vous pouvez remplacer le $ strComputer variable avec n’importe quel nom d’hôte accessible par la machine exécutant PowerShell, ce qui facilite l’obtention d’une liste d’adresses MAC à partir de votre réseau.

Vous pouvez également voir quelles adresses IP sont actives sur votre réseau, à l’aide d’une simple applet de commande Ping qui tourne sur toutes les adresses IP possibles sur votre sous-réseau local. Cela renverra un tableau avec les adresses IP et les codes d’état, 0 indiquant que l’adresse est en cours d’utilisation.

1..254| ForEach -Process {WmiObject -Class Win32_PingStatus -Filter ("Address="192.168.16." + $_ + """) -ComputerName .} | Select-Object -Property Address, StatusCode | ft

PowerShell est idéal pour interagir avec votre réseau, que ce soit via des rapports d’état ping ou via l’utilisation d’objets Windows Management Instrumentation (WMI) qui recherchent des informations sur le matériel réseau utilisé.

5. Utiliser les fonctionnalités orientées objet dans PowerShell

PowerShell est, à la base, un produit orienté objet. En d’autres termes, toutes les fonctionnalités, la syntaxe et les composants de PowerShell sont basés sur des objets programmatiques. Ainsi, les applets de commande révèlent leurs résultats sous forme d’objets, les variables sont en fait des objets et les différentes syntaxes qui composent PowerShell permettent de manipuler des objets.

Vous pouvez utiliser les propriétés d’un objet et appeler les méthodes qu’un objet contient. Bien que certains utilisateurs de PowerShell n’utilisent pas beaucoup directement cette orientation d’objet, PowerShell vous permet d’utiliser des objets .Net et WMI, à la fois sur la ligne de commande et dans les scripts.

L’utilisation d’objets .Net est assez simple, car une grande partie se produit par défaut. Vous pouvez soit laisser PowerShell déterminer les classes .Net par défaut – par exemple, la saisie de LS ou DIR dans un lecteur de système de fichiers produit un ensemble d’objets de fichier et de répertoire. PowerShell peut également accéder aux objets COM, ce qui est utile pour accéder aux applications héritées et à certaines parties de Windows.

Un exemple de ceci est l’utilisation de WMI pour examiner le pare-feu Vista. À l’aide de PowerShell, vous pouvez utiliser l’objet COM de pare-feu pour obtenir des détails sur la configuration du pare-feu Vista. Par exemple, les deux commandes suivantes récupèrent des informations sur le pare-feu à partir de l’objet COM et stockent les détails dans une variable:

$fw = new-object -com HNetCfg.FwMgr

$profile = $fw.LocalPolicy.CurrentProfile

Vous pouvez maintenant exécuter des commandes PowerShell sur la variable de profil pour déterminer la configuration de votre pare-feu. Par exemple, pour afficher les ports ouverts globalement:

$profile.GloballyOpenPorts | ft name, port

Cela peut ne rien renvoyer, car un pare-feu correctement configuré sur un poste de travail normal ne devrait pas avoir de ports ouverts. Mais une liste d’applications autorisées ne manquera pas de renvoyer des résultats, à moins que vous ne soyez enterré dans les profondeurs de la CIA.

Tapez ceci:

$profile.AuthorizedApplications | ? {$_.Enabled} | ft name

Et vous obtiendrez cela en retour (ce n’est pas une faute de frappe, au fait, c’est comme ça que Skype apparaît!).

Name

----

TurboTax Update Manager

TurboTax

SLVoice

Skype. Take a deep breath

iTunes

Bonjour

Microsoft Office Outlook

C’est tout pour la classe d’aujourd’hui. Pour les devoirs, je vous exhorte à profiter de la nature orientée objet de PowerShell. Avec l’expérience et l’expertise, vous pouvez toucher de nombreuses parties du système et transformer cet environnement de script en un environnement de programmation en direct.

Hassell, un fréquent Monde de l’ordinateur contributeur, se spécialise dans des sujets informatiques allant de la mise en réseau et de la sécurité à l’administration Windows.

Copyright © 2008 IDG Communications, Inc.

[ad_2]

Source link