I have a problem in Variables would generate Usernames of a Table of CSV. CSV: Inhalt
Nummer;Ordner1;Ordner2;Ordner3;Benutzername;;;Beschreibung;Mitglied;Mitglied 2;Gruppenbeschreibung;Gruppenbeschreibung 2
1;Hamburg;Geschäftsleitung;HH-GL;Stefan Berti;;;Standortleiter;GG-H-Geschäftsleiter;;Geschäftsleitung Hamburg;
in array2 i would like to Words that the the loop have to search in array1.
and if he find the string of array2 for example 'leiter' or another word like "Sekretär" in $array1 in $MitgliedÄndern2, $Mitgliedlesen2 , $MitgliedÄndern3 it would be Write "" in $MitgliedÄndern2, $Mitgliedlesen2 , $MitgliedÄndern3.
I have a method that works with an easy array but that method doesn't work in that example.
I'm new in Powershell and have find lots of things out but that. I don't know.
$File=Import-Csv '.\Datenbank\Hamburg.csv' -Delimiter ";" -Encoding UTF8 | foreach-object {
$Mtl1 = ""
$Mtl2 = ""
$Mtl3 = ""
$Org1 = ""
$Org2 = ""
$Org3 = ""
$Nummer = $_.Nummer
$User = ""
$Ordner1 = $_.Ordner1
$Ordner2 = $_.Ordner2
$Ordner3 = $_.Ordner3
$Beschreibung = $_.Gruppenbeschreibung
$Beschreibung2 = $_.Gruppenbeschreibung2
if ($Ordner1 -ne '') {$Org1 = echo HH}
if ($Ordner2 -ne '') {$Org2 = $($_.'Ordner2')}
if ($Ordner3 -ne '') {$Org3 = $($_.'Ordner3')}
$Mtl1 = "$Org1"
$Mtl2 = "$Org1" "-" "$Org2"
$Mtl3 = "$Org1" "-" "$Org2" "-" "$Org3"
#Lesen
$Mitgliedlesen3 = ""
$Mitgliedlesen2 = ""
$MitgliedÄndern3 = ""
$MitgliedÄndern2 = ""
$Bes = $_.Beschreibung
if ($Org3 -ne '') {$Mitgliedlesen3 = $Mtl3 "-" "Lesen"}
if ($Org2 -ne '') {$Mitgliedlesen2 = $Mtl2 "-" "Lesen"}
$MitgliedÄndern2 = "Abteilungsleiter"
$Mitgliedlesen2 = "Bundesleiter"
$MitgliedÄndern3 = "Mitarbeiter"
$Mitgliedlesen3 = "Mitarbeiterleiter"
$array = $MitgliedÄndern2, $Mitgliedlesen2 , $MitgliedÄndern3
$array2 = "leiter" , ""
have tested follow things.
#$array3 = (Compare-Object $array2 $array).InputObject
#$Array4 = $Array | where {$_ -match "leiter"}
$result = $array | Where {$array -notContains "leiter"}
#$result = $array1 | ?{$_.Split('=')[0] -in ($array2 | %{$_.Split('=')[0]})}
#$result = compare $Array $Array2 -Property Key -IncludeEqual -ExcludeDifferent -,
Passthru $result
#$Array -like "*$array2*"
#$Array4
#$array3[0..1]
#ForEach ($array in $array2){
#$array -replace "^[$i0 .. $i]$array2",""
#}
.. }
thanks for help.
CodePudding user response:
I had some problems with the characters in your variables so I renamed them.
$MitgliedAndern2 = "Abteilungsleiter"
$Mitgliedlesen2 = "Bunde"
$MitgliedAndern3 = "Mitarbeiter"
$Mitgliedlesen3 = "Mitarbeiterleiter"
$array1 = @($MitgliedAndern2 , $Mitgliedlesen2 , $MitgliedAndern3 , $Mitgliedlesen3)
$array2 = "leiter" , "Sekretär"
"array1 before before script runs: $array1`r"
for([int] $i = 0; $i -le ($array1.Count -1); $i )
{
foreach($word in $array2)
{
if($array1[$i] -like "*$word*")
{
$array1[$i] = ""
}
}
}
"`rarray1 after script run: $array1`r"