Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Powershell String selektieren....

Frage Entwicklung Batch & Shell

Mitglied: mguenth83

mguenth83 (Level 1) - Jetzt verbinden

14.01.2014 um 18:32 Uhr, 1778 Aufrufe, 4 Kommentare, 1 Danke

Hi,

Ich wollte Euch mal fragen wie Ihr das machen würdet...ich habe eine Liste von AD Usern mit Telefonnummer und will dort die letzten 4 Zeichen auslesen. Blöd ist nur das diese in einem sehr komischen Format sind..

Hier mal ein Beispiel:

Name: Telefonnummer
testuser +49 8558 678 1983

Ich brauche jetzt quasi die letzten Zahlen nach dem dritten Leezeichen.

Leider kann ich nicht die letzten vier Ziffern nehmen weil manche User auch ne Durchwahl mit 3,2 bzw. 1 Ziffer haben.
Das heißt ich müsste Powershell sagen das er die letzten Zahlen hinter dem dritten Leerzeichen nehmen soll.

Hoffe jemand kann helfen...

Gruß
Matze
Mitglied: colinardo
14.01.2014, aktualisiert um 23:22 Uhr
Hello again Matze,
machst du ganz einfach so;
01.
$tel = "+49 8558 678 1983" 
02.
$tel.Split(" ")[3].Substring(0,4)
oder für Advanced User mit Regular Expressions und noch mehr Möglichkeiten bei speziellen Fällen:
01.
# Hilfsfunktion für RegEx GroupMatching (braucht dich erst mal nicht zu interessieren) 
02.
Function Get-Matches($Pattern,$groupNumber = 0) {begin { $regex = New-Object Regex($pattern) };process { foreach ($match in ($regex.Matches($_))) { ([Object[]]$match.Groups)[$groupNumber].Value }}} 
03.
 
04.
# Beispiel Telefonnummer 
05.
$tel = "+49 8558 678 1983" 
06.
 
07.
#Extrahiere den Part mit der obigen Funktion und einem passenden RegEx Pattern 
08.
$tel | Get-Matches "\+?[\d]+ \d+ \d+ (\d{4})" 1
Grüße Uwe
Bitte warten ..
Mitglied: mguenth83
14.01.2014, aktualisiert um 19:25 Uhr
Hi Uwe,
ich kann nicht mehr das Powershell mach mich fertig...
weiss wie immer net weiter...will wieder formatieren

01.
$CFG = Get-Content -Path '\\contoso\JustDial.cfg' 
02.
$Users = get-aduser -Filter * -properties * | where {$_.telephonenumber -ne $NULL} | Select-Object SamAccountname,telephonenumber 
03.
foreach ($tel in $Users.telephonenumber){ 
04.
$tel.Split(" ")[3] 
05.
}
Ich will einfach nur ne Tabelle wo ich Usernamen und die Durchwahl (letzten nummern) drin habe.

Bis jetzt habe ich die kompletten Nummern und ne foreach schleife die mir die durchwahlen gibt.

Das Projekt ist eine XML Datei zu verändern mit der richtigen Durchwahl und eine Datei in %Username%.JustDail.cfg zu ändern.

Gruß
Matthias
Bitte warten ..
Mitglied: colinardo
14.01.2014, aktualisiert 15.01.2014
01.
$Users = get-aduser -Filter * -properties * | where {$_.telephonenumber -ne $NULL} | Select-Object SamAccountname,@{Name="Durchwahl";expression{$_.telephonenumber.Split(" ")[3].Substring(0,4)}}
Wenn du dich jetzt wieder fragst "Was is das nun schon wieder?" sei dir diese Seite dazu empfohlen:
http://technet.microsoft.com/en-us/library/ff730948.aspx

Um die Sachen in ein vorhandenes XML zu speichern brauche ich aber mehr Infos zum Aufbau der XML-Datei.
Poste diese mal hier, dann melde ich mich dazu wieder

Grüße Uwe

p.s. lass uns bei Zeiten mal ein Teamviewer Meeting halten dann zeige ich dir ein paar Tipps und Tricks dazu...
Bitte warten ..
Mitglied: mguenth83
16.01.2014 um 11:19 Uhr
Hi,
habe jetzt so gelöst...wahrscheinlich total Naphaft aber es geht...


01.
$CFG = Get-Content -Path '\\contoso\JustDail\JustDial.cfg' 
02.
$Users = get-aduser -Filter * -properties * | where {$_.telephonenumber -ne $NULL} | Select-Object SamAccountname,telephonenumber 
03.
$XML = Get-Content "\\contoso\XML\JustDial.cfg" 
04.
foreach ($user in $Users){ 
05.
$Durchwahl = ($user.telephonenumber).Split(" ")[3] 
06.
$Nick = $User.SamAccountname 
07.
$Path = "\\contoso\XML\Output\$Nick-JustDial.cfg" 
08.
 
09.
if (Test-Path -Path $Path){ 
10.
Write-Host "Benutzer ""$Nick"" wurde schon eine Konfig erstellt" 
11.
12.
if (($Durchwahl -ne "0") -or ($Durchwahl -ne $NULL)){ 
13.
$XML.Replace("XXXX","$Durchwahl") | Out-File "$Path" 
14.
 
15.
$Test0= Get-Content -Path $Path 
16.
 
17.
if (Select-String -Path $Path -SimpleMatch '<Value></Value>'){ 
18.
Remove-Item $Path -Force 
19.
20.
21.
}
Bitte warten ..
Neuester Wissensbeitrag
Off Topic

"Ich habe nichts zu verbergen"

(2)

Erfahrungsbericht von FA-jka zum Thema Off Topic ...

Ähnliche Inhalte
Batch & Shell
gelöst PowerShell String zerlegen in Array, DataTable, Hashtable speichern (7)

Frage von derhoeppi zum Thema Batch & Shell ...

Windows Update
Powershell WSUS Automation Skript - PoshWSUS

Frage von sigisigi zum Thema Windows Update ...

VB for Applications
VBA Grenzwerte in String prüfen Regex ??? Excel2010 (1)

Frage von Chillministrator zum Thema VB for Applications ...

Batch & Shell
gelöst Powershell - Get-ADForest (6)

Frage von emeriks zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Linux Netzwerk
gelöst DHCP vergibt keine Adressen (32)

Frage von Maik82 zum Thema Linux Netzwerk ...

Apache Server
gelöst Lets Encrypt SSL mit Apache2 (20)

Frage von banane31 zum Thema Apache Server ...

CPU, RAM, Mainboards
Kaufberatung für mind. 8 verschiedene HighEnd-Mainboards (20)

Frage von yperiu zum Thema CPU, RAM, Mainboards ...

Mac OS X
Mac kann nicht im LAN pingen alle anderen schon (14)

Frage von smartino zum Thema Mac OS X ...