Question créer utilisateur avec droit d'acces...

Plus d'informations
il y a 16 ans 9 mois #4726 par mary
Bonjour a tous ! voila j'ai créer un script pour crée des utilisateurs en local a partir d'un fichier .txt

Maintenant je dois modifié mon script pour lire mes utilisateurs dans un fichier .xlsx ( office 2007 ) suivant ce format :


Pouvaient-vous me guider sur le commencement ... Je vous remercie !

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

Plus d'informations
il y a 16 ans 9 mois #4728 par mary

La pièce jointe tableau.txt est absente ou indisponible

Pièces jointes :

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

Plus d'informations
il y a 16 ans 9 mois #4729 par Laurent Dardenne
Salut,
d'avoir le script d'origine ce serait pas mal ;)

Tutoriels PowerShell

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

Plus d'informations
il y a 16 ans 9 mois #4753 par mary
merci de repondre . voici mon script:

La pièce jointe scriptok.ps1 est absente ou indisponible

Pièces jointes :

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

Plus d'informations
il y a 16 ans 9 mois #4754 par Laurent Dardenne
Salut,
kevinmary écrit:

merci de repondre.

A quoi servirait un forum sans réponse :P

Comme ton fichier texte contient un nom d'utilisateur par ligne, et c'est la seule info qui t'intéresse, la lecture du fichier XLS peut se faire à l'aide d'ADO. Cela permet de voir un fichier XL comme une table d'une base de données, on peut donc y effectuer des requêtes pour récupérer un ou + champs.
Des explications , une solution .
Je n'ai pas testé le script, vu le niveau de Oisin Grehan on peut lui faire confiance, mais j'ai déjà utilisé cette approche dans des applications codée en Delphi.

Tu as juste à recopier le script dans un fichier nommé Import-Excel.ps1, ensuite reste à sélectionner le champ qui t'intéresse.
A vérifier tout de même avec XL 2007 car je ne l'ai pas sous la main.

Tutoriels PowerShell

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

Plus d'informations
il y a 16 ans 9 mois #4758 par Laurent Dardenne
Bon après qq tests le script contient 2 bugs:
[code:1][void]$reader.GetValues($values)[/code:1]
et on doit fermer la connexion en fin de script
[code:1] $Connection.Close()[/code:1]
Ensuite le fichier XL peut contenir des lignes vide, dans ce cas ADO les renvoit, du coup j'ai ajouté un filtre.Il y a surement + élégant mais ça fonctionne:
[code:1]
function Import-Excel([string] $filename = $(throw \"need a filename, e.g. c:\temp\test.xls\"«»),
[string] $worksheet,
[switch] $RemoveEmptyRow)
{
Filter Remove-EmptyLine
{ #test si tous ls champs d'un ligne sont à null
if ($RemoveEmptyRow)
{
$Emission=0
foreach ($Field in $Fields)
{
if ($_.\"$Field\".GetType() -eq [System.DBNull])
{$Emission++}
}
if ($Emission -ne $Fields.Count)
{$_} #On réémet l'objet
}
else {$_} #On réémet l'objet
}
if (-not (Test-Path $filename))
{
throw \"Path '$filename' does not exist.\"
exit
}

if (-not $worksheet)
{
Write-Warning \"Defaulting to Sheet1 in workbook.\"
$worksheet = \"Sheet1\"
}

# resolve relative paths
$filename = Resolve-Path $filename

# assume header row (HDR=YES)
$connectionString = \"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=${filename};Extended Properties=`\"Excel 8.0;HDR=YES`\"\";

$connection = New-Object data.OleDb.OleDbConnection $connectionString;
$connection.Open();
$command = New-Object data.OleDb.OleDbCommand \"select * from [$worksheet`$]\"

$command.connection = $connection
$reader = $command.ExecuteReader(\"CloseConnection\"«»)

if ($reader.HasRows)
{
# cache field names
$fields = @()
$count = $reader.FieldCount


for ($i = 0; $i -lt $count; $i++) {
$fields += $reader.GetName($i)
}


while ($reader.read()) {

trap [exception] {
Write-Warning \"Error building row.\"
break;
}

# needs to match field count
$values = New-Object object[] $count

# cache row values
[void]$reader.GetValues($values)

$row = New-Object psobject

$fields | foreach-object -begin {$i = 0} -process {
$row | Add-Member -MemberType noteproperty -Name $fields[$i] -Value $values[$i] ; $i++
}

# emit row
$row|Remove-EmptyLine
}#While
}#If
$Connection.Close()
}
$File=\"C:\temptest.xls\"
$Datas=Import-Excel $File \"Feuil1\" -RemoveEmptyRow
$Datas.Count
[/code:1]
De plus, on voit que la valeur affectée par défaut au paramètre $worksheet est le nom US, petit pb de localisation...
Enfin certaines valeurs peuvent être interprétées avant leur lecture. Par exemple pour une cellule (format standard) contenant \"28/132\" on reçoit DBnull...
Bref, un jeux de test conséquent est à envisager sérieusement.
Sinon reste l'automation d'Excel ou la conversion du fichier XL en XML.

Tutoriels PowerShell

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

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