Jump to content

ducke

Board Veteran
  • Content Count

    624
  • Joined

  • Last visited

Community Reputation

11 Neutral

1 Follower

About ducke

  • Rank
    Board Veteran
  1. Hallo Matthes, für dein Problem gibt es mehrere Lösungsansätze. Entweder du zerteilst den String mit substring oder du nutzt RegEx oder du versuchst den String mit Datetime.TryParseExact zu parsen. Bei der substring Methode wird stumpf geteilt und wenn im String Buchstaben oder ähnliches drin sind, wird das nicht überprüft. Mit RegEx werden nur Zahlen akzeptiert (\d). Die eleganteste Methode ist imho die Datetime.tryparseexact. Dort hast du nach dem Parsen ein Datetime Object. Ein paar Beispiele: $string = "201306120817" [datetime]$dirDate = New-Object DateTime if ([DateTime]::TryParseExact($string, "yyyyMMddhhmm", [System.Globalization.CultureInfo]::InvariantCulture, [System.Globalization.DateTimeStyles]::None, [ref]$dirDate)) { $Jahr = $dirdate.Year $Monat = $dirDate.Month $Tag = $dirDate.Day $Stunde = $dirDate.Hour $Minute = $dirDate.Minute "Jahr:{0} Monat:{1} Tag:{2} Stunde:{3} Minute:{4}" -f $Jahr,$Monat,$Tag,$Stunde,$Minute } else { "String nicht im richtigen Format!" } $string = "201306120817" if ($string -match "^(?<jahr>\d{4})(?<monat>\d{2})(?<tag>\d{2})(?<stunde>\d{2})(?<minute>\d{2})") { $Jahr = $matches["jahr"] $Monat = $matches["monat"] $Tag = $matches["tag"] $Stunde = $matches["stunde"] $Minute = $matches["minute"] "Jahr:{0} Monat:{1} Tag:{2} Stunde:{3} Minute:{4}" -f $Jahr,$Monat,$Tag,$Stunde,$Minute } else { "String nicht im richtigen Format!" } $string = "201306120817" $Jahr = $string.Substring(0,4) $Monat = $string.Substring(4,2) $Tag = $string.Substring(6,2) $Stunde = $string.Substring(8,2) $Minute = $string.Substring(10,2) "Jahr:{0} Monat:{1} Tag:{2} Stunde:{3} Minute:{4}" -f $Jahr,$Monat,$Tag,$Stunde,$Minute Wie auch immer, dass ist ein gutes Beispiel für die Vielfalt von Powershell. Mehrere Wege führen zum Ziel :)
  2. Um dich weiter zu verwirren noch eine Methode via regex $test = Get-Content C:\temp\ownertest.txt #regex string $regex = [regex]"[A-Z]\d{3}[A-Z]\d{3}" #save regex results in variable $result = $regex.Matches($test).value #Create empty Array $output = @() $result | %{ #Create PSObject with owner Property $ret = "" | select owner #Save Pipeoutput in Custom Object $ret.owner = $_ #Save in Array $output += $ret } $output
  3. Oder bei der Installation noch ein paar Properties mehr setzen: JAVAUPDATE=0 AUTOUPDATECHECK=0 JU=0
  4. Hier findest du die notwendigen Infos zum Thema: http://technet.microsoft.com/en-us/library/ff730951.aspx
  5. Es gibt bei Powershell zwei Arten von Errors. Die Terminating errors und non-terminating errors. Terminating errors werden mit try + catch aufgefangen. Non-terminating errors leider nicht. Du kannst, wie Cybquest schon richtig erwähnt hat, mit -ErrorAction "Stop" arbeiten try { $ErrorActionPreference = "Stop" Set-SPUser ....... } catch { write-host $error[0].exception.Message } finally { $ErrorActionPreference = "Continue" } oder mit der Variable $? Set-SPUser ...... if ($?) { write-host "Alles toll :)" } else { write-host $error[0].exception.Message }
  6. Dein Wunsch sei mir Befehl :) Versuch es mal hiermit: $logpath = "c:\logfile" $filter = "*.txt" $date = [regex]"(?sm)^\d{4}-\d{2}-\d{2}.+?\Z" $logmatches = dir $logpath -Filter $filter | %{[io.file]::ReadAllText($_.FullName)} #$date.Matches($logmatches) | select -ExpandProperty matches $logmatches | Select-String $date | Foreach {$_.Matches} | Foreach {$_.Value}
  7. Kleiner Vorschlag meinerseits: $logpath = "c:\logfiles" #Mußt du natürlich anpassen $filter = "*.txt" $date = get-date -Format "yyyy-MM-dd" #welches datumsformat haben die logeinträge? $logmatches = dir $logpath -Filter $filter | Select-String -Pattern $date -AllMatches Send-MailMessage -SmtpServer "smtpserver.local" -From "du@email.de" -to "empfaenger@email.de" -Subject "Daily Logs" -Body ($logmatches | Out-String)
  8. Hallo Manfred, mit Powershell ist das ziemlich einfach. [System.Console]::ForegroundColor [System.Console]::BackgroundColor Bei einer Batch habe ich nur das hier gefunden: http://www.mailsend-online.com/blog/getting-the-windows-console-text-color.html Vielleicht hilft Dir das weiter. Gruß Manuel
  9. Hallo Thomas, du kannst die Ausgabe mit Out-File umleiten. Dort gibt es die Option das Encoding einzustellen wbadmin start backup /? | out-file C:\temp\wbadmin.txt -Encoding utf8 -Append
  10. Interessantes Problem :) Mit ein bisschen RegEx Magic kann man da schon was machen. Hier mal mein Vorschlag: $faxxml = [xml](Get-Content d:\temp\testfax.xml) $result = @{} $regex = [regex]"(?sm)^(?<key>(\b\w+[\s-/]\b[\w-]+|\b\w+)):\s(?<value>.+?)(\n|$)" $text = $faxxml.faxmakerstatus.fax.description foreach ($item in $regex.Matches($text)) { $result.Add($item.Groups["key"].value,$item.Groups["value"].value) } $MailMessage = @" To = $($result["Absender E-Mail"]) From = faxmaker@firma.de Subject = $($result["Betreff"]) Smtpserver = smtpserver "@ $msgparm = ConvertFrom-StringData $MailMessage Send-MailMessage @msgparm -Body ($result | ft -Wrap | Out-String) Zum Code selber. Ich schnappe mir die Description und jage einen Regex drüber. Damit befülle ich ein Hashtable und kann dann mit "$result["<key>"] an die Werte dran. Dann nehme ich einen Here-String ($mailmessage) und befülle die notwendigen Parameter für das Versenden der Mail. Als nächstes wird der Here-String noch in ein Hashtable umgewandelt (ConvertFrom-StringData) und an der Befehl Send-MailMessage übergeben. Den Body mache ich getrennt vom Hashtable. Alles klar soweit? ;)
  11. Hi martins, der 04.09. ist korrekt. Windows Server 2012 released to manufacturing! - Windows Server Blog - Site Home - TechNet Blogs
  12. Hatte ich aber auch erst nicht gesehen :) Geht auch mit New-ItemProperty -path HKLM:\Software\Innervation\$strScriptName -Name "LastRun" -Value ([system.DateTime]::Today.ToString()) -propertyType String | Out-Null
  13. Die Lösung steht doch in dem verlinkten Artikel!
  14. Puuh mal ein Schuss ins Blaue weil ich sonst keinerlei Erfahrung mit WPAD habe. Kann es evtl an der Kodierung von wpad.dat liegen (ANSI oder UNICODE64) Lade dir die Datei auf den Clients mal runter und öffne sie in der cmd mit edit. Sonst würde mir noch procmon oder wireshark einfallen als letzte Möglichkeit.
  15. Ein paar Fragen meinerseits: Welche Anleitung nutzt du? Mit welchem Browser hast du Probleme (oder mit allen)? DNS läuft 100% (nslookup wpad)? Auf welchem Webserver(IIS oder Apache) liegt deine wpad.dat? Zugriffsberechtigung auf den Webserver auch okay?
×
×
  • Create New...