
ducke
Premium Member-
Gesamte Inhalte
624 -
Registriert seit
-
Letzter Besuch
Alle erstellten Inhalte von ducke
-
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 :)
-
Powershell - String auslesen, Zeichenkette zwischen zwei Buchstaben in Variable schreiben
ducke antwortete auf ein Thema von Christoph_A4 in: Windows Forum — Scripting
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 -
Java Verteilung per Batch-Script
ducke antwortete auf ein Thema von Quackelticki in: Windows Forum — Scripting
Oder bei der Installation noch ein paar Properties mehr setzen: JAVAUPDATE=0 AUTOUPDATECHECK=0 JU=0 -
Hier findest du die notwendigen Infos zum Thema: http://technet.microsoft.com/en-us/library/ff730951.aspx
-
Powershell - try Catch funktioniert nicht
ducke antwortete auf ein Thema von hawk0815 in: Windows Forum — Scripting
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 } -
Alle Dateien eines Ordners nach Datum durchsuchen
ducke antwortete auf ein Thema von anarcy in: Windows Forum — Scripting
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} -
Alle Dateien eines Ordners nach Datum durchsuchen
ducke antwortete auf ein Thema von anarcy in: Windows Forum — Scripting
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) -
Aktuelle Farmen in der Eingabeaufforderung auslesen
ducke antwortete auf ein Thema von Manfred von Ric in: Windows Forum — Scripting
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 -
Umleitung In Textdatei - Codepage
ducke antwortete auf ein Thema von Alith Anar in: Windows Forum — Scripting
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 -
XML Datei via Powershell auslesen (inkl. E-Mail Versand)
ducke antwortete auf ein Thema von catao in: Windows Forum — Scripting
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? ;) -
Hi martins, der 04.09. ist korrekt. Windows Server 2012 released to manufacturing! - Windows Server Blog - Site Home - TechNet Blogs
-
Abfrage last run Datumsproblem
ducke antwortete auf ein Thema von Stefan W in: Windows Forum — Scripting
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 -
Abfrage last run Datumsproblem
ducke antwortete auf ein Thema von Stefan W in: Windows Forum — Scripting
Die Lösung steht doch in dem verlinkten Artikel! -
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.
-
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?
-
Hier meine Quick-and-dirty Lösung: Powershell Script auf den Rechnern $path = "d:\temp\csv" $wmi = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE $result = ("" | select name,dhcpenabled,ipaddress,mac,dnssrv) $result.name = $wmi.DNSHostName $result.dhcpenabled = $wmi.DHCPEnabled $result.ipaddress = [string]::Join(" ",$wmi.IPAddress) $result.mac = $wmi.MACAddress $result.dnssrv = [string]::Join(" ",$wmi.DNSServerSearchOrder) $result | Export-Csv ("{0}\{1}.csv" -f $path,$wmi.DNSHostName) -Delimiter ";" -NoTypeInformation -Force Und hier zum Einsammeln: $path = "d:\temp\csv" $files = dir $path -Filter *.csv $data = @() foreach ($file in $files) { $data += Import-Csv $file.fullname -Delimiter ";" } $data | Export-Csv $path\totalsrv.csv -Delimiter ";" -NoTypeInformation Meiner Meinung nach ist der Export als CSV Datei sinnvoller als eine TXT Datei mit TAB getrennten Werten. Damit kannst du mit Import-CSV die Daten direkt weiterverarbeiten.
-
InheritanceFlag (Powershell)?
ducke antwortete auf ein Thema von astalbold in: Windows Forum — Scripting
Yep das verstehst du falsch :) Hier ist dein Problem: $PropagationFlag = [system.Security.AccessControl.PropagationFlags]::InheritOnly Mach mal bitte das: $PropagationFlag = [system.Security.AccessControl.PropagationFlags]::None Siehe auch PropagationFlags-Enumeration -
String mit Wildcards auslesen (HTML-Datei)
ducke antwortete auf ein Thema von xilodynamit in: Windows Forum — Scripting
Ist Powershell eine Option? $html = @" <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250"> <meta name="generator" content="PSPad editor, www.pspad.com"> <title></title> </head> <body> <div><div> <input onclick="this.select();" type="text" value="www.HP.de/test/{wieder die selbe Buchstabenfolge}[/img]]HP - Deutschland | Startseite - PCs, Drucker, Server, Speicherlösungen und mehr"/> </div></div> <div><div> <input onclick="this.select();" type="text" value="www.HP.de/test/{wieder die selbe Buchstabenfolge}[/img]]HP - Deutschland | Startseite - PCs, Drucker, Server, Speicherlösungen und mehr"/> <input onclick="this.select();" type="text" value="www.HP.de/test/{wieder die selbe Buchstabenfolge}[/img]]HP - Deutschland | Startseite - PCs, Drucker, Server, Speicherlösungen und mehr"/> </div></div> </body> </html> "@ Select-String -InputObject $html -Pattern "(?<input><input.+?/>)" -AllMatches | select -ExpandProperty Matches | foreach {$_.groups["input"].value} -
InheritanceFlag (Powershell)?
ducke antwortete auf ein Thema von astalbold in: Windows Forum — Scripting
Hallo astalbold, zu aller erst würde ich Dir empfehlen mit dem NTFSSecurity Modul aus dem Script Center von Mircosoft zu arbeiten. Das macht das Leben viel leichter. Das Modul findest du hier (v1.3) Mit deinem Script hast du keine "saubere" Berechtigung, sondern du berechtigst einzeln. Hier ein Beispiel wie einfach das mit dem Modul geht: $path = "C:\temp\srv2k3test\dat\pub" $acc = "Domain\Peter.Pan" Get-Item $path | Add-Ace -Account $acc -AccessRights FullControl -InheritanceFlags ContainerInherit,ObjectInherit -AccessType Allow -
Sorry für die späte Rückmeldung, aber im Moment habe ich etwas Stress auf der Arbeit. Ich musste das Script nochmal anpassen. Da war ein kleiner Fehler drin :( Habe den Pfadnamen nicht richtig mitgegeben. $TestPath = "C:\sqltest1" dir $TestPath -Recurse | %{ get-acl $_.FullName} | %{ $pfad = New-Object psobject $pfad | Add-Member -MemberType NoteProperty -Name "Name" -Value (($_.Path -split "::")[1]); $_.access} | %{ $_ } | Select-Object @{ n="name";e={$pfad.Name}},@{ n="security_principal";e={$_.identityreference}},@{ n="type";e={$_.accesscontroltype}},@{ n="rights";e={$_.filesystemrights}} | Export-Csv "C:\sqltest1\excel.csv" -Delimiter ";" -NoTypeInformation -Encoding UTF8 Zu deinen Fragen: Das n steht für Name. (Das e für Expression) Siehe dazu Select-Object Die Liste schreibt (fast) jede Berechtigung einzeln auf. Schau mal bitte per GUI auf Sicherheit -> Erweitert. Wenn dort spezielle Berechtigungen gesetzt sind, dann werden diese separat aufgelistet.
-
Versuche es mal mit dem Script: $TestPath = "C:\sqltest1" dir $TestPath -Recurse | %{ get-acl $_.FullName} | %{ $_.access} | %{ $_ | Select-Object @{ n="name";e={$obj.fullname}},@{ n="security_principal";e={$_.identityreference}},@{ n="type";e={$_.accesscontroltype}},@{ n="rights";e={$_.filesystemrights}}} | Export-Csv "C:\sqltest1\excel.csv" -Delimiter ";" -NoTypeInformation -Encoding UTF8 Format-Table benötigst du nicht und mit AccessToString bekommst du keine gescheite Formatierung hin (nur mit einigem gefummel). Ist auch nicht meine Lösung, sondern habe ich hier her
-
Softwareverteilung funktioniert nicht - kein Zugriff
ducke antwortete auf ein Thema von oeckbert in: Active Directory Forum
Das mit den Authentifizieren Benutzern war mein Fehler. Als SYSTEM kannst du wie folgt deine Installation starten: Einfach eine cmd.exe als Administrator ausführen und dann psexec -i -s cmd.exe eingeben. Mit whoami kannst du überprüfen, ob du als SYSTEM unterwegs bist. Danach die MSI starten. -
Softwareverteilung funktioniert nicht - kein Zugriff
ducke antwortete auf ein Thema von oeckbert in: Active Directory Forum
Wenn du die Softwareverteilung über eine Computerrichtlinie machst, dann sollte bei der Berechtigung auf den Share das Konto Domänencomputer hinzugefügt werden. -
Für solche Abfragen nutze ich AdFind Dort hast du viel mehr Möglichkeiten der Sortierung und Ausgabe.
-
Hi Pinf, welche Zone wird denn im IE für die Seite angezeigt? Und wie ist die Einstellung dieser Zone unter Extras -> Internetoptionen -> Sicherheit -> <Zone> -> Stufe anpassen -> Benutzerauthentifizierung ? Gruß Manuel