Montag, September 19, 2016
Samstag, September 17, 2016
Powershell remotesigned, SysWow64, Runas
Beim Installieren meines bell.ps1 scriptes gab es mehrere Stolperstellen:
1. Das kopierte Script wird als Remote betrachtet und erwartet entsprechend eine Signierung
- Variante 1: Datei lokal neu erstellen (Datei umbenennen/neu anlegen, Inhalt kopieren)
- Variante 2: Clear-Content -Path 'C:\users\public\bell.ps1' -Stream 'Zone.Identifier'
- ZI Setzen : Add-Content -Path 'C:\users\Public\bell.ps1' -Value "[ZoneTransfer]`nZoneId=3" -Stream 'Zone.Identifier'
- ZI Ansehen: Notepad C:\users\Public\bell.ps1:zone.identifier
2. Windows 10 und intPTR:
das unter Windows 7/64 lauffähige script läuft unter W10 nur noch unter Powershell 32 bit:
Start-Process -Verb runas -FilePath C:\windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
Die Anpassung des Scriptes an die geänderte Pointerbehandlung ist in Arbeit.
3. Achtung: beide Versionen 64/32 haben eigene Einstellungen zu Set-ExecutionPolicy, die per Default restricted ist, aber bequemerweise RemoteSigned sein sollte
4. Powershell als Admin auszuführen:
Start-Process -Verb runas -FilePath C:\windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
5. weitere Tipps: Geek, wosHub
1. Das kopierte Script wird als Remote betrachtet und erwartet entsprechend eine Signierung
- Variante 1: Datei lokal neu erstellen (Datei umbenennen/neu anlegen, Inhalt kopieren)
- Variante 2: Clear-Content -Path 'C:\users\public\bell.ps1' -Stream 'Zone.Identifier'
- ZI Setzen : Add-Content -Path 'C:\users\Public\bell.ps1' -Value "[ZoneTransfer]`nZoneId=3" -Stream 'Zone.Identifier'
- ZI Ansehen: Notepad C:\users\Public\bell.ps1:zone.identifier
2. Windows 10 und intPTR:
das unter Windows 7/64 lauffähige script läuft unter W10 nur noch unter Powershell 32 bit:
Start-Process -Verb runas -FilePath C:\windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
Die Anpassung des Scriptes an die geänderte Pointerbehandlung ist in Arbeit.
3. Achtung: beide Versionen 64/32 haben eigene Einstellungen zu Set-ExecutionPolicy, die per Default restricted ist, aber bequemerweise RemoteSigned sein sollte
4. Powershell als Admin auszuführen:
Start-Process -Verb runas -FilePath C:\windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
5. weitere Tipps: Geek, wosHub
Netplwiz - Anmeldung mit gespeichertem Password
Win+R netplwiz.exe
Benutzer müssen Namen und Passwort eingenben: aus
Benutzer müssen Namen und Passwort eingenben: aus
Mittwoch, August 17, 2016
Get-NtpTime , Powershell Funktion
Wie spät ist es eigentlich? Manchmal setzt die ntp- Abfrage einfach aus und die PC Zeit läuft so nach und nach hinterher, oder auf und davon. Also gelegentlich prüfen, z.B. mit folgender Funktion:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#ibjs.net 20160817 Abfragefunktion für NTP, Auswertung der deutschen w32tm Ausgabe | |
$NTP_Server=@("ptbtime1.ptb.de", "ptbtime2.ptb.de", "ptbtime3.ptb.de", ` | |
"pool.ntp.org","europe.pool.ntp.org","de.pool.ntp.org ",` | |
"time-a.nist.gov","time-b.nist.gov ") | |
Function Get-NtpTime{ | |
Param($Server) | |
If (! $Server){$Server="ptbtime1.ptb.de"} | |
$NTPResponse={(iex "w32tm /stripchart /computer:$Server /dataonly /samples:0")[2]} | |
$NTPTime={get-date([regex]::Replace("$(&$NTPResponse)","([\D\s]+)([\d\. :]+)\.",'$2'))} | |
&$NTPTime | |
} | |
$NTP_Server|%{"{0,-20}{1}" -f $_,(Get-NtpTime $_)} |
Freitag, August 05, 2016
Hedda, wie spät ist es?
Zeitansage mit Powershell und passender Sprachdatei (bei Windows 7 nachrüsten):
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#ibjs.net 20169806 | |
Add-Type -AssemblyName System.speech | |
$Hedda=New-Object ` | |
System.Speech.Synthesis.SpeechSynthesizer | |
$hedda.SelectVoice(` | |
($hedda.GetInstalledVoices().voiceinfo|?{$_.name -match "Hedda"}).name) | |
$GD=@' | |
$D=get-date | |
$S="Heute ist {0} der {1} {2} {3}. Es war gerade {4} Uhr und {5} Minuten und {6} Sekunden" -f ` | |
$D.tostring("dddd"),$D.day,$D.tostring("MMMM"),$D.year,$D.hour,$D.minute,$D.second | |
$Hedda.speak($S) | |
'@ | |
$Zeitansage={iex $GD} | |
&$Zeitansage | |
#Call Operator, Script Block, Invoke Expression und Here String in eier Reihe |
Mittwoch, August 03, 2016
FritzBox Dialer mit Powershell
Diese Übung galt der Umstellung des FritzBox Wahlhilfe Scriptes fb_dial.vbs von Michael Engelke auf eine Powershell Variante.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#IBJS.net 20160803, in Anlehnung an fb_dial.vbs von Michael Engelke 2012 | |
#Fritz!Box Wählhilfe mit Powershell von Joachim Schubert ibjs.net 2016 | |
#Der Fritz-Box Benutzername für diesen Konstellation lautet NAS-Read | |
#Das encrypted Fritz-Box Passwort ist vorher in einer Datei Securestring.fb abzulegen. | |
#ConvertFrom-SecureString (read-host -AsSecureString -Prompt "Passwort ") >SecureString.fb | |
#Als Default Rufnummer nehme ich hier die Zeitansage der Telekom, die aber kostenpflichtig ist | |
#Alternativ nehme ich zum Testen eine interne Nummer wie **610, damit kann ich es zwar klingeln lassen, | |
#kann aber bisher die internen Gespräche nicht an das Wahlgerät **613 übergeben, es legt sofort auf. | |
#Zum Aufbau einer Verbindung lege ich eine sonst unbenutzte Festnetznummer auf das Zielgerät. | |
#Erprobung an Windows 7/ Powershell 5/ Gigaset A415 **613, Gigaset SL1 **610/ FritzBox 6360/Unity Media VoIP | |
#Die Übergabe des Anrufs erfolgt so: | |
#Das Script baut die Verbindung auf und zeigt es mit einem Rufzeichen= 3x Kammerton an. | |
#Sobald zu hören, am Wahlgerät die grüne Rufannahmetaste solange drücken, bis Wählhilfe Nummer am Display erscheint (ca. 1s) | |
#Das Rufzeichen ist am Wählgerät zu hören. | |
# | |
#Einbindung als Telefondienst per Registry: | |
#HKEY_CLASSES_ROOT\tel\shell\open\command | |
#[Reg_SZ]: "C:\WINDOWS\System32\WScript.exe" "C:\Windows\fb_dial.vbs" '%1' # altes vbs script wird nun ersetzt: | |
#[Reg_SZ]: "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" "C:\Windows\fb-dial.ps1" '%1' | |
#Dieses Script und SecureString.fb kommen nach C:\windows | |
#mit tel:01804100100 kann nun gewählt werden | |
# | |
Param([string]$Nummer="0180 4100100") #Zeitansage Telecom für 20 ct | |
# | |
function md5($text){ | |
$md5 = New-Object System.Security.Cryptography.MD5CryptoServiceProvider | |
$md5.ComputeHash([Text.Encoding]::utf8.getbytes($text))|%{$HC=''}{$HC+=$_.tostring("x2")}{$HC} | |
} | |
# | |
#Achtung [string] im Parameter nicht vergessen sonst wird aus 0175… -> 175… | |
#und sie lernen einen Anschluss Ihrer Nachbarschaft kennen | |
# | |
Function dial([string]$Nummer){ | |
if (!$Nummer){$Nummer="**610"} | |
#Nummernumwandlungfür Fritz in De, ohne Telefonanlage | |
$Nummer=([regex]::Replace($Nummer,"(?i)^tel:","")) | |
$Nummer=([regex]::Replace($Nummer,"^\+","00")) | |
$Nummer=[regex]::Replace($Nummer,"[^0-9*]","") | |
$Nummer=[regex]::Replace($Nummer,"0049","0") | |
$Password=get-content .\securestring.fb|ConvertTo-SecureString | |
$user="NAS-Read" | |
$hostfb="http://fritz.box" #$Host wird vom OS genutzt | |
$page_login= "/login_sid.lua" | |
$page_dial= "/fon_num/fonbook_list.lua?dial="+$Nummer+"&sid=" | |
$page_logout="/fon_num/fonbook_list.lua?logout=1&sid=" | |
$Ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Password) | |
$pass=[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($Ptr) | |
$R1 = Invoke-WebRequest ($hostfb+$page_login) | |
$Challenge=([xml]$R1).sessioninfo.challenge | |
$Code1=$Challenge+"-"+$Pass | |
$Code2=[char[]]$Code1|%{$Code2=""}{$Code2+=$_+[Char]0}{$Code2} | |
$Response= "response=" + $Challenge + "-" + $(md5($Code2)) | |
$Response+="&username="+$user #Response ist die Antwort auf die Challenge | |
$R2=Invoke-WebRequest -Uri ($hostfb+$page_login) -Method Post -Body $Response | |
$SID=([xml]($R2.Content)).ChildNodes.sid | |
$URiDial= $hostfb+$page_dial+$SID | |
$URILogout=$hostfb+$page_logout+$SID | |
$RequestCall=Invoke-WebRequest -Uri $URIDial | |
$RequestLogout=Invoke-WebRequest -Uri $URILogout | |
1..3|%{[console]::beep(440,1000);start-sleep(1)} | |
} | |
dial $Nummer | |
Mittwoch, Mai 04, 2016
Blogger+Code+Github
Wie kann Code am einfachsten veröffentlicht werden?
Wahrscheinlich mit GitHub.
https://gist.github.com
Dann bei Bedarf: create Secret|Public Gist, mit Name des Scripts, Bezeichnung, Kommentar....
Dann einbinden in Blogger , per copy des embed Inhaltes in die HTML Ansicht von Blogger.
Das entsprechende Script ist nicht unter Registerkarte Verfassen sichtbar, sondern nach Aufruf von Vorschau.
Powershell Beep:
Wahrscheinlich mit GitHub.
https://gist.github.com
Dann bei Bedarf: create Secret|Public Gist, mit Name des Scripts, Bezeichnung, Kommentar....
Dann einbinden in Blogger , per copy des embed Inhaltes in die HTML Ansicht von Blogger.
Das entsprechende Script ist nicht unter Registerkarte Verfassen sichtbar, sondern nach Aufruf von Vorschau.
Powershell Beep:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#ibjs.net 20160504 | |
1..3|%{[console]::beep(440,1000);start-sleep -seconds 1.5} | |
#F-A-C = Keyboard IDs 45,49,52 | |
45,49,52|%{27.5*[math]::Pow(2,($_-1)/12)}|%{[console]::beep($_,1000)} |
Dropbox + SnippingTool Problem
Problem:
DropBox 3.18.1 verhindert unter Windows 7 die Nutzung von Strg+Druck des OS eigenen SnippingTool und versucht statt dessen, selbst ScreenShots zu erstellen und zu verwalten.
Lösung:
uncheck: //DropBox/Einstellungen/Allgemein/"DropBox beim Systemstart starten"
starte Dropbox selbst, nachdem SnippingTool bereits läuft, mit eigenem Script:
//Systemsteuerung/Verwaltung/Aufgabenplanung/Aktionen/Aufgabe erstellen
Allgemein/Name: DropBox Start mit SnippingTool:
Trigger: bei Anmeldung
Aktion: Programm starten
Programm: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Argumente: -command C:\users\Public\Start-SnippingToolAndDropBox.ps1
Script:
Bemerkung:
Die Anzahl der DBHandles = 1500 entspricht in etwa der Stelle, an der das DropBox Icon in der Notification Area der TaskBar meines Systems den Status "Aktualisiert" anzeigt. Gegebenenfalls muss man diesen Wert selbt beim Start der eigenen Dropbox beobachten und anpassen. Ob es einen direkten Weg zur Ermittlung dieses Ereignisses gibt, ist mir unbekannt.
DropBox 3.18.1 verhindert unter Windows 7 die Nutzung von Strg+Druck des OS eigenen SnippingTool und versucht statt dessen, selbst ScreenShots zu erstellen und zu verwalten.
Lösung:
uncheck: //DropBox/Einstellungen/Allgemein/"DropBox beim Systemstart starten"
starte Dropbox selbst, nachdem SnippingTool bereits läuft, mit eigenem Script:
//Systemsteuerung/Verwaltung/Aufgabenplanung/Aktionen/Aufgabe erstellen
Allgemein/Name: DropBox Start mit SnippingTool:
Trigger: bei Anmeldung
Aktion: Programm starten
Programm: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Argumente: -command C:\users\Public\Start-SnippingToolAndDropBox.ps1
Script:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#ibjs.net 20160504 | |
<# Start des SnippingTools und gleichzeitiges Escape #>` | |
$wshell = new-object -com wscript.shell;` | |
Start-Process C:\Windows\system32\SnippingTool.exe;` | |
$wshell.SendKeys("{ESCAPE}") | |
start-sleep -Milliseconds 2000 | |
#Jetzt wird erst Dropbox gestartet | |
& "C:\Program Files (x86)\Dropbox\Client\Dropbox.exe" /home | |
$DBHandles={try {(get-process -name dropbox -erroraction 'STOP').handles} catch {}} | |
$StopSnip={try {stop-process -name SnippingTool -ErrorAction 'STOP' -force} catch {}} | |
While ((& $DBHandles) -lt 1500) {};& $StopSnip |
Bemerkung:
Die Anzahl der DBHandles = 1500 entspricht in etwa der Stelle, an der das DropBox Icon in der Notification Area der TaskBar meines Systems den Status "Aktualisiert" anzeigt. Gegebenenfalls muss man diesen Wert selbt beim Start der eigenen Dropbox beobachten und anpassen. Ob es einen direkten Weg zur Ermittlung dieses Ereignisses gibt, ist mir unbekannt.
Abonnieren
Posts (Atom)