ducke
-
Gesamte Inhalte
624 -
Registriert seit
-
Letzter Besuch
Beiträge erstellt von ducke
-
-
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 -
Oder bei der Installation noch ein paar Properties mehr setzen:
JAVAUPDATE=0
AUTOUPDATECHECK=0
JU=0
-
Hier findest du die notwendigen Infos zum Thema:
-
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 }
-
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}
-
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)
-
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
-
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
- 1
-
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.
Sorry for the delay on getting this response up. I wanted to make sure I had the correct answer on when the bits will be available. I know everyone is very interested in downloading and getting access to the bits. We have already seen a huge amount of downloads of the evaluation bits. HUGE.I know some of you probably will not like my answer... All evaluation bits will be publicly available September 4th, 2012.
Now, I am putting on my armor. Please be gentle.
Kevin Beares
Senior Community Lead - Windows Server
@Thomas. Yes, the full RTM version of Windows Server 2012 (Not Eval) will be available on September 4th, 2012. Please let us know if this is causing major heartburn for any of you. We are listening.Forgot to mention that it will be available to both MSDN and TechNet Subscribers.Windows Server 2012 released to manufacturing! - Windows Server Blog - Site Home - TechNet Blogs
-
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
-
Die Lösung steht doch in dem verlinkten Artikel!
Note #2: If you’re using a server that’s not configured for the normal U.S. style time-date format, such as in the U.K., see Neil Hobson’s post at I See UC: PowerShell Bug? for information. -
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.
-
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
-
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}
-
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
-
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.
-
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
Zahlenwurm auftrennen
in Windows Forum — Scripting
Geschrieben
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:
Wie auch immer, dass ist ein gutes Beispiel für die Vielfalt von Powershell. Mehrere Wege führen zum Ziel :)