Upload files to "/"

This commit is contained in:
Ivo Oskamp 2024-12-20 22:15:47 +01:00
parent cc7fbda418
commit 581eb856e9
5 changed files with 107 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
old/
test/

2
Install-updates.ps1 Normal file
View File

@ -0,0 +1,2 @@
Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot
shutdown.exe -r -t 0

37
No-updates.ps1 Normal file
View File

@ -0,0 +1,37 @@
#Load variables
. "C:\scripts\automatic-updates-static\Variables.ps1"
#set-location C:\scripts\automatic-updates\
$KeyPath = "c:\scripts\automatic-updates-static\"
#function to get credentials from a Saved file
Function Get-SavedCredential([string]$UserName,[string]$KeyPath)
{
If(Test-Path "$($KeyPath)\$($Username).cred") {
$SecureString = Get-Content "$($KeyPath)\$($Username).cred" | ConvertTo-SecureString
$Credential = New-Object System.Management.Automation.PSCredential -ArgumentList $Username, $SecureString
}
Else {
Throw "Unable to locate a credential for $($Username)"
}
Return $Credential
}
#Get encrypted password from the file
$cred = Get-SavedCredential -UserName $mailusername -KeyPath "c:\scripts\automatic-updates-static"
#Get FQDN for subject
$myFQDN =(Get-WmiObject win32_computersystem).DNSHostName+"."+(Get-WmiObject win32_computersystem).Domain ; Write-Host $myFQDN
#$cred = Get-Credential backup@fourit.nl
$mailprops = @{
To = $mailto
From = $mailfrom
Subject = $myFQDN
Port = 587
SmtpServer = $smtpserver
Credential = $cred
UseSsl = $true
BodyAsHtml = $true
}
$htmlBody = 'There are no updates available'
Send-MailMessage @mailprops -body $htmlBody

23
README.md Normal file
View File

@ -0,0 +1,23 @@
# Automatic Updates
Mail available updates and install updates
Create folder c:\scripts\automatic-updates. Place there the files.<br>
Run the script setup.ps1. If needed run Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass to allow unsigned script
If required for script variables are stored in c:\Scripts\atuomatic-updates-static\variables.ps1. To use these in script enter next lines:<br>
#Load variables<br>
. "C:\scripts\automatic-updates-static\Variables.ps1"<br>
https://gitlab.fourit.cloud/Ivo/automatic-updates-v2/-/archive/main/automatic-updates-v2-main.zip
ToDo:
Mails automatiseren met Power BI
Research possibility to update dc first then others. Maybe run from domain controller. Benefit is scripts on one location.
https://social.technet.microsoft.com/Forums/en-US/41ad0e87-71f1-4728-a78b-cec7923cefac/run-windows-scheduled-task-on-a-remote-server?forum=winserverpowershell
Automatic-Updates-Remote
Reboot resume script (werkt niet meer)
ToDo afgerond:
Geen resume script bij geen reboot benodigd
Cleanup mails send (create csv file with updates)

43
setup.ps1 Normal file
View File

@ -0,0 +1,43 @@
#Only run this one time to setup server for automatic updates
New-Item -ItemType File -Path C:\Scripts\automatic-updates-static\variables.ps1 -Force
Copy-Item C:\Scripts\automatic-updates\variables.ps1 C:\Scripts\automatic-updates-static\variables.ps1
New-Item -ItemType File -Path C:\Scripts\automatic-updates-static\updatescript.ps1 -Force
Copy-Item C:\Scripts\automatic-updates\updatescript.ps1 C:\Scripts\automatic-updates-static\updatescript.ps1
New-Item -ItemType File -Path C:\Scripts\automatic-updates-static\Start-Remote-task-updatescript.ps1.ps1 -Force
Copy-Item C:\Scripts\automatic-updates\Start-Remote-task-updatescript.ps1 C:\Scripts\automatic-updates-static\Start-Remote-task-updatescript.ps1
#Install required modules
C:\scripts\automatic-updates\Run_scripts_onetime\install_module.ps1
#Create encrypted password file to be able to send mail
Write-Host "Enter password for mail" -ForegroundColor Yellow
Write-Host "Press a key to continue" -ForegroundColor Yellow
[void][System.Console]::ReadKey($true)
C:\scripts\automatic-updates\Run_scripts_onetime\email-password.ps1
#Create encrypted password file to create and run tasks
Write-Host "Enter username and password of service account" -ForegroundColor Yellow
Write-Host "Press a key to continue" -ForegroundColor Yellow
[void][System.Console]::ReadKey($true)
C:\scripts\automatic-updates\Run_scripts_onetime\localpassword.ps1
#>
$shell = new-object -comobject "WScript.Shell"
$result = $shell.popup("Are you running this script from primary domain controller?",0,"Question",4+32)
if ($result -eq "6") {
Write-Host @"
You are running this from the domain controller. You have to create a task manualy on the server.
Create a task manual with the name "Automatic-Updates"
Use as trigger montly on first Thursday.
As Actions Start a program. powershell.exe with arguments "-NoProfile -File C:\Scripts\automatic-updates\Automatic-updates.ps1".
Use the service account and choose to run whether user is logged on or not.
Press a key to continue
"@ -ForegroundColor Yellow
[void][System.Console]::ReadKey($true)
} else {
Write-Host "We will create a task that will not start automaticaly. This will be run from the domain controller." -ForegroundColor Yellow
enable-WUremoting
C:\scripts\automatic-updates\Run_scripts_onetime\Create-task-remote.ps1
C:\scripts\automatic-updates\Run_scripts_onetime\Create-task-updatescript.ps1
}
Write-Host "The variables.ps1 is copied to c:\scripts\automatic-updates-static. Please edit this file" -ForegroundColor Yellow