Quantcast
Channel: Windows PowerShell Forum
Viewing all 2314 articles
Browse latest View live

Server2012 Feld „OtherPager“ per Script ändern

$
0
0

Hallo,

wie kann ich auf der AD das Feld „Otherpager“ per Script ändern? Über DSQuery/DSMode habe ich keine Möglichkeit gefunden und unter Powershell kann ich die Daten nur aufrufen mit:

Get-ADUser -Identity VFamName -Properties * | fl otherpager

Jedoch wie kann ich diesen Wert ändern?

Hat vielleicht jemand den Masterbefehl für mich (Set-ADUser……..) ?

Danke


Zeichenkettenoperationen

$
0
0

Hallo liebe PS-Community,

ich stehe derzeit vor einer kleinen Herausforderung und weiß leider noch nicht wie ich da genau vorgehen kann. Es gibt ein Pfad in welchem mehrere Dateien abgelegt sind. Diese hole ich mir mit:

$FileObj = Get-ChildItem -Path "$InputPath"

und bearbeite diese anschließend mit:

$FileObj | ForEach-Object{

$_.Name

}

Nun sind die Dateinamen immer unterschiedlich und mitten im Dateinamen steht eine Nummer wie "RD839293" oder "32378283". Die Zahlen sind natürlich immer unterschiedlich.

Nun möchte ich gucken, ob der Dateiname eine 8 stellige Zahl enthält. Wenn dies = True ist, soll die 8 stellige Zahl den kompletten Dateinamen ersetzen.

Ich hoffe das Ihr mir helfen könnt.

Liebe Grüße

-Lars

Windows Server 2012 R2 Sprache und Region PowerShell

$
0
0

Hallo zusammen,

ich möchte gerne die Sprache, die Region, die Tastatur und den Aufenthaltsort im Windows mittels PowerShell anpassen.

Mit den folgenden Befehlen kann ich die Umstellung auf Deutsch einrichten:

Set-Culture de-DE
Set-WinSystemLocale de-DE
Set-WinHomeLocation -GeoId 494
Set-WinUserLanguageList de-DE -force
Set-WinSystemLocale de-DE
Set-WinUILanguageOverride de-DE
Set-WinDefaultInputMethodOverride "0407:00000407"

Wenn ich diese PowerShell Befehl eingeben, bekomme ich für den aktuellen User nach einem Neustart die kompletten Einstellungen auf die Deutsche Sprache, Region usw.

Sobald ich aber einen neuen User benutze, ist alles wieder auf englisch. Grund dafür ist ein Hacken, den ich derzeit noch nicht mit PowerShell setzen kann, weil ich den Befehlt nicht kenne. Ich hoffe ich bekomme hier Hilfe.

Es geht um den Hacken im folgenden Menu per GUI:

Systemsteuerung / Zeit, Sprache und Region - Öffnen Region und Sprache

Karteireiter Verwaltung

Einstellungen kopieren -Button- und dann geht es um den Hacken "Willkommensseite und Systemkonten"

Diesen Hacken muss ich nach meinen Skripten setzten und schon hat jeder User die deutsche Einstellung.

Leider weiß ich nicht wie. Kann mir jemand helfen.

Per GPO ist das leider nicht möglich, weil wir einige Systeme auf DE und EN haben. Ja es ist dumm, eigentlich sollte alles auf EN laufen aber nun ja.. die Politik :)

Gruß

Sebastian

Verfügbarkeit einer Website in Speziefischen Browsern prüfen.

$
0
0

Umgebung:

Windows 10, Internet Explorer und Edge Browser

Beim Aufruf der Website "google . ch" kommt ab und zu eine Meldung, dass der Proxy gerne Benutzername/Passwort wissen möchte. Meistens aber wird die Website geöffnet.

 

Mit einem Script soll diese Website mit beiden Browsern periodisch aufgerufen werden.

In einem Logfile sollen Zeitpunkt, Browser-Typ und das Resultat des Aufrufs aufgelistet werden.

Bonus: es soll eine Mail an den Admin generiert werden wenn ein Fehler aufgetreten ist

Dateien in TXT ausgeben

$
0
0
https://www.gutefrage.net/frage/wie-bekomme-ich-es-hin-jeden-netzwerkadapter-in-eine-seperaten-zeile-auszugeben-siehe-details?foundIn=my_stream

Ad User Umbenennen, User Shell Folders

$
0
0

Hallo,

wir müssen unsere User im AD umbenennen, hierfür habe ich ein Powershell Script, dass ohne Probleme funktioniert.

