Directory Cleanup & Addition of Platform Scripts
This commit is contained in:
@@ -0,0 +1,154 @@
|
||||
|
||||
<#PSScriptInfo
|
||||
|
||||
.VERSION 1.0
|
||||
|
||||
.GUID 3b42d8c8-cda5-4411-a623-90d812a8e29e
|
||||
|
||||
.AUTHOR Michael Niehaus
|
||||
|
||||
.COMPANYNAME Microsoft
|
||||
|
||||
.COPYRIGHT
|
||||
|
||||
.TAGS
|
||||
|
||||
.LICENSEURI
|
||||
|
||||
.PROJECTURI
|
||||
|
||||
.ICONURI
|
||||
|
||||
.EXTERNALMODULEDEPENDENCIES
|
||||
|
||||
.REQUIREDSCRIPTS
|
||||
|
||||
.EXTERNALSCRIPTDEPENDENCIES
|
||||
|
||||
.RELEASENOTES
|
||||
Version 1.0: Initial version.
|
||||
|
||||
.PRIVATEDATA
|
||||
|
||||
#>
|
||||
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
Rename the computer
|
||||
|
||||
#>
|
||||
|
||||
Param()
|
||||
|
||||
|
||||
# If we are running as a 32-bit process on an x64 system, re-launch as a 64-bit process
|
||||
if ("$env:PROCESSOR_ARCHITEW6432" -ne "ARM64")
|
||||
{
|
||||
if (Test-Path "$($env:WINDIR)\SysNative\WindowsPowerShell\v1.0\powershell.exe")
|
||||
{
|
||||
& "$($env:WINDIR)\SysNative\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -ExecutionPolicy bypass -File "$PSCommandPath"
|
||||
Exit $lastexitcode
|
||||
}
|
||||
}
|
||||
|
||||
# Create a tag file just so Intune knows this was installed
|
||||
if (-not (Test-Path "$($env:ProgramData)\Microsoft\RenameComputer"))
|
||||
{
|
||||
Mkdir "$($env:ProgramData)\Microsoft\RenameComputer"
|
||||
}
|
||||
Set-Content -Path "$($env:ProgramData)\Microsoft\RenameComputer\RenameComputer.ps1.tag" -Value "Installed"
|
||||
|
||||
# Initialization
|
||||
$dest = "$($env:ProgramData)\Microsoft\RenameComputer"
|
||||
if (-not (Test-Path $dest))
|
||||
{
|
||||
mkdir $dest
|
||||
}
|
||||
Start-Transcript "$dest\RenameComputer.log" -Append
|
||||
|
||||
# Make sure we are already domain-joined
|
||||
$goodToGo = $true
|
||||
$details = Get-ComputerInfo
|
||||
if (-not $details.CsPartOfDomain)
|
||||
{
|
||||
Write-Host "Not part of a domain."
|
||||
$goodToGo = $false
|
||||
}
|
||||
|
||||
# Make sure we have connectivity
|
||||
$dcInfo = [ADSI]"LDAP://RootDSE"
|
||||
if ($dcInfo.dnsHostName -eq $null)
|
||||
{
|
||||
Write-Host "No connectivity to the domain."
|
||||
$goodToGo = $false
|
||||
}
|
||||
|
||||
if ($goodToGo)
|
||||
{
|
||||
# Get the new computer name
|
||||
|
||||
#get system serial #:
|
||||
$SystemSerial = Get-WmiObject win32_bios | select Serialnumber
|
||||
|
||||
#Ignore original naming Convention
|
||||
#$newName = Invoke-RestMethod -Method GET -Uri "https://generatename.azurewebsites.net/api/HttpTrigger1?prefix=AD-"
|
||||
|
||||
$newName = $SystemSerial.Serialnumber
|
||||
|
||||
# Set the computer name
|
||||
Write-Host "Renaming computer to $($SystemSerial.Serialnumber)"
|
||||
Rename-Computer -NewName $SystemSerial.Serialnumber
|
||||
|
||||
# Remove the scheduled task
|
||||
Disable-ScheduledTask -TaskName "RenameComputer" -ErrorAction Ignore
|
||||
Unregister-ScheduledTask -TaskName "RenameComputer" -Confirm:$false -ErrorAction Ignore
|
||||
Write-Host "Scheduled task unregistered."
|
||||
|
||||
# Make sure we reboot if still in ESP/OOBE by reporting a 1641 return code (hard reboot)
|
||||
if ($details.CsUserName -match "defaultUser")
|
||||
{
|
||||
Write-Host "Exiting during ESP/OOBE with return code 1641"
|
||||
Stop-Transcript
|
||||
Exit 1641
|
||||
}
|
||||
else {
|
||||
Write-Host "Initiating a restart in 10 minutes"
|
||||
& shutdown.exe /g /t 600 /f /c "Restarting the computer due to a computer name change. Save your work."
|
||||
Stop-Transcript
|
||||
Exit 0
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
# Check to see if already scheduled
|
||||
$existingTask = Get-ScheduledTask -TaskName "RenameComputer" -ErrorAction SilentlyContinue
|
||||
if ($existingTask -ne $null)
|
||||
{
|
||||
Write-Host "Scheduled task already exists."
|
||||
Stop-Transcript
|
||||
Exit 0
|
||||
}
|
||||
|
||||
# Copy myself to a safe place if not already there
|
||||
if (-not (Test-Path "$dest\RenameComputer.ps1"))
|
||||
{
|
||||
Copy-Item $PSCommandPath "$dest\RenameComputer.PS1"
|
||||
}
|
||||
|
||||
# Create the scheduled task action
|
||||
$action = New-ScheduledTaskAction -Execute "Powershell.exe" -Argument "-NoProfile -ExecutionPolicy bypass -WindowStyle Hidden -File $dest\RenameComputer.ps1"
|
||||
|
||||
# Create the scheduled task trigger
|
||||
$timespan = New-Timespan -minutes 5
|
||||
$triggers = @()
|
||||
$triggers += New-ScheduledTaskTrigger -Daily -At 9am
|
||||
$triggers += New-ScheduledTaskTrigger -AtLogOn -RandomDelay $timespan
|
||||
$triggers += New-ScheduledTaskTrigger -AtStartup -RandomDelay $timespan
|
||||
|
||||
# Register the scheduled task
|
||||
Register-ScheduledTask -User SYSTEM -Action $action -Trigger $triggers -TaskName "RenameComputer" -Description "RenameComputer" -Force
|
||||
Write-Host "Scheduled task created."
|
||||
}
|
||||
|
||||
Stop-Transcript
|
||||
Reference in New Issue
Block a user