Overblog Tous les blogs Top blogs Technologie & Science Tous les blogs Technologie & Science
Editer l'article Suivre ce blog Administration + Créer mon blog
MENU

ScriptRepFile

Publié le par damcuvelier

 

fichier exemple csv:

ID;UserName;Prenom;Nom
1;User1;Prenom1;Nom1
2;User2;Prenom2;Nom2
3;User3;Prenom3;Nom3
4;User4;Prenom4;Nom4
5;User5;Prenom5;Nom5
6;User6;Prenom6;Nom6
7;User7;Prenom7;Nom7
8;User8;Prenom8;Nom8
9;User9;Prenom9;Nom9
 

 

fichier exemple xml:

<?xml version="1.0"?>
<INFO>
   <ID val="1">
      <UserName>User1</UserName>
      <Prenom>Prenom1</Prenom>
      <Nom>Nom1</Nom>
   </ID>
   <ID val="2">
      <UserName>User2</UserName>
      <Prenom>Prenom2</Prenom>
      <Nom>Nom2</Nom>
   </ID>
   <ID val="3">
      <UserName>User3</UserName>
      <Prenom>Prenom3</Prenom>
      <Nom>Nom3</Nom>
   </ID>
   <ID val="4">
      <UserName>User4</UserName>
      <Prenom>Prenom4</Prenom>
      <Nom>Nom4</Nom>
   </ID>
   <ID val="5">
      <UserName>User5</UserName>
      <Prenom>Prenom5</Prenom>
      <Nom>Nom5</Nom>
   </ID>
   <ID val="6">
      <UserName>User6</UserName>
      <Prenom>Prenom6</Prenom>
      <Nom>Nom6</Nom>
   </ID>
   <ID val="7">
      <UserName>User7</UserName>
      <Prenom>Prenom7</Prenom>
      <Nom>Nom7</Nom>
   </ID>
   <ID val="8">
      <UserName>User8</UserName>
      <Prenom>Prenom8</Prenom>
      <Nom>Nom8</Nom>
   </ID>
   <ID val="9">
      <UserName>User9</UserName>
      <Prenom>Prenom9</Prenom>
      <Nom>Nom9</Nom>
   </ID>
</INFO>
 

 

fichier exemple json:


  "INFOS": [
    {
      "ID": "1",
      "UserName": "User1",
      "Prenom": "Prenom1",
      "Nom": "Nom1"
    },
    {
      "ID": "2",
      "UserName": "User2",
      "Prenom": "Prenom2",
      "Nom": "Nom2"
    },
    {
      "ID": "3",
      "UserName": "User3",
      "Prenom": "Prenom3",
      "Nom": "Nom3"
    },
    {
      "ID": "4",
      "UserName": "User4",
      "Prenom": "Prenom4",
      "Nom": "Nom4"
    },
    {
      "ID": "5",
      "UserName": "User5",
      "Prenom": "Prenom5",
      "Nom": "Nom5"
    },
    {
      "ID": "6",
      "UserName": "User6",
      "Prenom": "Prenom6",
      "Nom": "Nom6"
    },
    {
      "ID": "7",
      "UserName": "User7",
      "Prenom": "Prenom7",
      "Nom": "Nom7"
    },
    {
      "ID": "8",
      "UserName": "User8",
      "Prenom": "Prenom8",
      "Nom": "Nom8"
    },
    {
      "ID": "9",
      "UserName": "User9",
      "Prenom": "Prenom9",
      "Nom": "Nom9"
    }
  ]
}
 

 

Script récup info à partir du module RepFiles:
# usage: .\ScriptRepFile.ps1 -valuetofind "Nom4"
# usage: .\ScriptRepFile.ps1 -find "UserName:User5" -all

Param($FldrPath,$find,$UserName,$Prenom,$Nom,$valuetofind,[switch]$all)
$Global:erroractionpreference = 'silentlycontinue'
$here = $PSScriptRoot; if(!$here){$here = (Get-Location).path}

import-module "$here\RepFiles.psm1" -force
$scriptParameters = $MyInvocation.MyCommand.Parameters
foreach ($paramName in $scriptParameters.Keys) {$Heads += "$paramName;"}
$Heads = $Heads.replace('all','').replace('valuetofind','').replace('find','').replace(';;',';').trimend(';')
$FindHeads = $Heads.replace('FldrPath','').replace(';;',';').trimend(';').trimstart(';')
$SrcResFile = RepFiles -FldrPath $FldrPath -Heads $Heads
$SrcResFileExtension = $SrcResFile.split('.')[1]


