Install FTP on your Raspberry

Run update

sudo apt-get update

Install ftp

sudo apt-get install vsftpd

You get a message about disk usage enter Yes

Now open up the config file by entering the following command:

sudo nano /etc/vsftpd.conf

In here add or uncomment(Remove the #) for the following settings.

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES

Restart ftp server

sudo service vsftpd restart

And now you can connect with filezilla to the raspberry with SFTP (port 22)

Install webserver on Raspberry Pi

Download Raspbian
Place it on SD card
Start the raspberry.

Login with: pi (root)
Password: raspberry

Type sudo raspi-config to start the config.

Change the password
Change the Hostname
Change Localisation Options -> Change Timezone to Europe, Amsterdam
Change Interfacing Options -> Enable SSH
Update the Raspberry

Exit menu
Reboot the raspberry sudo reboot

Open putty and connect to the raspberry and login

Install Apache webserver on your Raspberry

sudo apt-get install apache2 -y

Install PHP

sudo apt-get install php5 libapache2-mod-php5 -y

13-03-2018
sudo apt-get install libapache2-mod-php

Install Mysql

sudo apt-get install mysql-server php5-mysql -y

You get a message to enter MySQL root password. Enter this password and Reenter the password in the next screen

Secure your MySQL

sudo mysql_secure_installation

and enter the MySQL root password

You get the message to change the password. Type No

Now you get some questions. Answer is Yes

Make from a Powershell script an Exe file

I use this program to make scripts and easy added to Landesk. And it works for Windows 10.

Start iexpress

Click on Next

Click on Next

Enter a Title of the package and click on Next

Click on Next

Click on Next

Add the powershell script (*.ps1) and click on Next

Fill in at Install Program: powershell.exe -noprofile -Sta -executionpolicy bypass -File <Powershell scriptname.ps1>
And click on Next

Click on Next

Click on Next

Where to save the exe file. Click on browse. Select the options what you want and click on Next

When the install is done, do you want to reboot?
I always use No restart. Click on Next

Choose if you want to save the SED file and Click on Next.

Click on Next to create Package

The package is created. Click on Finish and test the application.

Outlook – Save attachements from multiple emails at once

A department complained that they recieve a lot of emails with attachements to save on the network drive. They needed to open all the emails one by one and save the attachement. I searched on the internet and i found mAttachementSaver

If you can’t download this. Below is the code of mAttachmentSaver.bas

Used the content of the website.

Save attachments from multiple selected items in Outlook (VBA)

Save attachments from multiple selected items in Outlook (VBA)

Introduction

This VBA sample illustrates how to save attachments from multiple selected items in Outlook.

Scenarios

When multiple items are selected, the Save Attachments option in the File menu will be grayed out, and it’s inconvenient to save attachments one by one. This script is useful and can be used to save attachments from multiple selected items all at once.

Script

Import the “mAttachmentSaver.bas” file.

Step1. Press Alt+F11 to open the VBE in Outlook.

Step2. Drag the “mAttachmentSaver.bas” file to the Project Explorer (Press Ctrl+R if you cannot see it) or via File >> Import File… (Ctrl+M).

Run the ExecuteSaving macro to save attachments.

Step3. Go back to Outlook UI, and then press Alt+F8 to open the Macros window.

Step4. Select “ExecuteSaving” in the names list, and then click the Run button (Please remember to select Outlook item(s) before running this macro).

Step5. Select a specific folder to save attachments from Browse For Folder dialog box, and then click the OK button.

 

Here are some code snippets for your references. To get the complete script sample, please click the Download button at the beginning of this page.

Visual Basic
Edit|Remove
' ###################################### 
' Run this macro for saving attachments. 
' ###################################### 
Public Sub ExecuteSaving() 
    Dim lNum As Long 
     
    lNum = SaveAttachmentsFromSelection 
     
    If lNum > 0 Then 
        MsgBox CStr(lNum) & " attachment(s) was(were) saved successfully.", vbInformation, "Message from Attachment Saver" 
    Else 
        MsgBox "No attachment(s) in the selected Outlook items.", vbInformation, "Message from Attachment Saver" 
    End If 
End Sub

Note

1. Please make sure that macros are enabled in Outlook.

For Outlook 2010:
File >> Options >> Trust Center >> Trust Center Settings >> Macro Settings >> Enable all macros >> OK >> OK >> Restart Outlook

For Outlook 2007:
Tools >> Macro >> Security… >> Macro >> Security >> No security check for macros >> OK >> Restart Outlook

For Outlook 2003:
Tools >> Macro >> Security… >> Macro >> Security >> Low >> OK >> Restart Outlook

2. This macro will save all attachments even those are used in the item body.

3. If the attachment file to be saved (let’s call “FileA.txt”) has already existed in the folder (FileA.txt, FileB.txt, FileC.txt … and so on), the date time string will be appended to the attachment file name automatically.
For example:
The “FileA.txt” file may be named as “FileA_05201830669.txt”.
“05” means the current month;
“20” means the current day;
“18” means the current hour;
“30” means the current minute;
“669” means the current millisecond.

4. In Windows file system, the specified path cannot be so long that you cannot create or save a file. The maximum path length limitation is 260 characters. So sometimes some attachments cannot be saved successfully if the specified path is over 260 characters.

Attribute VB_Name = "mAttachmentSaver"
'---------------------------------------------------------------------------------
' The sample scripts are not supported under any Microsoft standard support
' program or service. The sample scripts are provided AS IS without warranty
' of any kind. Microsoft further disclaims all implied warranties including,
' without limitation, any implied warranties of merchantability or of fitness for
' a particular purpose. The entire risk arising out of the use or performance of
' the sample scripts and documentation remains with you. In no event shall
' Microsoft, its authors, or anyone else involved in the creation, production, or
' delivery of the scripts be liable for any damages whatsoever (including,
' without limitation, damages for loss of business profits, business interruption,
' loss of business information, or other pecuniary loss) arising out of the use
' of or inability to use the sample scripts or documentation, even if Microsoft
' has been advised of the possibility of such damages.
'---------------------------------------------------------------------------------

Option Explicit

' *****************
' For Outlook 2010.
' *****************
#If VBA7 Then
    ' The window handle of Outlook.
    Private lHwnd As LongPtr
    
    ' /* API declarations. */
    Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _
        ByVal lpWindowName As String) As LongPtr
    
