Splitting a string the weird way

I love using JSON, as Powershell can really good handle it from scratch and you need it a lot if handling Rest-APIs.
So basically when I stumbled across an issue to seperate s specific string into values, I wondered if JSON could help me.
The string basically is looking like: „CLIENTNAME=aaaaaa&CLIENTADDRESS=10.10.10.10“ (the more versatile users under you might recognize the CS-URI-QUERY of Citrix Workspace App).

So whats the challenge?
I want to parse this string and even if there is more information inside like „Blahblah=uusudfu“, I only want Clientname and Address information.

This is my solution with using JSON:

$inputvalue="CLIENTNAME=aaaaaa&CLIENTADDRESS=10.10.10.10"

$Result="{`"$($inputvalue -replace '=','":"' -replace '&','","')`"}" | ConvertFrom-Json
$Result

What is the output of this?

IP          ClientName
--          ----------
10.10.10.10 aaaaaa

Here we have a very nice PS-Object.

Now, what did I do?
I added to the string the brackets around it to make it a JSON and then replaced all delimiters by the approriate values. The Output looks like this after the replaces and the adding ot {} and before the ConvertFrom-Json:

{"CLIENTNAME":"aaaaaa","CLIENTADDRESS":"10.10.10.10"}

kind of weird way, but this code has for my usage a lot of advantages:

1. The value-pairs can be in any order, so „CLIENTNAME=aaaaaa&CLIENTADDRESS=10.10.10.10“ or „CLIENTADDRESS=10.10.10.10&CLIENTNAME=aaaaaa“
delivers the same output

2. Any additional values that are in the string will be dropped, eg:
„CLIENTNAME=aaaaaa&CLIENTADDRESS=10.10.10.10&USERNAME=jsdfhdjkfhjs&TEST=hgjhggj“

Whats very import: the data has to have the same look, as additional „“ around a value will make this scriptblock break!

Update:

Mathias R. Jessen posted me an even better way on Twitter:

$inputvalue="CLIENTNAME=aaaaaa&CLIENTADDRESS=10.10.10.10"

$Result=$inputvalue -replace '&',"`n" | ConvertFrom-StringData
$Result

This is now really a very short code for doing this job. Thanks Mathias, this is how the powershell community works together!

Veröffentlicht unter Powershell | Verschlagwortet mit , | Schreib einen Kommentar

Remove System Proxy for Invoke-WebRequest and Invoke-RestMethod

We recently had a problem that accessing a function app through Invoke-RestMethod with using a private endpoint failed, as the System default proxy will be queried. In Powershell 7.x there is a switch for disabling the proxy (-NoProxy) but there is none for Powershell 5.1. So we were searching on the web but actually did not find a nice solution. All were talking about using a proxy, which can be easily done with the „-proxy“-Switch, but you cannot set this to „none“. So we finally found a solution, by first creating a new WebSession, setting the proxy to nothing and then handling all upcoming Invoke-RestMethod or Invoke-WebSession with a predefined WebSession. This will override the current user-default-proxy and will then just „go local“

So here it is:

$Proxy=New-object System.Net.WebProxy
$WebSession=new-object Microsoft.PowerShell.Commands.WebRequestSession
$WebSession.Proxy=$Proxy
$Answer=Invoke-RestMethod -Method Post -Uri "https://my.restmethod.site" -WebSession $WebSession 
Veröffentlicht unter Allgemein, IT, Powershell | Verschlagwortet mit , , | Schreib einen Kommentar

Synology Mediathek Script

This is the first release of the Synology German Mediathek download script.

It queries the german mediathek website https://mediathekviewweb.de and uses these informations to start download-jobs on the Synology.