Wir arbeiten nicht mit Homeverzeichnissen, sondern mit der Ordnerumleitung über GPO.

In obengenannten Script wird auch das Verzeichnis für die umgeleiteten Dokumente umbenannt.

Von \\server\Freigabe\Alte ID in \\Server\Freigabe\Neue ID.

Auf den Clients starte ich ein Powershell Scirpt, dass beim Start des PC das Profilverzeichnis sowohl auf Filesystemebene, als auch in der Registry auf den neuen Namen ändert.

Nun zu meinem Problem, sobald sich der User anmeldet, kann der USer nicht mehr auf seine Dokumente zugreifen, da in der Registry nach der Anmeldung unter HKCU:\Software\Microsoft\windows\Explorer\Shell Folders und unter der Registry nach der Anmeldung unter HKCU:\Software\Microsoft\windows\Explorer\User Shell Folders

immer noch der "alte" Pfad angegeben ist. Z.B. Personal = "\\Server\Freigabe\Alte ID\Documents

Ich habe versucht dies über ein Anmeldescript in der GPO, dass als Letztes ausgeführt wird, zu ändern:

get-itemproperty -path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" | where-Object {$_.Personal -eq "C:\Users\Alte id\documents"} | set-itemproperty -Name Favorites -Value "\\server\Freigabe\Neue Id\documents"

Leider werden die Werte aber nicht geändert, führe ich das Script lokal nach der Anmeldung durch funktioniert es.

Hat jemand eine Idee oder einen Vorschlag, wie ich die Registry Werte sonst ändern kann.

Ordner Sortieren

$
0
0

Erst mal ein schönes Hallo,

ich hoffe das ihr mir helfen könnt,

ich habe ein Ordner mit dem Pfad C:\Benutzer\Test\  wo Täglich 4 .csv Dateien dazu kommen.

Ich würde gerne über dem Script das er die Dateien sortiert und die 4 Aktuellsten oben stehen und dann öffnet in eine Excel Datei mit 4 Mappen dann.

                       Vorher

Nachher

Ich habe auch schon angefangen mit dem Script, aber leider zieht er sich alle Dateien die in dem Ordner stehen in die Excel Datei. Brauche ja nur die 4 Aktuellsten von dem Tag.

# Alle CSV-Dateien des Ordners in ein neues Sheet importieren
#initiale Anzahl an sheets speichern
$initcount = [int]$wb.Worksheets.Count
gci $quelle | %{
    $ws = $wb.Worksheets.Add($n,$wb.Worksheets.Item($wb.Worksheets.Count),$n,$n)
    $ws.Name = $_.Name
    $qt = $ws.QueryTables.Add("TEXT;$($_.Fullname)",$ws.Range("A1"))
    $qt.Name = "Import"
    $qt.FieldNames = $true
    $qt.AdjustColumnWidth = $true
    $qt.TextFilePlatform = 1252
    $qt.TextFileStartRow = 1
    $qt.TextFileParseType = 1
    $qt.TextFileSemicolonDelimiter = $true
    $qt.Refresh($false)
    $qt.Delete()
} 



Fehler PowerShell Script Active Directory

$
0
0

Hallo,

bei meinem PowerShell Script, dass ermitteln soll, welche Benutzerkonten abgelaufen sind, alle Gruppenmitgliedschaften des jeweiligen Benutzers bis auf "Domänen-Benutzer" entfernt, diesen dann in die OU für deaktivierte Benutzer verschieben und deaktivieren soll bekomme ich eine Fehlermeldung und ich steh ehrlich gesagt auf dem Schlauch...

Hier mal das Script

# ActiveDirectory Modul importieren
Import-Module ActiveDirectory -Verbose:$false

#Abgelaufene Benutzerkonten
Write-Verbose 'Suche nach abgelaufenen Benutzerkonten'
$ExpiredAccounts = Search-ADAccount -AccountExpired -UsersOnly | Where-Object { $_.Enabled -eq $true }
Write-Verbose "$(@($ExpiredAccounts).count) abgelaufene Benutzerkonten gefunden"

#Gruppen die nicht entfernt werden sollen
$ExcludedGroups = @(
'CN=Domänen-Benutzer,OU=Users,DC=xx,DC=yy'
)

#Abgelaufene Benutzerkonten in die folgende OU verschieben
$DisabledOU = 'OU=__disabled,DC=xx,DC=yy'

#Aktuelles Datum abrufen
$Date = Get-Date -Format g

