Question compiler en executable script powershell + modules

Plus d'informations
il y a 10 ans 11 mois #19416 par Kevin
J'ai déja 9/10eme du code fait :)
J'ai des réajustement a faire et intégrer quelques recherches au niveau de l'AD ^^ mais rien de plus :)

Pour commencer j'ai réussi à obtenir les attributs d'un utilisateur par rapport à son login Windows que je récupère via une commande powershell:

[code:1]$IP = ((Get-WmiObject -Class Win32_NetworkAdapterConfiguration)|?{$_.Ipaddress}).IPAddress | select -First 1 # Récupération de l'adresse IP du poste
$Debut_IP = $IP.Split(\".\"«»)[0,1,2] -join \".\" # Récupère les 7 premiers caractères de l'adresse IP

$computer_name = (Get-WmiObject -Computer $IP -Class Win32_ComputerSystem).Name # Récupère le nom du poste
$loginfo = Get-WmiObject -Computer $IP -Class Win32_ComputerSystem
$login = $loginfo.UserName.Split(\"\\"«») | Select-Object -Last 1 # Récupère l'identifiant windows de l'utilisateur
$domaine = $loginfo.UserName.Split(\"\\"«») | Select-Object -First 1 # Récupère le domaine de l'utilisateur

$SID = ((New-Object System.Security.Principal.NTAccount($domaine, $login)).Translate([System.Security.Principal.SecurityIdentifier])).Value # Récupère le SID de l'utilisateur


$objDomain = [ADSI]''
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher($objDomain)
$objSearcher.Filter = '(objectCategory=person)'
$USER = $objSearcher.FindAll() | Select-object -ExpandProperty Path | Where-Object {$_ -match $login}
$act_user = ([ADSI]\"$USER\"«») | Select-Object -Property *[/code:1]

Et à partir de là, je pense pouvoir obtenir un peu ce que je veux de l'utilisateur :)

Laurent Dardenne écrit:

J'ai un module de base (en prod), si tu veux l'adapter.


Je veux bien voir s'il te plait :) que je regarde un peu comment tout ça ce construit et ce mets en place ^^

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

Plus d'informations
il y a 10 ans 11 mois #19417 par Laurent Dardenne
Regarde la fonction Get-ADSIObject, rien de bien compliqué.



Contenu du script encapsulé dans un .exe :
[code:1]
#Si besoin loggue dans le répertoire %Temp% du profile exécutant le script/.exe
Start-Transcript \"$Env:Temp\MyScript.Log\" -ea SilentlyContinue

#Ajoute le répertoire des modules de la solution
#On modifie uniquement la session PS en cours et pas la variable %PSModulePath% globale.
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
$env:«»PSModulepath +=\";$scriptPath\modules\"

#Si on utilise un profile.
#on vide la collection d'erreurs avant l'exécution du traitement
$Error.Clear()

#Optionel : gestionnaire d'erreur global
# Invoke-CommandWithUnhandledExceptions 'InvokeTraitement' \"$scriptPath\Logs\" $sbTraitement
#ou
# ICI débute le traitement sans gestionnaire d'erreur
#...
[/code:1]
Ensuite on crée une archive, à partir du répertoire contenant la solution complète (script+modules+autres fichiers).

Puis, via la fonction ConvertTo-Sfx du module PsIonic on crée une archive autoextractible :
[code:1]
$ZipFileName=\"C:\Dev\MyScript\MySetup.zip\"

#contruit l'archive à partir de fichiers issus de répertoires différents
$T=@(\"C:\Temp\Modules\*\"; (Dir C:\Temp\*.PS1),(Get-Item 'C:\Temp\Setup'))
$T|Compress-ZipFile -OutputName $ZipFileName

$ReadOptions = New-Object Ionic.Zip.ReadOptions -Property @{
StatusMessageWriter = [System.Console]::Out
}
$Save=@{
ExeOnUnpack=\"MySscript.exe\"; #ligne de cmd exécutée une fois la décompression effectuée
Description=\"Setup for the xxx\";
NameOfProduct=\"MyProjectName\";
VersionOfProduct=\"1.0.0\";
Copyright='Copyleft.'
}
$SaveOptions=New-ZipSfxOptions @Save

#construit, à partir d'un .zip, une archive autoextractible
ConvertTo-Sfx $ZipFileName -Save $SaveOptions -Read $ReadOptions
[/code:1]

La pièce jointe AD.zip est absente ou indisponible

<br><br>Message édité par: Laurent Dardenne, à: 3/04/15 14:36

Tutoriels PowerShell
Pièces jointes :

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

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