So in short, what does it do?

  1. Query Mediathekviewweb API for all airings matching the given search criteria
  2. Filter by:
    1. Number of days back that should be presented
    2. Exclude airings that match the ExcludeTitlesKeywords List
    3. Airings that are under MinimumSize or under MinimumLength
  3. Sort the list descending and use Out-Gridview to present the user with the choice
  4. If the user has selected some airings, the script will continue
  5. Now airing by airing will be checked if:
    1. Filename is requested to be set manual –> User will be requested for a name for each
    2. Autorename is choosen for the title (strong recommended for all Configurations)
      1. New Filename will be built by the configured setting AutoRenameString, Timestamp is „yyMMdd_HHmm_“
      2. Replace Character as of CharacterReplaceTable to prevent filesystem problems (eg. /|:)
  6. All files that need a rename after download will be added to a RenameTaskList
  7. Authenticate to NAS
  8. Start Download Jobs, only if File with same filename is not already there. Cleanup NAS-History of Downloadjobs of the same URL, so we get the right status
  9. Wait for the Downloadjobs that need a rename until they are downloaded. Check NAS every 10 Seconds to not overload
  10. Rename the downloaded files to the wished name
  11. Logoff from NAS

There is no real documentation so far except the inline documentation. If you have questions, contact me through Twitter. This script is provided as is, no warranty that it will work in all situations! It should work on Powershell 5.1 and Powershell 7.x, although it is usually tested on PS5.1.
It was written for myself to optimize download of movies/series from german mediatheks.

The Script has been published on github:
https://github.com/MrFly72/Synology_Mediathek_Download

Veröffentlicht unter Allgemein, IT, Powershell | Verschlagwortet mit , , , | Schreib einen Kommentar

Unser neues Wohnmobil

Wir haben zugeschlagen und uns ein Wohnmobil gekauft.

So sieht es aus:

Eine schöne Frontansicht. Ganz Klasse: LED Tagfahrlicht, steht ihm wirklich gut!

Sitzgruppe mit ausklappbarem Tisch für bis zu 4 Personen

Die gemütliche Sitzbank, die man auch in der Neigung verstellen kann

Die Chairmansitze, die umgedreht werden können und damit als gemütlicher Sitz am Tisch genutzt werden

Die Beauty-Lounge bietet genug Platz und dazu auch eine Dusche

Liegefläche hinten mit ca. 1,94*1,40 völlig ausreichend!

Zwei Gasplatten mit Piezzo-Zündung, mehr braucht man nicht 🙂

95l Kompressorkühlschrank (12V) mit großem Gefrierfach. Der kühlt teilweise schon zu gut!

So kann es losgehen 😉

Und hier ein YouTube Video:

https://www.youtube.com/watch?v=HxuCjkIEoGI

Veröffentlicht unter Wohnmobil | Verschlagwortet mit | Kommentare deaktiviert für Unser neues Wohnmobil

www.lambrecht.de nun mit SSL

Da nächstes Jahr alle Suchmaschinen und einige Browser darauf hinweisen, dass keine SSL Verbindung besteht, habe ich nun auch auf der www.lambrecht.de SSL/HTTPS aktiviert.
Strato bietet seit einiger Zeit ein kostenloses Zertifikat für eine Domain an.
Gut dass ich dieses beim „Schwenk“ auf die neue Plattform gemacht habe, denn einige Links mussten im WordPress danach angepasst werden.

Veröffentlicht unter Allgemein, Website | Kommentare deaktiviert für www.lambrecht.de nun mit SSL

Updates durchgeführt

Heute habe ich sowohl PHP wie auch mysql auf den aktuellsten Stand gebracht. Dies sollte die Website nochmal beschleunigen. 

Der mysql Wechsel kann nur durch Datenbankwechsel mit Export der alten Database und Import in einer neuen Datenbank durchgeführt werden. Nicht wirklich komfortabel, aber gut wenn man sich ein bisschen mit IT auskennt 🙂

Gruß Thorsten

 

Veröffentlicht unter Allgemein, Website | Kommentare deaktiviert für Updates durchgeführt

Neues Layout

So, die Webseite ist in neuem Design.

Die Standard-Site ist nun WordPress und es gibt nur noch einen Link zur alten Site: https://www.lambrecht.de/old

So sollte die ganze Webseite wieder etwas einfacher zu bearbeiten sein und vielleicht mal wieder etwas aktueller werden. 🙂

Gruß

Thorsten

Veröffentlicht unter Allgemein, Website | Kommentare deaktiviert für Neues Layout