Jump to content

Kuddel071089

Members
  • Gesamte Inhalte

    559
  • Registriert seit

  • Letzter Besuch

Alle erstellten Inhalte von Kuddel071089

  1. Ich scheitere leider schon an der Remote-Anmeldung. Zum test wollte ich den Befehl "Get-Host" remote ausführen. Sprich: Invoke-Command -ComputerName Test-Server -ScriptBlock {get-host} -Credential Administrator Im Credential Popup versuche ich es dann mit: User: Test-Server\Administrator PW: xxxxx Fehlermeldung: [Test-Server] Beim Verbinden mit dem Remoteserver "Test-Server" ist folgender Fehler aufgetreten: Die Anforderung kann von WinRM nicht verarbeitet werden. Bei Verwendung der Kerberos-Authentifizierung ist der folgende Fehler mit Fehlercode 0x80090311 aufgetreten: Es sind momentan keine Anmeldeserver zum Verarbeiten der Anmeldeanforderung verfügbar. . Mögliche Ursachen: - Der angegebene Benutzername oder das angegebene Kennwort ist ungültig. - Kerberos wird verwendet, wenn keine Authentifizierungsmethode und kein Benutzername angegeben werden. - Kerberos akzeptiert Domänenbenutzernamen, aber keine lokale Benutzernamen. - Der Dienstprinzipalname (Service Principal Name, SPN) für den Remotecomputernamen und -port ist nicht vorhanden. - Der Clientcomputer und der Remotecomputer befinden sich in unterschiedlichen Domänen, zwischen denen keine Vertrauensbeziehung besteht. Wenn Sie die oben genannten Ursachen überprüft haben, probieren Sie folgende Aktionen aus: - Suchen Sie in der Ereignisanzeige nach Ereignissen im Zusammenhang mit der Authentifizierung. - Ändern Sie die Authentifizierungsmethode; fügen Sie den Zielcomputer der Konfigurationseinstellung "TrustedHosts" für WinRM hinzu, oder verwenden Sie den HTTPS-Transport. Beachten Sie, dass Computer in der TrustedHosts-Liste möglicherweise nicht authentifiziert sind. - Führen Sie den folgenden Befehl aus, um weitere Informationen zur WinRM-Konfiguration zu erhalten: "winrm help config". Weitere Informationen finden Sie im Hilfethema "about_Remote_Troubleshooting". + CategoryInfo : OpenError: (Test-Server:String) [], PSRemotingTransportException + FullyQualifiedErrorId : AuthenticationFailed,PSSessionStateBroken
  2. Unter "Active Diretory-Webdienste" habe ich folgede Infomeldung gefunden: Von den Active Directory-Webdiensten konnte kein Serverzertifikat mit dem angegebenen Zertifikatnamen gefunden werden. Für Zertifikate ist die Verwendung von SSL/TLS-Verbindungen erforderlich. Wenn Sie SSL/TLS-Verbindungen verwenden möchten, stellen Sie sicher, dass auf dem Computer ein gültiges Serverauthentifizierungszertifikat von einer vertrauenswürdigen Zertifizierungsstelle installiert ist. Zertifikatname: xxxxx.xxxx.local Unter Diretory Service habe ich folgende Warnung gefunden: Während der vergangenen 24 Stunden haben einige Clients versucht, eine der folgenden LDAP-Bindungen vorzunehmen: (1) Eine SASL-LDAP-Bindung (Verhandlung, Kerberos, NTLM oder Digest), die keine Signatur (Integritätsüberprüfung) anforderte, oder (2) eine einfache LDAP-Bindung über eine Klartextverbindung (ohne SSL-/TLS-Verschlüsselung). Der Verzeichnisserver ist derzeit nicht zum Zurückweisen derartiger Bindungen konfiguriert. Sie können die Sicherheit dieses Verzeichnisservers deutlich verbessern, indem Sie den Server zum Zurückweisen derartiger Bindungen konfigurieren. Weitere Details und Informationen zum Vornehmen dieser Konfigurationsänderung auf dem Server finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=87923". Eine Zusammenfassung der Anzahl derartiger Bindungen, die in den vergangenen 24 Stunden eingegangen sind, finden Sie unten. Sie können die Protokollierung erweitern und bei jeder derartigen Bindung durch einen Client ein Ereignis protokollieren. Hierzu gehören Informationen dazu, welcher Client die Bindung vornahm. Erhöhen Sie hierzu die Einstellung für die Ereignisprotokollierungskategorie "LDAP-Schnittstellenereignisse" auf Stufe 2 oder höher. Anzahl der einfachen Bindungen, die ohne SSL/TLS erfolgten: 183 Anzahl der Verhandlungs-/Kerberos-/NTLM-/Digestbindungen, die ohne Signatur erfolgten: 8
  3. Gibt es bestimmte ID wonach ich filtern kann ? Habe unter "Sicherheit" und "System" nichts passendes gefunden
  4. Hallo Nils, im Zertigikat ider der Name von neuen DC eingetragen. Sprich wurde ausgestellt für ServerXYZ
  5. Leider gibts es bei den Commandlets "Get-WUHistory" und "Get-WURebootstatus" keinen Parameter Crendential. Wenn ich es per Invoke-Command machen, funktionieren meine Crendetials nicht mehr. Das OS konnte ich Remote abfragen $servers = @("Server1","Server2") foreach($server in $servers) { #Admin-Credentials $adminuser = "$server\Administrator" $password = "xxxxxxxxx" $secstr = New-Object -TypeName System.Security.SecureString $password.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)} $cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $adminuser, $secstr $os = Get-WmiObject -class Win32_OperatingSystem -computername $server -Credential $server\$user $pw $os = "$($property.Caption)"
  6. Ich habe jetzt die Zertifizierungsstelle in der MMC hinzugefügt. Wo genau muss ich jetzt schauen ?
  7. Also SSL LDAP geht nur beim neuen 2016er nicht. EIN Zertifikat ist nach wie vor vorhanden. Ner neue DC hat einen neuen Namen bekommen, aber die IP vom entfernten DC
  8. Hallo zusammen, wir haben letzte Woche einen DomainController (WinSrv 2012) aus der AD entfernt und einen neuen DC auf WinSrv 2016 hinzugefügt. Seit dem haben wir Probleme mit LDAP. Wenn man sich an deren Systemen per LDAP (SSL) authentifizierne möchte, bekommt man ein Fehler, dass die Anmeldung nciht möglich war. Klickt man noch einmal auf anmelden funktioniert alles. Ich hab derzeit leider keine Idee wo ich ansetzten soll. DC1: WinSrv 2012 DC2: WinRsv 2016 DC3: WinSrv 2012 Alle Systeme, die LDAP nutzen, haben den Domänen-Namen als LDAP-Server eingetragen. Vielen Dank schon einmal für die Hilfe
  9. Ich habe die Abfrage jetzt übrigens hinbekommen. Für alle AD Server bekomme ich alle Infos super ausgelesen. Leider haben wir auch noch Server, die nicht Mitlgied in der AD sind (historisch bedingt / Novell eDir bis 2014). Wie kann ich jetzt von diesen Server die Infos abfragen ? Gestartet wird das Skript auf einem AD-Mitgliedsserver mit deinem AD-Admin-Account. Ich müsste also bei den anderen Servern den lokalen Administrator verwenden (hat bei allen Servern das gleiche PW). Leider stehe ich gerade voll auf dem Schlauch
  10. Danke für den Tip. Habe es jetzt umgestellt. cls $servers = @("testserver2") foreach($server in $servers) { #Check ob das Modul auf dem Server installiert ist. Ansonsten wird es kopiert IF(!(Test-Path "\\$server\C$\Windows\System32\WindowsPowerShell\v1.0\Modules\PSWindowsUpdate\*")) {copy-item "\\testserver1\D$\PSWindowsUpdate" -Recurse "\\$server\C$\Windows\System32\WindowsPowerShell\v1.0\Modules"} Invoke-Command -ComputerName $server -ScriptBlock {Import-Module PSWindowsUpdate} #Invoke-Command -ComputerName $server -ScriptBlock {$wuabfrage = Get-WUHistory | Select-Object -first 1} $wuabfrage = Invoke-Command -ComputerName $server -ScriptBlock {Get-WUHistory | Select-Object -first 1} #Check, ob ein Reboot nötig ist $reboot = Invoke-Command -ComputerName $server -ScriptBlock {Get-WURebootStatus} #Entfernung von "localhost: " aus der Varaible $reboot = $reboot -replace "localhost: ", "" #Abfrage des Betriebssystems $serverinfos = Get-ADComputer $server -Properties * | Select operatingsystem #Output "|$($wuabfrage.ComputerName)|$($wuabfrage.Date)|$reboot|$($serverinfos.operatingsystem))|" } Leider bekomme ich jetzt beim Befehl "Get-WURebootStatus" einen Fehler Eine Instanz der COM-Komponente mit der CLSID {C01B9BA0-BEA7-41BA-B604-D0A36F469133} konnte aufgrund des folgenden Fehlers nicht von der IClassFactory erstellt werden: 80070005 Zugriff verweigert (Ausnahme von HRESULT: 0x80070005 (E_ACCESSDENIED)). + CategoryInfo : NotSpecified: ( :) [New-Object], UnauthorizedAccessException + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.NewObjectCommand + PSComputerName : testserver2
  11. Hallo zusammen, ich bin gerade dabei mir einen Update-Report aller unserer WIndows Server zusammenzubauen. Die Spalten sollen am Ende wir folgt ausgefüllt werden: Servername;Datum der letzten Installation;Neustart nötig;Betriebssystem Für die Update-Infos verwende ich das PS-Modul "PSWIndowsUpdate". Da diese ja noch nciht auf jedem Server ist, muss ich es vorher noch verteilen und importieren. Das funktioniert auch. Leider bekomme ich die Infos aus der Remote-Abfrage nicht weiterverarbeitet. BIs jetzt habe ich folgendes cls $servers = @("test-server2") foreach($server in $servers) { #Check ob das Modul auf dem Server installiert ist. Ansonsten wird es kopiert IF(!(Test-Path "\\$server\C$\Windows\System32\WindowsPowerShell\v1.0\Modules\PSWindowsUpdate\*")) {copy-item "\\testserver1\D$\PSWindowsUpdate" -Recurse "\\$server\C$\Windows\System32\WindowsPowerShell\v1.0\Modules"} Invoke-Command -ComputerName $server -ScriptBlock {Import-Module PSWindowsUpdate} Invoke-Command -ComputerName $server -ScriptBlock {$wuabfrage = Get-WUHistory | Select-Object -first 1} #Check, ob ein Reboot nötig ist Invoke-Command -ComputerName $server -ScriptBlock {$reboot = Get-WURebootStatus} #Entfernung von "localhos: " aus der Varaible $reboot = $reboot -replace "localhost: ", "" #Abfrage des Betriebssystems $serverinfos = Get-ADComputer $server -Properties * | Select operatingsystem #Output "$($wuabfrage.ComputerName);$($wuabfrage.Date);$reboot;$($serverinfos.operatingsystem))" } Ich hoffe ihr könnt mir weiter helfen. Vielen Dank schon einmal
  12. Hallo NIls, wusste bis eben gar nicht, dass so was geht ^^. Ja gut, das wäre dann wohl der einfach Weg gewesen :-D Für die Interessierten, wie ich es umgesetzt habe: cls $host.ui.RawUI.WindowTitle = "DC Backup Check v0.2" #Mailvariablen $Mailempfaenger = "xxxx@xxxx.de" $smtpserver = "outlook.xxxx.de" $absender = "Check@xxxx.de" #Server definieren $servers = @("DC01","DC02","DC03") #Checkschleife foreach($server in $servers) { #Datum von gestern in Variable $gestern = (Get-Date) - (New-TimeSpan -Day 1) #Check ob das Backup gestartet wurde $event_start = Get-WinEvent -LogName Microsoft-Windows-Backup -ComputerName $server | Where-Object {$_.Id -eq 1 -and ($_.TimeCreated -ge $gestern)} if($event_start) { #Check ob das Backup erfolgreich abgeschlossen wurde #Event in Variable schreiben $event_erfolgreich = Get-WinEvent -LogName Microsoft-Windows-Backup -ComputerName $server | Where-Object {$_.Id -eq 4 -and ($_.TimeCreated -ge $gestern)} if($event_erfolgreich) { #Klammer vom Check ob das Backup erfolgreich war #Erfolgreichmail $mailbody = "C:\mailbody_$server.txt" "$($event_erfolgreich.TimeCreated)" | Out-File -FilePath $mailbody -Append "$($event_erfolgreich.Message)" | Out-File -FilePath $mailbody -Append $body = Get-Content -Raw $mailbody Send-MailMessage -SmtpServer $smtpserver -to $Mailempfaenger -from $absender -Subject "+++ AD DC Backup: $server --> SUCCESS +++" -Body $body -Encoding Unicode Remove-Item $mailbody } else { #Fehlermeldung, dass das Backup nicht erfolgreich abgeschlossen wurde Send-MailMessage -SmtpServer $smtpserver -to $Mailempfaenger -from $absender -Subject "+++ AD DC Backup: $server --> ERROR +++" -Body "Das Backup wurde nicht erfolgreich abgeschlossen" -Encoding Unicode } }#Klammer vom Check ob das Backup gestartet wurde else { #Fehlermeldung, dass es keinen Eventlog-Eintrag für den Start des Backups gibt Send-MailMessage -SmtpServer $smtpserver -to $Mailempfaenger -from $absender -Subject "+++ AD DC Backup: $server --> ERROR +++" -Body "Das Backup wurde nicht ausgeführt" -Encoding Unicode } }#Klammer der ForEach Schleife
  13. Also die Abfrage der Erfolgreich-Meldungen klappt schonmal: Get-WinEvent -LogName Microsoft-Windows-Backup -ComputerName DC2 | Where-Object {$_.Id -eq 4} Jetzt will ich natürlich in meinem Skript immer nur prüfen ob am gestrigen Tag die Sicherung erfolgreich lief. Leider fuktioniert der Filter nicht: Get-WinEvent -LogName Microsoft-Windows-Backup -ComputerName DC2 | Where-Object {$_.Id -eq 4 -and ($_.TimeCreated -like "*14.06.2017*")} Habe den Fehler gefunden. Ist mal wieder ein Übersetzungsproblem: Get-WinEvent -LogName Microsoft-Windows-Backup -ComputerName DC2 | Where-Object {$_.Id -eq 4 -and ($_.TimeCreated -like "*06/14/2017*")}
  14. Hallo zusammen, wir haben bei unseren DomainControllern gerade die Windows Server Sicherung aktiviert. Jetzt bin ich gerade dabei ein Powershell Skript zu schreiben, welches prüft ob die Sicherungen korrekt liefen. Im Eventlog findet man dazu unter "Anwendungs- und Dienstprotokolle/Microsoft/WIndows/Backup/Betriebsbereit" jeweils einen Eintrag mit der Ereignis-ID 4: Message: Die Sicherung wurde erfolgreich abgeschlossen. Diesen Eintrag würde ich jetzt gerne per Powershell abfragen und mir dann eine Mail zukommen lassen. Leider bekomme ich es nicht hin per "Get-Eventlog" den o.g. Eintrag abzufragen. Hier im Forum gibts es schon ein Thema dazu: http://www.mcseboard.de/topic/173783-powershell-mit-get-eventlog/ Nur da werden Ereignisse mit anderen IDs abgefragt. Hat jemand einen Tip für mich ? Vielen Dank schon einmal
  15. Na das sieht doch super aus, vielen Dank :-)
  16. Geht das ganze auch Rückwärts ? Jetzt wird ja von 0 bis 5 Minuten gezählt. Ich hätte aber gern von 5 bis 0 Minuten
  17. Hallo zusammen, ich habe mir für ein Skript einen Countdwn gebaut, der jewiels ein Anzahl an Sekunden herunterzählt. Diesen habe ich jetzt auf MInuten umgebaut und würde gerne die letzten Minute wiederum in Sekunden runterzählen. Klappt nur leider nicht: #Wartezeit von 5 Minuten $waitMinutes = 5 $waitMinutes..0 | Foreach-Object { cls Write-Host "Wartezeit:" -ForegroundColor Yellow -NoNewline Write-Host " $_" -ForegroundColor Red -NoNewline Write-Host " Minuten" -ForegroundColor Yellow -NoNewline Start-Sleep -Seconds 60 if($_ -eq 1) { $waitSeconds = 60 $waitSeconds..0 | Foreach-Object { cls Write-Host "Wartezeit:" -ForegroundColor Yellow -NoNewline Write-Host " $_" -ForegroundColor Red -NoNewline Write-Host " Sekunden" -ForegroundColor Yellow -NoNewline Start-Sleep -Seconds 1} } } Hat jemand eine Idee wo der Fehler ist ? Am besten wäre natürlich, wenn die Zeit in Minuten und Sekunden heruntergezählt wird: Wartezeit 5:45 zb. Aber das ist sicher noch schwerer umsetzbar Danke schon einmal
  18. Ja das ist richtig. Ich bekomme das Ablaufdatum aber von einer Website als Variable, die ich per Powershell weiterverarbeite. Setzt man das Datum dann per Powershell auf 31.03.17, sagt mit die AD-Verwatlungskonsole, dass der User am 30.03.17 abläuft. Daher muss ich auf das Datum der Variable einen Tag drauf rechnen, nur weiß ich nicht wie Was würde ich nur ohne Google machen :-D $ablaufdatum_projektuser = "31.03.2017" $datum = Get-Date $ablaufdatum_projektuser $ablaufdatum_projektuser = $datum.AddDays(+1).ToString("dd.MM.yyyy") $ablaufdatum_projektuser
  19. Hallo zusammen, bei der Einrichtung eines Users wird per GUI Kalender ein Ablaufdatum für externe User gewählt. Z.B. 31.03.2017. Wenn das Einrichtungskript jetzt das Ablaufdatum des AD-User setzt, läuft der User am Anfang des Tages (31.03.2017 00:00 Uhr) und nicht am Ende des Tages (31.03.2017 23:59 Uhr) aus. Daher müsste man auf das anegebene Datum immer +1 Tag rechnen. Ich habe es erst so versucht #Datum aufsplitten $tag = $($ablaufdatum_projektuser.substring(0,2)) $monat = $($ablaufdatum_projektuser.substring(3,2)) $jahr = $($ablaufdatum_projektuser.substring(6,4)) #Einen Tag hinzufügen, damit der Account korrekt abläuft $tag = [INT]$tag +1 #Neues Datum zusammensetzen $ablaufdatum_projektuser = "$tag"+"/"+"$monat"+"/"+"$jahr" #Ablaufdatum setzen Set-ADAccountExpiration $username $ablaufdatum_projektuser -Confirm:$false} Dieser Versucht klappt aber nur bis zum vorletzen Tag des jeweiligen Monats. Daher müsste man das irgendwie mit einer Datums-Funktion (AddDays) o.Ä. machen. Jemand ein Idee für mich? Schon einmal vielen Dank
  20. Hallo zusammen, wir verwenden für unsere Serververwaltung das Tool Racktables. Da wir virtuelle Server (VMwware) per Powerhell und PowerCLI ausrollen, bin ich jetzt dabei automatisiert einen Eintrag in der Datenbank erzeugen zu lassen. Leider kenne ich mich damit noch gar nicht aus und bin auf jede Hilfe angewiesen BIsher habe ich mir im Netz folgendendes zusammengesucht cls $apiUser="be28f0a29e7df3b9a455871abdb25d2a" $apiPass="a8b15299dbbc374a05c7b8068001b634" $res="http://serverdoku.XXX.local:9292/object" $apiHash = ConvertTo-SecureString $apiPass -AsPlainText -Force $apiCred = New-Object Management.Automation.PSCredential ($apiUser, $apiHash) $data = "{ 'name':VNTS999, 'Funktion':'Test'}" Invoke-WebRequest -Uri $res -Credential $apiCred -Method Post -Body $data -ContentType "application/json" Fehlermeldung Invoke-WebRequest : MultiJson::LoadError at /object 795: unexpected token at '{ 'name':VNTS999, 'Funktion':'Test'}' Ruby/usr/ruby/2.1/lib/ruby/2.1.0/json/common.rb: in parse, line 155 WebPOST serverdoku.XXXX.local/object Jump to: GET POST Cookies ENV Traceback (innermost first) /usr/ruby/2.1/lib/ruby/2.1.0/json/common.rb: in parse # the default. # * *create_additions*: If set to false, the Parser doesn't create # additions even if a matching class and create_id was found. This option # defaults to true. # * *object_class*: Defaults to Hash # * *array_class*: Defaults to Array def parse(source, opts = {}) Parser.new(source, opts).parse...end # Parse the JSON document _source_ into a Ruby data structure and return it. # The bang version of the parse method defaults to the more dangerous values # for the _opts_ hash, so be sure only to parse trusted _source_ documents. # # _opts_ can have the following keys: /usr/ruby/2.1/lib/ruby/2.1.0/json/common.rb: in parse # the default. # * *create_additions*: If set to false, the Parser doesn't create # additions even if a matching class and create_id was found. This option # defaults to true. # * *object_class*: Defaults to Hash # * *array_class*: Defaults to Array def parse(source, opts = {}) Parser.new(source, opts).parse...end # Parse the JSON document _source_ into a Ruby data structure and return it. # The bang version of the parse method defaults to the more dangerous values # for the _opts_ hash, so be sure only to parse trusted _source_ documents. # # _opts_ can have the following keys: /usr/ruby/2.1/lib/ruby/gems/2.1.0/gems/multi_json-1.8.4/lib/multi_json/adapters/json_common.rb: in load string = string.read if string.respond_to?(:read) if string.respond_to?(:force_encoding) string = string.dup.force_encoding(::Encoding::ASCII_8BIT) end options[:symbolize_names] = true if options.delete(:symbolize_keys) ::JSON.parse(string, options)...end def dump(object, options={}) options.merge!(::JSON::PRETTY_STATE_PROTOTYPE.to_h) if options.delete(:pretty) object.to_json(options) end end /usr/ruby/2.1/lib/ruby/gems/2.1.0/gems/multi_json-1.8.4/lib/multi_json/adapter.rb: in load metaclass.instance_eval do define_method("default_#{action}_options"){ value } end end def load(string, options={}) raise self::ParseError if blank?(string) instance.load(string, collect_load_options(options).clone)...end def dump(object, options={}) instance.dump(object, collect_dump_options(options).clone) end protected /usr/ruby/2.1/lib/ruby/gems/2.1.0/gems/multi_json-1.8.4/lib/multi_json.rb: in load # <b>Options</b> # # <tt>:symbolize_keys</tt> :: If true, will use symbols instead of strings for the keys. # <tt>:adapter</tt> :: If set, the selected adapter will be used for this call. def load(string, options={}) adapter = current_adapter(options) begin adapter.load(string, options)...rescue adapter::ParseError => exception raise LoadError.new(exception.message, exception.backtrace, string) end end alias decode load def current_adapter(options={}) /opt/racktables/racktables_api/lib/logistician/repository/multi_resource.rb: in post ups = 0 updates = repository.multi_update(ctx, input, objects ) ups = updates.do! return success( ctx, 'updated' => ups ) end def post( ctx, env ) input = MultiJson.load(env['rack.input'])...nu = nil create = repository.create(ctx, input ) nu = create.do! return created( ctx, nu ) end end /opt/racktables/racktables_api/lib/logistician/resource.rb: in call def patch(ctx, env) raise Unsupported end def call(env) method = ACTION[env["REQUEST_METHOD"]] ctx = Utils.context(env) self.__send__(method, ctx, env)...end end end /opt/racktables/racktables_api/lib/logistician/repository/shared.rb: in block in call end def call(env) Logistician::Utils.context(env).use(:statsd) do |statsd| statsd_prefix = ['resources',name,'actions',env['addressive'].action,env['REQUEST_METHOD']].join('.') time = Time.now begin result = super...if result[0] == 200 statsd.timing("#{statsd_prefix}.inner_time", (Time.now - time)*1000 ) end return result ensure statsd.increment("#{statsd_prefix}.count") end /opt/racktables/racktables_api/lib/logistician/context.rb: in use @data = {} @builder = {} end def use(*modules) if useable? *modules if block_given? return yield( *modules.map{|r| @data[r] } )...else return *modules.map{|r| @data[r] } end else return nil end end /opt/racktables/racktables_api/lib/logistician/repository/shared.rb: in call end def to_s return ['<',self.class.name,' for ',repository,'>'].join end def call(env) Logistician::Utils.context(env).use(:statsd) do |statsd|...statsd_prefix = ['resources',name,'actions',env['addressive'].action,env['REQUEST_METHOD']].join('.') time = Time.now begin result = super if result[0] == 200 statsd.timing("#{statsd_prefix}.inner_time", (Time.now - time)*1000 ) end /usr/ruby/2.1/lib/ruby/gems/2.1.0/gems/addressive-0.1.0/lib/addressive/router.rb: in block in call "[ ? ] url: #{rr.url.inspect}, path: #{rr.fullpath.inspect}" end matches = routes_for(rr.fullpath, rr.url) result = nil matches.each do |addressive| env[ADDRESSIVE_ENV_KEY] = addressive begin result = (addressive.spec.callback || addressive.spec.app).call(env)...db.call(DEBUG_NAME) do "[#{result[0]}] #{addressive.spec.template.pattern} with #{addressive.variables.inspect} on #{addressive.spec.app} ( route #{addressive.data[:'routes.scanned']} / #{addressive.data[:'routes.total']} ) after #{'%.6f' % addressive.data[:duration]}" end rescue db.call(DEBUG_NAME) do "[!!!] #{addressive.spec.template.pattern} with #{addressive.variables.inspect} on #{addressive.spec.app} ( route #{addressive.data[:'routes.scanned']} / #{addressive.data[:'routes.total']} ) after #{'%.6f' % addressive.data[:duration]}" end /usr/ruby/2.1/lib/ruby/gems/2.1.0/gems/addressive-0.1.0/lib/addressive/router.rb: in block in each # @yield {Addressive::Match} def each total = @routes.size scan_time = Time.now @routes.each(@proto,@host,@path) do |spec, vars, scanned| node, action = @actions[spec]; t = Time.now yield Match.new(node, action, vars, spec, {:'routes.scanned'=>scanned,:'routes.total'=>total,:duration => (t - scan_time)})...# still here?, the passed time should be added scan_time += (Time.now - t) end end end (eval): in each /usr/ruby/2.1/lib/ruby/gems/2.1.0/gems/addressive-0.1.0/lib/addressive/router.rb: in each @routes,@proto,@host,@path,@actions = routes, proto, host,path, actions end # @yield {Addressive::Match} def each total = @routes.size scan_time = Time.now @routes.each(@proto,@host,@path) do |spec, vars, scanned|...node, action = @actions[spec]; t = Time.now yield Match.new(node, action, vars, spec, {:'routes.scanned'=>scanned,:'routes.total'=>total,:duration => (t - scan_time)}) # still here?, the passed time should be added scan_time += (Time.now - t) end /usr/ruby/2.1/lib/ruby/gems/2.1.0/gems/addressive-0.1.0/lib/addressive/router.rb: in call l = env['rack.logger'] db = l ? l.method(:debug) : DEBUG_NULL db.call(DEBUG_NAME) do "[ ? ] url: #{rr.url.inspect}, path: #{rr.fullpath.inspect}" end matches = routes_for(rr.fullpath, rr.url) result = nil matches.each do |addressive|...env[ADDRESSIVE_ENV_KEY] = addressive begin result = (addressive.spec.callback || addressive.spec.app).call(env) db.call(DEBUG_NAME) do "[#{result[0]}] #{addressive.spec.template.pattern} with #{addressive.variables.inspect} on #{addressive.spec.app} ( route #{addressive.data[:'routes.scanned']} / #{addressive.data[:'routes.total']} ) after #{'%.6f' % addressive.data[:duration]}" end rescue /usr/ruby/2.1/lib/ruby/gems/2.1.0/gems/rack-1.5.2/lib/rack/urlmap.rb: in block in call rest = m[1] next unless !rest || rest.empty? || rest[0] == ?/ env['SCRIPT_NAME'] = (script_name + location) env['PATH_INFO'] = rest return app.call(env)...end [404, {"Content-Type" => "text/plain", "X-Cascade" => "pass"}, ["Not Found: #{path}"]] ensure env['PATH_INFO'] = path env['SCRIPT_NAME'] = script_name /usr/ruby/2.1/lib/ruby/gems/2.1.0/gems/rack-1.5.2/lib/rack/urlmap.rb: in each def call(env) path = env["PATH_INFO"] script_name = env['SCRIPT_NAME'] hHost = env['HTTP_HOST'] sName = env['SERVER_NAME'] sPort = env['SERVER_PORT'] @mapping.each do |host, location, match, app|...unless hHost == host \ || sName == host \ || (!host && (hHost == sName || hHost == sName+':'+sPort)) next end next unless m = match.match(path.to_s) /usr/ruby/2.1/lib/ruby/gems/2.1.0/gems/rack-1.5.2/lib/rack/urlmap.rb: in call def call(env) path = env["PATH_INFO"] script_name = env['SCRIPT_NAME'] hHost = env['HTTP_HOST'] sName = env['SERVER_NAME'] sPort = env['SERVER_PORT'] @mapping.each do |host, location, match, app|...unless hHost == host \ || sName == host \ || (!host && (hHost == sName || hHost == sName+':'+sPort)) next end next unless m = match.match(path.to_s) /opt/racktables/racktables_api/lib/caller.rb: in call end def initialize(app) @app = app end def call(env) return @app.call(env)...end end /opt/racktables/racktables_api/lib/racktables_api.rb: in block (2 levels) in builder use Logistician::Context::Build, :addressive do |ctx, mod, env| ctx[:addressive] = env['addressive'] if env.key?('addressive') end use ClientCounter use Caller do |env| env['QUERY_STRING'].gsub!('+','%20') super(env)...end node_old = Addressive.node(:api) do edge :object do app API[Model::RackObject], rewrite: ->(spec){ /opt/racktables/racktables_api/lib/client_counter.rb: in call @app = app end def call(env) Logistician::Utils.context(env).use(:statsd) do |statsd| statsd.increment('user_agent.'+parse_user_agent(env['HTTP_USER_AGENT'])) end @app.call(env)...end private def parse_user_agent(ua) case(ua) when /\Axar\/v(\d+(?:\.\d+)*)\z/ then 'xar.'+$1 /opt/racktables/racktables_api/lib/logistician/context.rb: in call end def call(env) ctx = Logistician::Utils.context(env) ctx.build(@name) do |*args| @block.call(*args, env, *@rest) end return @app.call(env)...end end extend Forwardable def_delegators :@data, :[]=, :fetch, :each, :to_h, :to_hash, *Enumerable.instance_methods /opt/racktables/racktables_api/lib/logistician/context.rb: in call @rest = rest @block = block end def call(env) ctx = Logistician::Utils.context(env) ctx[@name] ||= @block.call(env, *@rest) return @app.call(env)...end end class Build def initialize(app, name, *rest, &block) /opt/racktables/racktables_api/lib/api_key_authenticator.rb: in call auth = Rack::Auth::Basic::Request.new(env) return unauthorized unless auth.provided? return bad_request unless auth.basic? if( auth.credentials[0] =~ /\A\h{32}\z/ and auth.credentials[1] =~ /\A\h{32}\z/ ) if valid_api?( *auth.credentials ) key = Model::ApiKey[auth.credentials[0]] authenticate_env!(env, key) return @app.call(env)...end end unauthorized end end end /opt/racktables/racktables_api/lib/caller.rb: in call end def initialize(app) @app = app end def call(env) return @app.call(env)...end end /opt/racktables/racktables_api/lib/racktables_api.rb: in block (2 levels) in builder Rack::Builder.new do use Rack::Lint use Caller do |env| time = Time.now result = super(env)... if result[0] == 200 && env['addressive'] Logistician::Utils.context(env).use(:statsd) do |statsd| statsd.timing( ['resources',env['addressive'].spec.app.name,'actions',env['addressive'].action, env['REQUEST_METHOD'] ,'total_time'].join('.'), (Time.now - time)*1000 ) end end /usr/ruby/2.1/lib/ruby/gems/2.1.0/gems/rack-1.5.2/lib/rack/lint.rb: in _call assert("No env given") { env } check In Zeile:11 Zeichen:1 + Invoke-WebRequest -Uri $res -Credential $apiCred -Method Post -Body $data -Conte ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand Ersteinmal soll der Eintrag automatisch erstellt werden. Zum Test mit festeingetragenen Werten. Wenn das funktioniert, will ich das gaze mit Variablen, die bei der Erstellung eines Server verwendet werden, versuchen. Ich hoffe ihr könnt mir weiter helfen. Vielen Danke schon einmal
  21. Hallo zusammen, bei der einrichtung eines neues User via PS-Script, geben wir immer eine PW ein. Kann man die Variable $pw irgenwie prüfen, ob Sie der PW-Polica (Sonderzeichen, Groß-, Kleinschreibung etc.) enstpricht ? Mein erster ansatz war: if($pw -like "*!* -or "*$*" ...) nur dann müsste ich ja alle Sonderzeichen, alle Groß- und Kleinbuchstaben sowie Zahlen angeben. Desweiteren dürfen Teile des Usernamens nicht im Pw vorkommen. Das müsste natürlich auch geprügt werden. Hat da jemand Erfahrung mit gemacht ? Danke schoneinmal
  22. Hallo zusammen, ich benötige dringend Hilfe. Gestern haben wir Daten von einem Laufwerk auf das andere migriert (mit Robocopy). Leider lief um 18 Uhr der SyncTask noch einmal, sodass die Datein, die in der Zeit bearbeitet wurden, jetzt wieder einen alten Stand haben. Auf dem Filesystem liegt noch eine Vorgängerversion von 18 Uhr, aus der wir bisher per Hand alles geforderte wiederherstellen konnten. Jetzt zur Frage: Wie bekomme die aktuellen Restdatem aus der Vorgängerversion jetzt ins Filesystem zurück? Macht es sinn, die komplette Vorgängerversion einmal zu Restoren und dann ein RobocopyTask drüber laufen zu lassen? Quelle = Vorgängerversion Ziel = Filesystem Optionen = Nur neue Datein kopieren Hat jemand Hilfe für mich? Vielen Dank schon einmal EDIT: Restore Robocopy Befehl: robocopy %quelle% %ziel% /E /XO /XX /Log:C:\Log.txt /TEE
  23. Ja genau. Alles in einer Zeile habe ich schon hinbekommen, ließt sich aber natürlich richtig b***d mit `r hinter jeder Zeile tut sich leider auch nichts. Die Leerzeichen werden nicht korrekt interpretiert
  24. Wieso Textdatei? Weil ich bis jetzt noch nicht weiß, wie man einen Mailbody mit mehreren Zeilen erstellt. Sonst würde ich das natürlich alles ohne Umweg in den Body schreiben
×
×
  • Neu erstellen...