Upload files to "/"
This commit is contained in:
parent
cc7fbda418
commit
581eb856e9
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
old/
|
||||
test/
|
2
Install-updates.ps1
Normal file
2
Install-updates.ps1
Normal file
@ -0,0 +1,2 @@
|
||||
Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot
|
||||
shutdown.exe -r -t 0
|
37
No-updates.ps1
Normal file
37
No-updates.ps1
Normal 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
23
README.md
Normal 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
43
setup.ps1
Normal 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
|
Loading…
Reference in New Issue
Block a user