' *****************************************
' For the previous version of Outlook 2010.
' *****************************************
#Else
    ' The window handle of Outlook.
    Private lHwnd As Long
    
    ' /* API declarations. */
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _
        ByVal lpWindowName As String) As Long
#End If

' The class name of Outlook window.
Private Const olAppCLSN As String = "rctrl_renwnd32"
' Windows desktop - the virtual folder that is the root of the namespace.
Private Const CSIDL_DESKTOP = &H0
' Only return file system directories. If the user selects folders that are not part of the file system, the OK button is grayed.
Private Const BIF_RETURNONLYFSDIRS = &H1
' Do not include network folders below the domain level in the dialog box's tree view control.
Private Const BIF_DONTGOBELOWDOMAIN = &H2
' The maximum length for a path is 260 characters.
Private Const MAX_PATH = 260

' ######################################################
'  Returns the number of attachements in the selection.
' ######################################################
Public Function SaveAttachmentsFromSelection() As Long
    Dim objFSO              As Object       ' Computer's file system object.
    Dim objShell            As Object       ' Windows Shell application object.
    Dim objFolder           As Object       ' The selected folder object from Browse for Folder dialog box.
    Dim objItem             As Object       ' A specific member of a Collection object either by position or by key.
    Dim selItems            As Selection    ' A collection of Outlook item objects in a folder.
    Dim atmt                As Attachment   ' A document or link to a document contained in an Outlook item.
    Dim strAtmtPath         As String       ' The full saving path of the attachment.
    Dim strAtmtFullName     As String       ' The full name of an attachment.
    Dim strAtmtName(1)      As String       ' strAtmtName(0): to save the name; strAtmtName(1): to save the file extension. They are separated by dot of an attachment file name.
    Dim strAtmtNameTemp     As String       ' To save a temporary attachment file name.
    Dim intDotPosition      As Integer      ' The dot position in an attachment name.
    Dim atmts               As Attachments  ' A set of Attachment objects that represent the attachments in an Outlook item.
    Dim lCountEachItem      As Long         ' The number of attachments in each Outlook item.
    Dim lCountAllItems      As Long         ' The number of attachments in all Outlook items.
    Dim strFolderPath       As String       ' The selected folder path.
    Dim blnIsEnd            As Boolean      ' End all code execution.
    Dim blnIsSave           As Boolean      ' Consider if it is need to save.
    
    blnIsEnd = False
    blnIsSave = False
    lCountAllItems = 0
    
    On Error Resume Next
    
    Set selItems = ActiveExplorer.Selection
    
    If Err.Number = 0 Then
        
        ' Get the handle of Outlook window.
        lHwnd = FindWindow(olAppCLSN, vbNullString)
        
        If lHwnd <> 0 Then
            
            ' /* Create a Shell application object to pop-up BrowseForFolder dialog box. */
            Set objShell = CreateObject("Shell.Application")
            Set objFSO = CreateObject("Scripting.FileSystemObject")
            Set objFolder = objShell.BrowseForFolder(lHwnd, "Select folder to save attachments:", _
                                                     BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN, CSIDL_DESKTOP)
            
            ' /* Failed to create the Shell application. */
            If Err.Number <> 0 Then
                MsgBox "Run-time error '" & CStr(Err.Number) & " (0x" & CStr(Hex(Err.Number)) & ")':" & vbNewLine & _
                       Err.Description & ".", vbCritical, "Error from Attachment Saver"
                blnIsEnd = True
                GoTo PROC_EXIT
            End If
            
            If objFolder Is Nothing Then
                strFolderPath = ""
                blnIsEnd = True
                GoTo PROC_EXIT
            Else
                strFolderPath = CGPath(objFolder.Self.Path)
                
                ' /* Go through each item in the selection. */
                For Each objItem In selItems
                    lCountEachItem = objItem.Attachments.Count
                    
                    ' /* If the current item contains attachments. */
                    If lCountEachItem > 0 Then
                        Set atmts = objItem.Attachments
                        
                        ' /* Go through each attachment in the current item. */
                        For Each atmt In atmts
                            
                            ' Get the full name of the current attachment.
                            strAtmtFullName = atmt.FileName
                            
                            ' Find the dot postion in atmtFullName.
                            intDotPosition = InStrRev(strAtmtFullName, ".")
                            
                            ' Get the name.
                            strAtmtName(0) = Left$(strAtmtFullName, intDotPosition - 1)
                            ' Get the file extension.
                            strAtmtName(1) = Right$(strAtmtFullName, Len(strAtmtFullName) - intDotPosition)
                            ' Get the full saving path of the current attachment.
                            strAtmtPath = strFolderPath & atmt.FileName
                            
                            ' /* If the length of the saving path is not larger than 260 characters.*/
                            If Len(strAtmtPath) <= MAX_PATH Then
                                ' True: This attachment can be saved.
                                blnIsSave = True
                                
                                ' /* Loop until getting the file name which does not exist in the folder. */
                                Do While objFSO.FileExists(strAtmtPath)
                                    strAtmtNameTemp = strAtmtName(0) & _
                                                      Format(Now, "_mmddhhmmss") & _
                                                      Format(Timer * 1000 Mod 1000, "000")
                                    strAtmtPath = strFolderPath & strAtmtNameTemp & "." & strAtmtName(1)
                                        
                                    ' /* If the length of the saving path is over 260 characters.*/
                                    If Len(strAtmtPath) > MAX_PATH Then
                                        lCountEachItem = lCountEachItem - 1
                                        ' False: This attachment cannot be saved.
                                        blnIsSave = False
                                        Exit Do
                                    End If
                                Loop
                                
                                ' /* Save the current attachment if it is a valid file name. */
                                If blnIsSave Then atmt.SaveAsFile strAtmtPath
                            Else
                                lCountEachItem = lCountEachItem - 1
                            End If
                        Next
                    End If
                    
                    ' Count the number of attachments in all Outlook items.
                    lCountAllItems = lCountAllItems + lCountEachItem
                Next
            End If
        Else
            MsgBox "Failed to get the handle of Outlook window!", vbCritical, "Error from Attachment Saver"
            blnIsEnd = True
            GoTo PROC_EXIT
        End If
        
    ' /* For run-time error:
    '    The Explorer has been closed and cannot be used for further operations.
    '    Review your code and restart Outlook. */
    Else
        MsgBox "Please select an Outlook item at least.", vbExclamation, "Message from Attachment Saver"
        blnIsEnd = True
    End If
    
