Declare functions at the beginning of the script

Hello,
I’m a complete ps newbie and please correct me, in case this is not the right forum!
My question is how I can declare a function in ps at the beginning of the script and initialize the function at the end of the script. I’m looking for something like this.
Thank you very much for your help!

#################################################################
#define function at the beginning of the code
function: Build-EmailBody #here I get an error: “The term function: is not recognized”…

#main function (just contains the basic functionalities, no long values, so that it is easily to oversee)
main{
$params = @{
From = $sender
To = $recipient
SmtpServer = $smtpServer
BodyAsHtml = Build-EmailBody()
Body = $body
Subject = “test”
}
Send-MailMessage @params
}

#initialization of the Build-EmailBody-Function
#this function is very long because of the base64 image-code
#to give the script a good strcture, I wan to put this function to the end of the code
function Build-EmailBody{
$letterBeginning = Get-content “C:\bla\test1.html”
$letterEnd = Get-content “C:\bla\test2.html”
#image in base64-code
$img2 =@"
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
"@
$img2_html = “
$emailBody = $letterBeginning + $img2 + $letterEnd
return $emailBody}

You’ll need to start by learning the correct syntax for functions in PowerShell :wink: as what you’re doing isn’t PowerShell.

An example of a function, followed by a call to that function:

function Get-Something {
 Param(
 )
}

Get-Something

“function:” is a reference to the built-in FUNCTION PSDrive. You don’t use “function:” to declare a function, and a function isn’t declare solely with a name, as you’ve done with your “main.” There’s also no reason to use “main” as a procedure name, and in fact that doesn’t comply with PowerShell naming conventions.

As for this…

I'm a complete ps newbie and please correct me, in case this is not the right forum!

Any of the PowerShell (PoSH) forums are the place to view samples, search for examples, and ask questions.

However, as a complete noob to any language, it’s best to do some ‘no cost online courses’, before you dive into it. Otherwise you are going to have unnecessary frustration, issues, and wrong thinking. As DonJ just pointed.

There are far to many freely available training options, article, resources, and built-in online help to get you where you need to be at the start. Without wrapping yourself in a baseline, you will easily come to potentially hate what you are trying to do, because of guessing about things, assuming something should work, or work like X or Y like something else. Don’t do this to yourself. Take the time, even just a few days, to watch the online videos for beginning PowerShell.

Here are few (well, a bunch), to get you on your way to a better understanding and experience with all that is PowerShell

Use the default built-in help

    # Get parameters, examples, full and Online help for a cmdlet or function

    (Get-Command -Name Get-Content).Parameters
    Get-help -Name Get-Content -Examples
    Get-help -Name Get-Content -Full
    Get-help -Name Get-Content -Online

    Get-Help -Name about_* 
    Get-Help -Name about_Functions


    # All Help topics locations
    explorer "$pshome\$($Host.CurrentCulture.Name)"

Resource list

Microsoft Virtual Academy 'mva.microsoft.com/liveevents/powershell-jumpstart ' 'mva.microsoft.com/en-us/training-courses/getting-started-with-microsoft-powershell-8276' 'mva.microsoft.com/search/SearchResults.aspx#!q=PowerShell&lang=1033'

Microsoft Channe9
Getting Started with PowerShell 3.0 | Microsoft Learn
Shows | Microsoft Learn&lang-en=en&pubDate=year’

Youtube
'youtube.com/watch?v=wrSlfAfZ49E 'youtube.com/results?search_query=beginning+powershell
youtube.com/results?search_query=powershell+ise+scripting+for+beginners

Windows PowerShell Survival Guide
Sign in to your Microsoft account

eBooks…
blogs.technet.microsoft.com/pstips/2014/05/26/free-powershell-ebooks
'idera.com/resourcecentral/whitepapers/powershell-ebookpowershell.org/ebooks

Books Learn Windows PowerShell in a Month of Lunches
Learn Windows PowerShell in a Month of Lunches

Windows PowerShell in Action, Third Edition
amazon.com/s/ref=nb_sb_ss_c_1_28/133-0145057-4953560?url=search-alias%3Daps&field-keywords=windows+powershell+in+action%2C+third+edition&sprefix=Windows+PowerShell+in+Action%2Caps%2C220&crid=1IS8LZE5E6EIE’

Windows PowerShell Cookbook, 2nd Edition
Windows PowerShell Cookbook, 2nd Edition [Book]

And start with lots of examples.
'powershellgallery.com 'Browse code samples | Microsoft LearnScripting Blog [archived] - Formerly known as the "Hey, Scripting Guy!" blog

Then, learn by doing, by discovery.

1 - Everything you'd normally do at the DOS command prompt or VBScript, etc... start doing all that in the PowerShell ISE or PowerShell Console host or Visual Studio Code using the PowerShell Extension. Using only the normal DOS commands and then do the same with the cmdlets which do the same thing.