#Deaktivierte Benutzer durchforsten
ForEach($User in $ExpiredAccounts) {
  Write-Verbose "Gruppenmitgliedschaften von $($user.SamAccountName) werden kontrolliert"
  #Gruppenmitgliedschaften des Benutzers abrufen
  $userMembership = Get-ADUser $user.SamAccountName -Properties MemberOf | Select-Object -ExpandProperty memberoff
  Write-Verbose "Benutzerkonto ist mitgleid von: $(@($userMembership.Count)) Gruppen"

  foreach($member in $userMembership) {
    # Benutzer aus Gruppen entfernen
    if (!$ExcludedGroups.Contains($member)){
      try{
        Write-Verbose "Entferne Benutzer $($User.SamAccountName) aus $($member)"
        Get-ADGroup $member | Remove-ADGroupMember -Members $user.SamAccountName -Confirm:$false
      }
      catch{
        Write-Error "Fehler beim Benutzer $($User.Name) beim entfernen aus der Gruppe `'$member`'"
      }
    }
  }

  #Benutzer verschieben und deaktivieren
  try{
    # Beschreibung ändern und deaktivieren
    Write-Verbose "Ändere Beschreibung des Benutzers: `"Deaktiviert am $Date`""
    Set-ADUser -Identity $User.SamAccountName -Description "Deaktiviert am $Date" -Enabled $false
    # Benutzer in __disabled OU verschieben
    Write-Verbose 'Verschiebe Benutzer in die OU __disabled'
    Get-ADUser -identity $User.SamAccountName | Move-ADobject -targetpath $DisabledOU
  }
  catch{
    Write-Error "Fehler bei folgendem Benutzer `'$($User.DistinguishedName)`'"
  }
}
Get-ADUser : Das Argument für den Parameter "Identity" kann nicht überprüft werden. Das Argument ist NULL. Geben Sie ein Argument an, das nicht NULL ist, und führen Sie dann den Befehl erneut aus.
Bei xx.ps1:20 Zeichen:41
+   $BenutzerMitgliedschaften = Get-ADUser <<<<  $user.SamAccountName -Properties MemberOf | Select-Object -ExpandProperty memberoff
    + CategoryInfo          : InvalidData: (:) [Get-ADUser], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADUser
 