PROC_EXIT:
    SaveAttachmentsFromSelection = lCountAllItems
    
    ' /* Release memory. */
    If Not (objFSO Is Nothing) Then Set objFSO = Nothing
    If Not (objItem Is Nothing) Then Set objItem = Nothing
    If Not (selItems Is Nothing) Then Set selItems = Nothing
    If Not (atmt Is Nothing) Then Set atmt = Nothing
    If Not (atmts Is Nothing) Then Set atmts = Nothing
    
    ' /* End all code execution if the value of blnIsEnd is True. */
    If blnIsEnd Then End
End Function

' #####################
' Convert general path.
' #####################
Public Function CGPath(ByVal Path As String) As String
    If Right(Path, 1) <> "\" Then Path = Path & "\"
    CGPath = Path
End Function

' ######################################
' Run this macro for saving attachments.
' ######################################
Public Sub ExecuteSaving()
    Dim lNum As Long
    
    lNum = SaveAttachmentsFromSelection
    
    If lNum > 0 Then
        MsgBox CStr(lNum) & " attachment(s) was(were) saved successfully.", vbInformation, "Message from Attachment Saver"
    Else
        MsgBox "No attachment(s) in the selected Outlook items.", vbInformation, "Message from Attachment Saver"
    End If
End Sub

 