Windows PowerShell equivalents for common networking commands (IPCONFIG, PING, NSLOOKUP)
blogs.technet.microsoft.com/josebda/2015/04/18/windows-powershell-equivalents-for-common-networking-commands-ipconfig-ping-nslookup

Know that interactive DOS commands don’t work in the PowerShell ISE natively. You can make them work.

See Using Windows PowerShell to run old command line tools (and their weirdest parameters)
Using Windows PowerShell to run old command line tools (and their weirdest parameters) | Microsoft Learn

Note: Sometimes it is just easier to use the old DOS commands, even in PowerShell scripts, because though they may not be as flexible, they are more concise. I wrote a function that allows me to do this sort of stuff to avoid having to type all this stuff all the time.

2 - Read the help files and about_* files, leverage the examples in the help files. Tweak the examples in the help files.

3 - Use any Windows tool that will write the baseline code for you (which you can then tweak), such as the Windows Server 2012 ADAC console leveraging the PowerShell History Viewer.

Active Directory Administrative Center:
Getting Started ‘Active Directory Administrative Center: Getting Started | Microsoft Learn

Active Directory Administrative Center
Introduction to Active Directory Administrative Center Enhancements (Level 100) | Microsoft Learn

Step-By-Step: Utilizing PowerShell History Viewer in Windows Server 2012 R2
Step-By-Step: Utilizing PowerShell History Viewer in Windows Server 2012 R2 | Microsoft Learn

4 - Make a copy of…

C:\Windows\System32\WindowsPowerShell\v1.0\Modules …

then, open the scripts, modules, functions in the default Windows PowerShell folder, in the PowerShell ISE or VSCode and review that’s going on in them. Make a copy of them to play with and tweak. Also look for any other location that has .ps files, make a copy and review.

5 - You can also directly look at many of the function code in PowerShell by doing this approach…

Spying on Function Source Code
Spying on Function Source Code | IderaBlog

6 - Get real familiar with the PowerShell Snippets feature. press CTRL+J to see what is there.

7 - Other MS produces and 3rdP vendor products, will show the PowerShell code they are using under the covers. As you use the Window GUI’s pause a minute to look for the code on the screen and copy and save that off for your review.

8 - Continue the video training, MVA, ‘Shows | Microsoft Learn’, YouTube, Plural, etc.

9 - Keep a library of everything you find in a central location, OneNote, doc, Github, or your own module for easy recall / research.

Hello Don Jones, hello postanote,
thank you for your friendly help!
I will try to find some time to watch the learning videos which you recomended me, postanote. Thank you for the effort of seeking and posting them all!
However I have to write this script for my work and so I have to finish it soon.
I have understood, that it is not the style of PS to first define and then initialize functions, thank you John. My problem is that I do have this very long block of base64-Code in my script, which I need in the middle and which I always have to scroll up…and scroll down and so on! So by now I do have the main instructions in one function at the beginning an I call this function at the end of the script. I will give the main function a more powershell-like name, like “Start-Script”. However I have the feeling that this is also not what you meant :frowning: Scrolling though the code lasts so long and is not so helpful when you are trying to work on the code. Have you got an idea, is there another way of structuring the code?

There is another issue I’m dealing with, and it would be super if you could help me with this, too.
My task is to send an e-mail automatically with embedded pictures.

This works when the script reds the pictures from a path, but it would be better for the purpose to have everything in one file.
Example for taking images from a path and embedding them:
$attachment2 = Get-Item “C:\Windows\ACO\Scripts\WelcomeEmail\SPMail1.png”
$img2 = “” -f ($attachment2.Name)"

So I have tried to encode the pictures in base64 and put them in the code. I’ll show you how at the end of my post.

When I test the base64-code on an internet webpage, it works, however when I send the e-mail it works not!! I have tried a lot (still like PS, don’t worry), and to me it looks as if the code is correct but not working in our enterprise network.

So there is another method of embedding a picture in an e-mail, by giving the image an id and refering to it via cid in the html code.

I haven’t found a good example for this over google- do you maybe have one for me? That would be great. Or do you have an idea why the embedding of pictures is not working?

Thank you very much and kind regards
Fa

Embed an image inline.
$img2txt =@"
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
"@

$img2_html = @"
test
"@

#And tis is how I buid the email body and send the email
#put everything together in the body
$emailBody = @"

Guten Tag $toName ,
 
 
a:link { color:#0563c1; text-decoration: underline; }
im Namen der IT heiße ich Sie herzlich willkommen bei ACO!
Wir hoffen Sie hatten einen angenehmen Start bei uns.

Einige Tage sind Sie bereits bei ACO, daher möchten wir uns gerne kurz bei Ihnen vorstellen:
Die IT bei ACO wird zentral aus der Academy in Rendsburg gesteuert und unser User-Helpdesk steht Ihnen in der Zeit von Montag-Donnerstag von 6:00 – 16:45Uhr und Freitags von 6:00 – 15:15Uhr über unser 
<a href="https://aco.service-now.com/sp"> Service Portal </a> $img2

$letterEnd
 
$fromName

"@

return $emailBody
}