Fehler beim Aufrufen der Methode, da [System.Object[]] keine Methode mit dem Namen "Contains" enthält.
Bei xx.ps1:23 Zeichen:42
+     if (!$AuszuschließeneGruppen.Contains <<<< ($member)){
    + CategoryInfo          : InvalidOperation: (Contains:String) [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound
 
xx.ps1 : Fehler bei folgendem Benutzer ''
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,xx.ps1

Desweiteren, muss ich bei jedem Write-Error und Write-Verbose das Argument -Message anfügen oder reicht es  $VerbosePrefence = "Continue" zu definieren?




warum bekomme ich ein Access denied bei New-Item?

$
0
0

Mahlzeit.

Ich versuche mit New-Item eine neue Datei auf C:\ zu erstellen.

New-Item -Path "C:\" -Name "Data.log" -ItemType File 

Allerdings bekomme ich folgenden Fehler:

New-Item : Access to the path 'C:\Data.log' is denied.

Danke für jede Hilfe :)

PS: An den Adminrechten kann es nicht liegen.

Log Datei Zeilenweise nach Stichwort prüfen und pro Zeile einen String erstellen

$
0
0

Hallo,

ich habe eine Log Datei in welche alle Fehlercodes je nach Applikation gespeichert werden. Die Fehlercodes lauten z.B. 2596e. Nun möchte ich alle Zeilen welche einen Fehlercode enthalten rausfiltern und in ein eigenes Ereignisprotokol schreiben.

Meine Idee ist es jetzt den Text mit Hilfe von regular Expressions zu durchsuchen und dann für jede Zeile einen eigenen String zu erstellen welchen ich dann ins Ereignisprotokol schreiben kann.

Bis jetzt bin ich hier:

$Dat = "C:\Users\Desktop\New.log"
$TextFound = $False
$reader = [System.IO.File]::OpenText($Dat)
try {
    while ($True) {
        $line = $reader.ReadLine()      
        if ($line -eq $null) { break }
        If($line -match '^[0-9]{4}e{1}$') {
            $TextFound = $True
        }   
       If($TextFound) {        
            $line
            write-EventLog -LogName TEST -Source logs -EntryType Error -EventId 1 -Message $line

        }
   }
}
finally {
    $reader.Close()
}

Das problem ist, dass er in $line nicht nur eine Zeile schreibt sondern alles ab der ersten Expression. Es soll aber wenn ein Errorcode in einer Zeile steht diese Zeile "rauskopiert" werden und danach soll weitergesucht werden bis zum nächsten errorcode, dieser soll dann wieder "rauskopiert" werden.Sodass nachher jede Errorzeile in das Eventlog geschrieben wird.

Zudem kann er im EventLog unter -Message $line nicht einfügen.

Ich komme da einfach nicht weiter und drehe mich Gedanklich im Kreis


Ich hoffe das war verständlich erklärt und ihr könnt mir helfen.




Herunterfahren unterbinden

$
0
0
Ich habe vor, in Powershell ein Sicherungsprogramm zu schreiben. Sicherheitshalber möchte ich das Herunterfahren unterbinden, während das Script läuft. Hat jemand eine Idee, bzw. ist meine Idee überhaupt umsetzbar?

Powershell mac wird aus .CSV nicht eingelesen

$
0
0

Hallo,

Habe folgendes Problem:

Ich habe eine CSV Datei in der verschiedene rechnerdetails wie computername IP und mac stehen.

Unter dem header Primäre MAC-Addresse stehen nun also die Macs.

Wenn ich diese mit:

Import-Csv -path C:\... |foreach{
...
$mac=($._"Primäre MAC-Adresse")
$mac

Ist $mac immer leer bzw. Ein Zeilenumbruch kann ich nicht genau sagen.

Die mac liegt im Format xx:xx:xx:xx:xx:xx vor und alle anderen spalten konnte ich ohne Probleme in die variablen speichern.

Habe auch schon versucht die variable als string zu casten  ging aber auch nicht. 

Der Rechner hat keine Verbindung zu den Rechnern oder allgemein zu einer stelle die mir die IP auflösen könnte

Gibt es cmdlet oder so was in das ich macs speichern kann?

Oder mache ich allgemein was falsch?MFG Andre

PowerShell Kopieren von Arrays

$
0
0

Hallo,

erst mal danke für eure Zeit :)

Es geht um folgendes.Ich habe ein Fotoarchiv wenn man es so nennen kann und von diesem will ich die Bilder sortiert nach Monaten auf einen anderen Pfad legen. Sprich pro Monat ein Ordner. Beschäftig mich jetzt seit 2Std hiermit und das ist mein erster Versuch mit PowerShell.

Der Versuch sieht wie Folgt aus:

for ($i=1; $i -le 12; $i++)

{                   

$to = "C:\TEMP\test\test".$i

$dateien = gci -recurse | where-Object { $_.CreationTime.Month -eq $i }

       

        for ($x=0; $x -le $dateien.Count; $x++)

        {

            

         copy-item $dateien[$x] -destination $to

       

        }

}

Die Fehlermeldung ist: Es ist nicht möglich, ein Index auf ein NULL-Array anzuwenden...

Ich habe mir aber das Array mal per echo ausgeben lassen und da stand alles drin.

 

Danke


Meta Daten aus Bilddatei auslesen

$
0
0

Hallo zusammen,

Ich will aus einer Bilddatei die Meta Daten auslesen, bisher leider ohne erfolg.
auf der Bord eigenen Suche habe ich diesen thread gefunden: LINK

Leider sind die Links darin nicht mehr aktuell und führen ins nirgendwo.
auf google habe ich auch etwas gefunden z.B:

Function Get-FileMetaData
{
 Param([string[]]$folder)
 foreach($sFolder in $folder)
  {
   $a = 0
   $objShell = New-Object -ComObject Shell.Application
   $objFolder = $objShell.namespace($sFolder)

   foreach ($File in $objFolder.items())
    {
     $FileMetaData = New-Object PSOBJECT
      for ($a ; $a  -le 266; $a++)
       {
         if($objFolder.getDetailsOf($File, $a))
           {
             $hash += @{$($objFolder.getDetailsOf($objFolder.items, $a))  =
                   $($objFolder.getDetailsOf($File, $a)) }
            $FileMetaData | Add-Member $hash
            $hash.clear()
           } #end if
       } #end for
     $a=0
     $FileMetaData
    } #end foreach $file
  } #end foreach $sfolder
} #end Get-FileMetaData

Aber leider funktioniert diese Funktion auch nicht.
Es muss doch möglich sein an die Information heranzukommen?

Vielen Dank im voraus!


Powershell Skript als Administrator starten auf verschiedenen Systemen

$
0
0

Hallo zusammen,

ich habe das Problem das mein Powershell Skript vom USB Stick als Administrator gestartet werden muss.

Jetzt ist ja die Execution Policy standardmäßig auf restricted gestellt und damit alles komfortabler startet wollte ich es durch eine CMD Bat datei erstmal so einrichten das die Powershell Temporär Unrestricted ist und danach mein Skript als Administrator ausführt.

Aktuell bin ich etwas am verzweifeln da mein CMD Fenster als Administrator einfach direkt zu geht ohne Meldung "PAUSE" ignoriert der einfach. Und als normales Bat File hat er keine Berechtigung.

Ich meine das es erst seit Windows 10 so ist davor auf 7 hat es gut funktioniert.

Wie bekomme ich es hin das mein Skript vom Stick startet als administrator.

Ich bitte um Hilfe.

Mit freundlichen Grüßen

Rafael


SharePoint ListItem - Ändern des Content Types

$
0
0

Hallo zusammen,

ich versuche per Powershell bei allen Items in einer Bibliothek den Content Type zu ändern.

Unser Server ist ein SharePoint 2016.

Ich habe schon etwas zusammengestellt:

$siteurl = "https://site"
Connect-SPOnlineADFS -Url $siteurl
$ctx = Get-SPOContext

$itemIDs = Get-SPOListItem -List Customizings
foreach ($idd in $itemIDs)
{
Set-SPOListItem -List Customizings -Identity $idd -ContentType "Extranet Documents" -Values @{"Classification" ="Internal"}
}

Das Value "Classification" muss ich setzen, da dies ein Pflichtfeld ist.

Ich muss dazu sagen, dass ich Anfänger bin in Sachen PowerShell. Das Script habe ich mir mit Hilfe von einigen Beispielseiten zusammengeschrieben.

Irgendwas passiert auch, aber außer dass die Items mit ID, Title und Unique ID aufgelistet werden nicht viel.

Es wird allerdings auch kein Fehler angezeigt. Die Dokumente erhalten einen neuen Zeitstempel bei "Last Modified" und ich stehe als letzter Bearbeiter drin. Aber der Content Type wird nicht von Document auf "Extranet Document" geändert.

Was mache ich falsch?

Grüße

Mark


Object-Array 'Object[]' richtig verwenden

$
0
0
Hallo Forum!

ich habe ein Problem bei der Speicherung von Objekten vom Typ System.IO.Ports.SerialPort in einem Object-Array, wenn ich diesen mit 'Add-Member' Properties hinzufüget habe. Ich zeige hier mal was ich meine:

Function OpenComPorts-ForGrblConnection {
param (
    [ValidateSet(300, 600, 1200, 1800, 2400, 4800, 7200, 9600, 14400, 19200, 38400, 57600, 115200, 230400, 460800, 921600)] [Int] $Baudrate = 115200,
    [ValidateSet(7, 8)] [Int] $DataBits = 8,
    [ValidateSet('Even', 'Mark', 'None', 'Odd', 'Space')] [String] $Parity   = 'None',
    [ValidateSet('None', 'One', 'OnePointFive', 'Two')]   [String] $StopBits = 'One'
)
    $PortNames = [System.IO.Ports.SerialPort]::GetPortNames()
    $A = New-Object 'Object[]' $PortNames.Count
    For ($i=0; $i -le $PortNames.Count - 1; $i++) {
        $c = New-Object -TypeName System.IO.Ports.SerialPort $Port,$Baudrate,$Parity,$Databits,$StopBits
        #$A[$i] = $c
        $c.PortName = $PortNames[$i]
        $c.Open()
        If ($c.IsOpen) {
            $c.WriteLine('$I')
            $Response = $c.ReadExisting()
            $Response = $Response -split "\r\n"
            If ($Response[1] -eq "ok") {
                Add-Member -InputObject $c -MemberType NoteProperty -Name "GrblOk" -Value $true #-TypeName Bool
                If ($Response[0] -match "\d{8}") {
                    $BuildDate = [System.DateTime]::ParseExact($Matches[0],"yyyyMMdd", $null)
                    Add-Member -InputObject $c -MemberType NoteProperty -Name "BuildDate" -Value $BuildDate #-TypeName DateTime
                    If ($Response[0] -match "\d{1}\.\d{1}[a-z]{1}") {
                        Add-Member -InputObject $c -MemberType NoteProperty -Name "BuildVersion" -Value ($Matches[0]) #-TypeName String
                        $A[$i] = $c
                    }
                }
            } else {
                $c.Close()
            }
        }
    }
    Return $A
}

Okay - der Code lässt sich nur sinnvoll mit entsprechender Hardware am Comport betreiben, aber das Prinzip sollte klar sein. Es werden nacheinander alle Comports geöffnet und bei der Kommunikation bestimmte Antworten erwartet. Add-Member fügt entsprechend NoteProperties zu den Serial-Objekten hinzu. Die Objektereferenz befinden sich zu dem Zeitpunkt noch nicht im Array, aber wenn ich die Zuweisung '$A[$i] = $c' mache gerät alles durcheinander.

Vermutlich mache ich mit dem Array etwas Grundsätzliches falsch. Hat jemand die Checkung :-)



