Question
créer utilisateur avec droit d'acces...
- mary
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 16
- Remerciements reçus 0
il y a 16 ans 9 mois #4726
par mary
créer utilisateur avec droit d'acces... a été créé 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 !
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.
- mary
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 16
- Remerciements reçus 0
il y a 16 ans 9 mois #4728
par mary
Réponse de mary sur le sujet Re:créer utilisateur avec droit d'acces...
La pièce jointe tableau.txt est absente ou indisponible
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 16 ans 9 mois #4729
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:créer utilisateur avec droit d'acces...
Salut,
d'avoir le script d'origine ce serait pas mal
d'avoir le script d'origine ce serait pas mal
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- mary
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 16
- Remerciements reçus 0
il y a 16 ans 9 mois #4753
par mary
Réponse de mary sur le sujet Re:créer utilisateur avec droit d'acces...
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 16 ans 9 mois #4754
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:créer utilisateur avec droit d'acces...
Salut,
kevinmary écrit:
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.
kevinmary écrit:
A quoi servirait un forum sans réponsemerci de repondre.
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 16 ans 9 mois #4758
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:créer utilisateur avec droit d'acces...
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.
[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
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- créer utilisateur avec droit d'acces...