if($SrcResFileExtension -match 'json'){
    $results = Get-Content $SrcResFile | ConvertFrom-Json
    if($all){
        $findnode = $find.split(':')[0]
        $findvalue = $find.split(':')[1]
        $filteredResults = $results.INFOS | Where-Object { $_.$findnode -eq $findvalue }
        $SrcResults = $filteredResults -join ';'
        $SrcResults.split(';') | foreach{$infovar = $_.split('=')[0];$infoval = $_.split('=')[1];[string]$SrcResultats += "$infovar = $infoval;"}
        $SrcResultat = $SrcResultats.replace('=;','').replace('@','').replace('{','').replace('}','').replace(' = ','=').trimend(';').replace(' ','')
    } else {
        foreach($FindHead in $FindHeads.split(';')){
        $varFindHead = $($FindHead)
        $valFindHead = Get-Variable -Name $FindHead -ValueOnly -erroraction 'silentlycontinue'
            if($valFindHead){$SrcResultat = ($results.INFOS | Where-Object { $_.$varFindHead -eq $valFindHead }).$find}
        }
    }
}

if($SrcResFileExtension -match 'xml'){
$erroractionpreference = 'silentlycontinue'
    [xml]$GCXML = Get-Content $SrcResFile
    [string]$1stNodeName = $GCXML.DocumentElement.Name
    $ImpXML = $GCXML.SelectNodes("//*")
    [string]$2ndNodeName = ($ImpXML.Name -join ',').replace("$1stNodeName,",'').split(',')[0]
    if($valuetofind){
        foreach($FindHead in $FindHeads.split(';')){$result = $GCXML.$1stNodeName.$2ndNodeName | Where-Object { $_.$FindHead -eq $valuetofind }}
        foreach($FindHead in $FindHeads.split(';')){
                $var = $FindHead
                $val = $result.$FindHead
                $goodrefs += "$var=$val;"
        }
    $SrcResultat = $goodrefs.replace(';;',';').trimend(';').replace(' ','')
    } else {
        if($all){
            $findnode = $find.Split(':')[0]
            $findvalue = $find.Split(':')[1]
            $filteredResults = $GCXML.$1stNodeName.$2ndNodeName | Where-Object { $_.$findnode -eq $findvalue }

            foreach($FindHead in $FindHeads.split(';')){foreach($filteredResult in $filteredResults){
            $var = $FindHead
            $val = $filteredResult.$FindHead
            $SrcResultat += "$var=$val;"
            }}
        if($SrcResultat -match ';'){$SrcResultat = $SrcResultat.replace('=;','').trimend(';')}
        } else {
            foreach($FindHead in $FindHeads.split(';')){
            $varFindHead = $($FindHead)
            $valFindHead = Get-Variable -Name $FindHead -ValueOnly -erroraction 'silentlycontinue'
                if($valFindHead){$SrcResultat = ($GCXML.$1stNodeName.$2ndNodeName | Where-Object { $_.$varFindHead -eq $valFindHead }).$find}
            }
        }
    }
}

if($SrcResFileExtension -match 'csv'){
    $results = Import-Csv -Delimiter ';' -Path $SrcResFile
    if($valuetofind){
    $erroractionpreference = 'silentlycontinue'
        foreach($result in $results){    
        foreach($FindHead in $FindHeads.split(';')){if($result.$FindHead -eq $valuetofind){[string]$goodrefs = "$result;"; break}}
        $goodrefs = $goodrefs.replace("`r`n",'')
        }
    $SrcResultat = $goodrefs.replace('=;','').replace('@','').replace('{','').replace('}','').replace(' = ','=').trimend(';').replace(' ','')
    } else {
        if($all){
        $findnode = $find.Split(':')[0]
        $findvalue = $find.Split(':')[1]
        foreach($result in $results){
            if($result.$findnode -eq $findvalue){
                foreach($FindHead in $FindHeads.split(';')){$var = $FindHead; $val = $result.$FindHead; $SrcResultat += "$var=$val;"}
            }
        }
        if($SrcResultat -match '=;'){$SrcResultat = $SrcResultat.replace('=;','')}
        if($SrcResultat -match ';;'){$SrcResultat = $SrcResultat.replace(';;','')}
        $SrcResultat = $SrcResultat.trimend(';')    
        } else {
            foreach($FindHead in $FindHeads.split(';')){
            $varFindHead = $($FindHead)
            $valFindHead = Get-Variable -Name $FindHead -ValueOnly -erroraction 'silentlycontinue'
                if($valFindHead){$SrcResultat = $results | foreach{if($_.$varFindHead -eq $valFindHead){$_.$find}}}    
            }
        }
    }
}
if($SrcResFileExtension -match 'xls'){$results = (Import-Excel $FileXls)}


if($SrcResultat -match ';'){$SrcResultat = $SrcResultat.trimend(';')}
return $SrcResultat

 

Commenter cet article