[PowerShell] Ajouter un module spécifique

Example avec le Module DataONTAP de NetAPP

Le module est dans le répertoire « D:\TOOLS\netapp\DataONTAP\DataONTAP »

On charge dans une variable le chemin des modules existant.

$mod = [environment]::GetenvironmentVariable("PSModulePath")

On ajoute l’emplacement du nouveau module:

$mod += ";D:\05-TOOLS\netapp\DataONTAP\"

On applique la modification,

[environment]::SetenvironmentVariable("PSModulePath",$mod)

Si le répertoire est conforme, la commande suivante affichera le module:

PS C:\> Get-Module -ListAvailable
ModuleType Name ExportedCommands
---------- ---- ----------------
Manifest ActiveDirectory {}
Manifest AppLocker {}
Manifest BitsTransfer {}
Manifest GroupPolicy {}
Manifest PSDiagnostics {}
Manifest TroubleshootingPack {}
Manifest WebAdministration {}
Manifest DataONTAP {}

On peut l’importer et avec accès au cmdlt:

 import-module DataONTAP

Attention, il faut que le répertoire du module contienne le même nom de répertoire en dessous:

Si le module spécifié dans la variable environment est « c:\dataontap » alors il doit y avoir un répertoire « dataontap » dessous contenant les fichiers, ce qui donne l’arborescance:

"c:\dataontap\dataontap"

[POSH] Lister les réplications dans les domaines AD

Lister l’état des réplications des DCs dans les domaines AD

$domainlist="domain1.corp","domain2.corp"
foreach ($domain in $domainlist)
{
$context=New-Object System.DirectoryServices.ActiveDirectory.DirectoryContext("Domain",$domain)
$dom=[System.DirectoryServices.ActiveDirectory.Domain]::GetDomain($context)
$NC = "DC={0}" -f ($dom.Name -replace "\.",",DC=")
foreach($dc in $dom.DomainControllers)
{
Write-Host "================"
Write-Host "$($DC.Name)"
Write-Host "================"
$UDTV = $dc.GetReplicationCursors($NC)
$GUID = @{n='DSA';e={if($_.SourceServer){$_.SourceServer}else{$_.SourceInvocationId}}}
$UDTV | Select-Object $GUID,UpToDatenessUsn,LastSuccessfulSyncTime | Sort-Object DSA -desc
}
}

Script d’installation de pilotes d’impressions

Installer par lot les pilotes d’impressions, utilisation de la bibliothèque de fonctions printUI.dll

Guide d’utilisation de PrintUI.dll – lien

Ligne de commande:

rundll32 printui.dll PrintUIEntry [options]
RUNDLL32.exe PRINTUI.DLL PrintUIEntry /Gw /h x64 /ia /f "\BROTHER\x64\Brother_HL-5380DN_series\BROHLA8A.INF" /m "Brother HL-5380DN series"

avec les paramètres suivants :

/Gw : mode silencieux
/h x64 : architecture 64bits
/ia : installation du pilote en utilisant un fichier inf
/f : nom du fichier inf
/m : nom du pilote (cf. fichier inf)

 

POSH:

à venir

VB:

Dim strFicLog,strPath,ficLog
Set oFso = CreateObject("Scripting.FileSystemObject")
Set oSh = CreateObject("WScript.Shell")
strPath = oFso.GetParentFolderName(WScript.ScriptFullName)
strFicLog = "C:\LOGS\installpilote.log"
Set ficLog = oFso.OpenTextFile( strFicLog, 8, true)

oSh.Run ("c:\WINDOWS\SYSTEM32\RUNDLL32.exe PRINTUI.DLL PrintUIEntry /Gw /h x64 /ia /f " & Chr(34) & strPath & "\pilote\Brother\HL-5380DN\BROHLA8A.INF" & Chr(34) & " /m " & Chr(34) & "Brother HL-5380DN series" & Chr(34)),0 ,True

If Err <> 0 Then
 ficLog.writeline Now & " ERREUR lors de l'installation du driver Brother HL-5380DN series - Numéro: " & Err & " - Description: " & Err.Description
 Err=0
Else
 ficLog.writeline Now & " Installation du pilote Brother HL-5380DN series réussi"
end If

' recopier autant de ligne qu'il y a de pilote
ficLog.close
WScript.Quit

 

Script de modification du BootOrder sur une VM Hyper-V

Pré requis:
Un fichier contenant les VMs à modifier: list-vm.txt

Visualiser le paramètre BootOrder pour toutes les VMs du fichier list-vm.txt :

$scvmmserver=Read-Host -Prompt "Nom du serveur SCVMM"
$cred=get-credential
$bootorder="IdeHardDrive","CD","Floppy","PxeBoot"
$list = gc list-vm.txt
Add-PSSnapin Microsoft.SystemCenter.VirtualMachineManager
Get-VMMServer –ComputerName $scvmmserver -credential $cred
$list | %{ (Get-VM -Name $_).BootOrder } | out-file -append vm_bootorder.txt

Modifier le paramètre BootOrder sur des VMs:

Par étape: Arrêt du serveur / Modification des paramètres / Redémarrage du serveur.

$list | %{ Stop-VM –VM $_ ; Set-VM -VM $_ -BootOrder $bootorder –Verbose ;Start-VM –VM $_ }

Créer un profil Powershell pour charger fonctions et snap-in

Le profil Powershell permet de charger les fonctions perso et Snap-in lors de l’exécution de la console.

Liens Technet: http://technet.microsoft.com/fr-fr/library/ff461033.aspx

Vérification de l’existence du profil:

Test-path $profile

Deux réponses sont possibles:

  • True, le profil existe, il suffit de l’éditer avec un éditeur de texte:
notepad $profile

et ajouter les Snap-in et fonctions nécessaires.

  • False, le profil n’existe pas, il faut le créer:
New-item –type file –force $profile

Le profil Powershell se crée dans le répertoire du profil actuel de l’utilisateur, pour l’éditer:

Notepad $profile

Pour charger le profil Powershell :

. $profile