Create a reboot popup with Landesk

The problem what I had with Landesk, when software is installed I want to inform the user to reboot. This is not configured in Landesk.

I made this script that use landesk client on the system to create a popup for a reboot.

@echo off
cls
echo --------------------------------------------------------
echo .
echo .
echo .                     Reboot
echo .         Window will close once installed

If "%PROCESSOR_ARCHITECTURE%" == "AMD64" GOTO X64
IF "%PROCESSOR_ARCHITECTURE%" == "x86" GOTO x86

GOTO EXIT


:: Wait for 20 seconds
ping -n 20 127.0.0.1 > NUL

:x86


REM Run Reboot
"C:\Program Files\LANDesk\LDClient\ldReboot.exe"


GOTO EXIT



:X64

REM Run Reboot
"C:\Program Files (x86)\LANDesk\LDClient\ldReboot.exe"


GOTO EXIT

:EXIT
REM Return exit code to SCCM
exit /B %EXIT_CODE%

Add this script to landesk as a program and you can use it every time when you need to inform the user to reboot.

Netsend with PStools

I created this script to send a message to all of our managed systems if there are problems and email is not working.

Here is the overview of the files what you need.

The computer.txt is the list of all hostnames where you want to send message.

PsExec you can download at Microsoft.

readme.txt is a short manual how to use it for other people

