ineedhelp 10 Posted June 22 Report Share Posted June 22 Hallo Communtiy. Gerade bin ich über das Splatting gestolpert und finde es feine Sache, um die PS-Skripte lesbarer zu machen. Wie muss der Ausdruck aussehen, wenn ich das Hashtable direkt beim Aufruf der Funktion/des Commandlets definiere und übergeben möchte? Bisher habe ich dazu nichts im Netz gefunden und Ich habe auch schon die unterschiedlichsten Sachen ausprobiert. # My Splatting tries # ------------------ function MyFunc { param ( [String]$paramOne, [String]$paramTwo, [String]$paramThree, [String]$paramFour ) Write-host Write-Host '--- In MyFunc ----' Write-Host "This is $paramOne" Write-Host "This is $paramTwo" Write-Host "This is $paramThree" Write-Host "This is $paramFour" } $SplattedParams = @{ paramOne = 'One.'; paramTwo = 'Two.'; paramThree = 'Three.'; paramFour = 'Four.' } MyFunc @SplattedParams @{ paramOne = 'One.'; paramTwo = 'Two.'; paramThree = 'Three.'; paramFour = 'Four.' } | ForEach-Object { MyFunc @_ } # NOT working!!! MyFunc @${ paramOne = 'One.'; paramTwo = 'Two.'; paramThree = 'Three.'; paramFour = 'Four.' } Danke für die Hilfe. Quote Link to comment
Solution cj_berlin 571 Posted June 22 Solution Report Share Posted June 22 Ja, Splatting braucht einen Variablennamen, bei dem Du $ durch @ ersetzt. Einen Wert dort zu übergeben, ist nicht vorgesehen. 1 Quote Link to comment
BOfH_666 398 Posted June 22 Report Share Posted June 22 Da es beim Splatting darum geht, den Code leichter lesbar zu machen, wenn man einer Funktion sehr viele Parameter übergeben möchte, macht meiner Meinung nach nur die Form in Deinem ersten Beispiel Sinn. Schon Dein zweites Beispiel finde ich nicht einfacher zu lesen. Übrigens kannst Du in der Hashtable die abschließenden Semikola am Zeilenende weglassen. Das macht es meiner Meinung nach noch besser lesbar. Ich empfehle immer noch gern diese Lektüre hier: The Unofficial PowerShell Best Practices and Style Guide 1 Quote Link to comment
ineedhelp 10 Posted June 23 Author Report Share Posted June 23 vor 20 Stunden schrieb BOfH_666: Schon Dein zweites Beispiel finde ich nicht einfacher zu lesen. Mein zweites Beispiel hatte ich auch unvorteilhaft formatiert. Da ging es mir nur darum, das Hashtable an die Funktion weiterzuleiten. Vielleicht ist es ja so bisser lesbar. # My Splatting tries # ------------------ function MyFunc { param ( [String]$paramOne, [String]$paramTwo, [String]$paramThree, [String]$paramFour ) Write-host Write-Host '--- In MyFunc ----' Write-Host "This is $paramOne" Write-Host "This is $paramTwo" Write-Host "This is $paramThree" Write-Host "This is $paramFour" } @{ paramOne = 'This is paramter One.' paramTwo = 'This is paramter Two.' paramThree = 'This is paramter Three.' paramFour = 'This is paramter Four.' } | ForEach-Object { MyFunc @_ } vor 20 Stunden schrieb BOfH_666: Ich empfehle immer noch gern diese Lektüre hier: The Unofficial PowerShell Best Practices and Style Guide Vielen Dank für die Lektüre. Die habe ich mir gleich zu Gemüte geführt. Da ich der Einzige in unserem zehn Mannteam ist, der Windows PowerShell halbwegs beherrsche, könnte ich gleich Standards für die Skripterstellung im Team definieren. Quote Link to comment
daabm 693 Posted June 23 Report Share Posted June 23 Am 22.6.2022 um 12:19 schrieb ineedhelp: $SplattedParams = @{ paramOne = 'One.'; paramTwo = 'Two.'; paramThree = 'Three.'; paramFour = 'Four.' } MyFunc @SplattedParams Was spricht aus Deiner Sicht denn gegen diese Variante? Das ist die lesbarste, und es dürfte auch die meistverwendete sein. Bis auf die ';' hinten, die lassen Menschen, die nicht aus C# kommen, eher weg Quote Link to comment
ineedhelp 10 Posted June 24 Author Report Share Posted June 24 vor 16 Stunden schrieb daabm: Was spricht aus Deiner Sicht denn gegen diese Variante? Das ist die lesbarste, und es dürfte auch die meistverwendete sein. Ich wollte die Deklarierung der Variable/des Hashtables vermeiden, weil ich diese nur einmal beim Aufruf der Funktion/des Cmdlets benötige. Ich denke auch, dass das erste Beispiel das meistverwendete ist und werde die Splatting-Technik so nutzen, wie sie allemein ist. Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.