Michael L.

In ein Programm eingreifen

$
0
0

Hi,

ich bin noch absolut neu im Berteich von Powershell und hätte eine frage:

Ich will ein skript schreiben welches in ein Programm eingreift in diesem einige ,ich sag mal clicks macht,

und dann diese wieder schliest.

Also frage ist das in Powershell überhaupt möglich und wenn ja kann mir jemand ein Tutorial empfehlen?

Danke schon mal im voraus.

Readline() bis zu einer bestimmten Zeile, danach Schleife ausführen

$
0
0
Hallo,

ich steh kurz vorm Ende meines Skripts. Das Skript Schreibt Logs in ein Eventlog. Wenn Der Letzte Log Eintrag = dem letzten Eventlog ist soll das Skript nichts machen (funktioniert).
Wenn dies nicht der fall ist soll der die neuen Logs in das Eventlog schreiben. Mein Problem ist es nun, das wenn das Letzte Log != dem Letzten Eventlog ist kopiert er das Gesamte Log neu in den Eventlog (Dadurch hat man natürlich alles doppelt und dreifach im Eventlog.
Was ich nun brauche ist also, dass das Skript wenn Letzte Log != Letzte Eventlog solange die Zeilen liest bis er auf die Zeile stößt die als letztes im Eventlog steht und alles was darunter ist dann prüft und ggf. in das Eventlog schreibt. Sollte er die letzte Eventlog zeile nicht im Log finden, soll er das gesamte Log prüfen.

Ich hoffe man versteht das und klingt plausibel. Ist ein wenig blöd zu erklären.
$Last = (Get-WinEvent -FilterHashtable @{Logname='test'} -MaxEvents 1).Properties[0].Value
$LastEventLog = $Last.Substring(1,31)
$LastLogFile = Get-Content "C:\Users\user\Desktop\New.log" | select -Last 1
$LastLogFile1 = $LastLogFile.Substring(1,31)
$Dat = "C:\Users\user\Desktop\New.log"
$TextFound = $False




if ($LastLogFile1.Equals($LastEventLog)){
echo "Nichts getan"
}

else {

$reader = [System.IO.File]::OpenText($Dat)




try {
    while ($True) {


        $line = $reader.ReadLine()



        if ($line -eq $null) { break }



        If($line -match '^.*[0-9]{4}e{1}.*$') {
            $TextFound = $True


        }


       If($TextFound) {


           $TextFound = $False
            write-EventLog -LogName test-Source logs -EntryType Error -EventId 1 -Message $line
            Write-Host $line
        }
       }


}

finally {

    $reader.Close()
}

}

Falls noch offene Fragen sind bitte einfach stellen. Vielen Dank. :)

Textdateien ohne Trennzeichen in csv verwandeln

$
0
0

Guten Abend,

bin noch am Lernen mit Powershell, hänge gerade an einer Anforderung fest.

Habe eine Testdatei mit >20000 Zeilen. Feste Spaltenbreiten.

Z.B. Name            Firma          Abteilung             Raum                  Telefon

Wie kann ich die aufbereiten in eine CSV-Datei ?

Die zweite Datei finde ich noch schlimmer:

Firma    Name           Teilenummer        Typ
Muster  Meier, Hans  123456                PC
                                 46465                 Bildschirm

Wieviele Zeilen es pro Person gibt, ist unterschiedlich. Manche haben nur eine Zeile, manche haben 15. Wie kann ich eine CSV-Datei erzeugen, die folgendes ausgibt:

Muster;Meier, Hans;123456;PC
Muster;Meier, Hans;46465;Bildschirm

Am Orignialformat kann ich nichts ändern, daher wollte ich es via Powershell aufbereiten.

Freue mich über Hinweise.

CU,

Axel

Viewing all 2314 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>