The startmij.cmd file below you can only run when the files are local on the system with UAC enabled and tested only with Windows 7. And you need to have local admin rights on all of the domain computers.

@echo off
REM ########################################################
REM ## Created by Daag van der Meer                     ##
REM ########################################################

REM ###########################################################
REM ## CHECKING FOR ADMIN                                    ##
REM ###########################################################
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
    "%temp%\getadmin.vbs"
    exit /B
:gotAdmin
    if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
    pushd "%CD%"
    CD /D "%~dp0"
REM ###########################################################
REM ## End Checking for ADMIN                                ##
REM ###########################################################

:START
cls
Echo ###########################################################
Echo ## Hiermee stuur je een popupmelding naar elke pc die    ##
echo ## in computers.txt vermeld staat.                       ##
echo ###########################################################
echo.
Echo Voer de tekst in wat je wilt versturen naar alle pc's.
echo.
set /p text=Je tekst:
cls
set /p tijd=Hoeveel seconden moet dit bericht blijven staan:
cls
echo Uw ingevoerde tekst:
echo %text%
echo.
echo Tijdweergave van dit bericht in secondes
echo %tijd%
echo.
set/p KEUZE=Klopt dit? (J)a, N(ee)
if "%KEUZE%"=="j" goto STUURMSG
if "%KEUZE%"=="J" goto STUURMSG
if "%KEUZE%"=="n" goto START
if "%KEUZE%"=="N" goto START

:STUURMSG
@echo on
PsExec.exe -n 20 @computers.txt msg * /time:%tijd% %text%

OSD – BIOS upgrade during OS Deployment in MDT/ConfigMgr by Mikael Nystrom

Source: deploymentbunny.com

Changed the script for my enviroment

Function Import-SMSTSENV{
    try
    {
        $tsenv = New-Object -COMObject Microsoft.SMS.TSEnvironment
        Write-Output "$ScriptName - tsenv is $tsenv "
        $MDTIntegration = "YES"
         
        #$tsenv.GetVariables() | % { Write-Output "$ScriptName - $_ = $($tsenv.Value($_))" }
    }
    catch
    {
        Write-Output "$ScriptName - Unable to load Microsoft.SMS.TSEnvironment"
        Write-Output "$ScriptName - Running in standalonemode"
        $MDTIntegration = "NO"
    }
    Finally
    {
    if ($MDTIntegration -eq "YES"){
        $Logpath = $tsenv.Value("LogPath")
        $LogFile = $Logpath + "\" + "$ScriptName.log"
 
    }
    Else{
        $Logpath = $env:TEMP
        $LogFile = $Logpath + "\" + "$ScriptName.log"
    }
    }
}
Function Start-Logging{
    start-transcript -path $LogFile -Force
}
Function Stop-Logging{
    Stop-Transcript
}
Function Invoke-Exe{
    [CmdletBinding(SupportsShouldProcess=$true)]
  
    param(
        [parameter(mandatory=$true,position=0)]
        [ValidateNotNullOrEmpty()]
        [string]
        $Executable,
  
        [parameter(mandatory=$false,position=1)]
        [string]
        $Arguments
    )
  
    if($Arguments -eq "")
    {
        Write-Verbose "Running $ReturnFromEXE = Start-Process -FilePath $Executable -ArgumentList $Arguments -NoNewWindow -Wait -Passthru"
        $ReturnFromEXE = Start-Process -FilePath $Executable -NoNewWindow -Wait -Passthru
    }else{
        Write-Verbose "Running $ReturnFromEXE = Start-Process -FilePath $Executable -ArgumentList $Arguments -NoNewWindow -Wait -Passthru"
        $ReturnFromEXE = Start-Process -FilePath $Executable -ArgumentList $Arguments -NoNewWindow -Wait -Passthru
    }
    Write-Verbose "Returncode is $($ReturnFromEXE.ExitCode)"
    Return $ReturnFromEXE.ExitCode
}
 
# Set vars
$SCRIPTDIR = split-path -parent $MyInvocation.MyCommand.Path
$SCRIPTNAME = split-path -leaf $MyInvocation.MyCommand.Path
$SOURCEROOT = "$SCRIPTDIR\Source"
$SettingsFile = $SCRIPTDIR + "\" + $SettingsName
$LANG = (Get-Culture).Name
$OSV = $Null
$ARCHITECTURE = $env:PROCESSOR_ARCHITECTURE
 
#Try to Import SMSTSEnv
. Import-SMSTSENV
 
# Set more vars
$computerSystem = Get-CimInstance CIM_ComputerSystem
$Make = $tsenv.Value("Make")
$Model = $computerSystem.Model
$ModelAlias = $tsenv.Value("ModelAlias")
$MakeAlias = $tsenv.Value("MakeAlias")
 
#Start Transcript Logging
. Start-Logging
 
#Output base info
Write-Output ""
Write-Output "$ScriptName - ScriptDir: $ScriptDir"
Write-Output "$ScriptName - SourceRoot: $SOURCEROOT"
Write-Output "$ScriptName - ScriptName: $ScriptName"
Write-Output "$ScriptName - Current Culture: $LANG"
Write-Output "$ScriptName - Integration with MDT(LTI/ZTI): $MDTIntegration"
Write-Output "$ScriptName - Log: $LogFile"
Write-Output "$ScriptName - Model (win32_computersystem): $((Get-WmiObject Win32_ComputerSystem).model)"
Write-Output "$ScriptName - Name (Win32_ComputerSystemProduct): $((Get-WmiObject Win32_ComputerSystemProduct).Name)"
Write-Output "$ScriptName - Version (Win32_ComputerSystemProduct): $((Get-WmiObject Win32_ComputerSystemProduct).Version)"
Write-Output "$ScriptName - Model (from TSENV): $Model"
Write-Output "$ScriptName - ModelAlias (from TSENV): $ModelAlias"
 
#Check Model
if($((Get-WmiObject Win32_ComputerSystem).model) -eq 'HP EliteBook 8560w'){
    Write-Output "Model is $((Get-WmiObject Win32_ComputerSystem).model)"
    Write-Output "Checking BIOS Version"
    Write-Output "Version is $((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion)"
    if($((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion) -ne '68SVD Ver. F.50'){
        Write-Output "Needs upgrade"
        $Exe = 'hpqflash.exe'
        $Location = "$SCRIPTDIR\Source\HP EliteBook 8560w"
        $Executable = $Location + "\" + $exe
        Set-Location -Path $Location
        Invoke-Exe -Executable "$Executable" -Arguments "/s /p LCadmin1.bin" -Verbose
    }
    else
    {
        Write-Output "No Need to upgrade"
    }
}
if($((Get-WmiObject Win32_ComputerSystem).model) -eq 'HP ProBook 6570b'){
    Write-Output "Model is $((Get-WmiObject Win32_ComputerSystem).model)"
    Write-Output "Checking BIOS Version"
    Write-Output "Version is $((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion)"
    if($((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion) -Like '*ICE*'){
        if($((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion) -ne '68ICE Ver. F.62'){
            Write-Output "Needs upgrade"
            $Exe = 'hpqflash.exe'
            $Location = "$SCRIPTDIR\Source\HP ProBook 6570b"
            $Executable = $Location + "\" + $exe
            Set-Location -Path $Location
            Invoke-Exe -Executable "$Executable" -Arguments "/s /f 68ICE.cab" -Verbose
        }
        else
        {
            Write-Output "No Need to upgrade"
        }
    }
    if($((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion) -Like '*ICF*'){
        if($((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion) -ne '68ICF Ver. F.62'){
            Write-Output "Needs upgrade"
            $Exe = 'hpqflash.exe'
            $Location = "$SCRIPTDIR\Source\HP ProBook 6570b"
            $Executable = $Location + "\" + $exe
            Set-Location -Path $Location
            Invoke-Exe -Executable "$Executable" -Arguments "/s /f 68ICF.cab" -Verbose
        }
        else
        {
            Write-Output "No Need to upgrade"
        }
    }
    }
   
   if($((Get-WmiObject Win32_ComputerSystem).model) -eq 'Latitude 7480'){
    Write-Output "Model is $((Get-WmiObject Win32_ComputerSystem).model)"
    Write-Output "Checking BIOS Version"
    Write-Output "Version is $((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion)"
    if($((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion) -ne '1.2.9'){
        Write-Output "Needs upgrade"
        $Exe = 'Latitude_7x80_1.2.9.exe'
        $Location = "$SCRIPTDIR\Source\Latitude 7480"
        $Executable = $Location + "\" + $exe
        Set-Location -Path $Location
        Invoke-Exe -Executable "$Executable" -Arguments "/s /p=Password" -Verbose
    }
    else
    {
        Write-Output "No Need to upgrade"
    }
}

   if($((Get-WmiObject Win32_ComputerSystem).model) -eq 'Latitude E7470'){
    Write-Output "Model is $((Get-WmiObject Win32_ComputerSystem).model)"
    Write-Output "Checking BIOS Version"
    Write-Output "Version is $((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion)"
    if($((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion) -ne '1.12.3'){
        Write-Output "Needs upgrade"
        $Exe = 'Latitude_E7x70_1.12.3.exe'
        $Location = "$SCRIPTDIR\Source\Latitude E7470"
        $Executable = $Location + "\" + $exe
        Set-Location -Path $Location
        Invoke-Exe -Executable "$Executable" -Arguments "/s /p=Password" -Verbose
    }
    else
    {
        Write-Output "No Need to upgrade"
    }
}


if($((Get-WmiObject Win32_ComputerSystem).model) -eq 'HP Compaq dc7900 Small Form Factor'){
    Write-Output "Model is $((Get-WmiObject Win32_ComputerSystem).model)"
    Write-Output "Checking BIOS Version"
    Write-Output "Version is $((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion)"
    if($((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion) -ne '786G1 v01.27'){
        Write-Output "Needs upgrade"
        $Exe = 'hpqflash.exe'
        $Location = "$SCRIPTDIR\Source\HP Compaq dc7900 Small Form Factor\HPQFlash"
        $Executable = $Location + "\" + $exe
        $SourceFile = $Location + "\" + "Password01.bin"
        $Destination = $env:TEMP
        $DestinationFile = $Destination + "\" + "Password01.bin"
        Copy-Item -Path $SourceFile -Destination $DestinationFile -Force -Verbose 
        Set-Location -Path $Location
        Invoke-Exe -Executable $Executable -Arguments "/s /p $DestinationFile"
    }
    else
    {
        Write-Output "No Need to upgrade"
    }
}
 
#Stop Logging
. Stop-Logging

This is how it is in MDT.

This is the folder structure

Policy Windows 10 – Mobile hotspot

How to disable the Mobile hotspot feature in Windows 10 1607

Using GPO, you can disable Mobile Hotspot in the UI by settings the GPO setting Prohibit use of Internet Connection sharing on your DNS domain network to Enabled. This settings is located under Computer configuration > (Policies) > Administrative templates > Network > Network Connections.

Send emails from functional mailbox to send box of that mailbox

We have Multiple mailboxes. Standard is when you send an email from those mailboxes, the emails are in your own send box. By adding this regkey it will be placed in the mailbox of where you send it from.

This is for Outlook 2010. Change 14.0 to the correct version. (Save the file as *.reg and run it)

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Outlook\Preferences]
"DelegateSentItemsStyle"=dword:00000001

14.0 = Office 2010
15.0 = Office 2013
16.0 = Office 2016