Jump to content

Oaktech

Members
  • Posts

    9,067
  • Joined

  • Last visited

Everything posted by Oaktech

  1. I've been buying refurb i5 elitebooks for about £180+ fairly robust keyboards - about £20 to replace. Very robust cases. Some of them are horrifically bent and are still working!
  2. Jeez - how much work would it really be to script an encrypted zip of the information that gets sent with a hashed password? Certainly going to raise this with our Trust IT as they are doing our GDPR compliance.
  3. Webmail, maybe. Social Media Nope... That's an epic can of safeguarding worms that I'm not prepared to open. It's hard enough to keep students on task with the distraction of the google doodle games, let alone opening up for them to d*ck about on social media too.
  4. If there is any chance of splitting the bundle I'd be very interested in the ZF7363...
  5. Yeah it would just make it a generic root and not to a specific server. Which is pretty much half the battle. $share would also help.
  6. I did my pro 11 off a stick. worked fine, all drivers off windows update/built in.
  7. Big Ol' Can O' Worms... DFS Namespace.
  8. 4 in one school 6 in the other. All MFD.
  9. Save this as removeapps.ps1 I use GPO to create a scheduled to run the 2 PS scripts from a net share on every start up, which means that if an update adds an app back in it gets removed before someone logs back in. $AppsList = "Microsoft.MicrosoftOfficeHub", # Get Office "Microsoft.SkypeApp", # Get Skype "microsoft.windowscommunicationsapps", # Mail & Calendar "Microsoft.People", # People "Microsoft.CommsPhone", # Phone "Microsoft.WindowsPhone", # Phone Companion "Microsoft.XboxApp", # Xbox "Microsoft.Messaging", # Messaging & Skype "Microsoft.MicrosoftSolitaireCollection", # Microsoft Solitaire Collection "Microsoft.BingWeather", #Microsoft Weather "Microsoft.WindowsFeedbackHub", #FeedbackHub "Microsoft.Office.OneNote", #OneNote "Microsoft.3DBuilder", #3DBuilder "Microsoft.WindowsMaps", # Maps "Microsoft.WindowsAlarms", # Alarms "Microsoft.WindowsCamera", # Camera - comment or remove this line for tablets "Microsoft.GetStarted", # Getting Started "Microsoft.ZuneMusic", #Zune "Microsoft.ZuneVideo", "Microsoft.XboxSpeechToTextOverlay", # Xbox "Microsoft.XboxGameOverlay", "Microsoft.Xbox.TCUI", "Microsoft.XboxApp", "Microsoft.XboxGameOverlay", "Microsoft.XboxIdentityProvider", "Microsoft.XboxSpeechToTextOverlay", "ThumbmunkeysLtd.PhototasticCollage", "KeeperSecurityInc.Keeper", "9E2F88E3.Twitter", "king.com.CandyCrushSodaSaga", "King.com.BubbleWitch3Saga", "Microsoft.BingNews", "Microsoft.BingSports", "Microsoft.BingFinance", "flaregamesGmbH.RoyalRevolt2", "Microsoft.MicrosoftStickyNotes", # Sticky Notes "Microsoft.OneConnect", # Paid wifi "CAF9E577.Plex", "89006A2E.AutodeskSketchBook", "A278AB0D.MarchofEmpires", "Microsoft.MinecraftUWP", "*Asphalt8Airborne*", "microsoft.onedrive", "microsoft.print3d", "microsoft.gethelp", "Microsoft.Microsoft3DViewer", "microsoft.wallet", "46928bounde.EclipseManager", "D5EA27B7.Duolingo-LearnLanguagesforFree", "Microsoft.NetworkSpeedTest", "Microsoft.Office.Sway", "Microsoft.MicrosoftPowerBIForWindows", "ActiproSoftwareLLC.562882FEEB491", "A278AB0D.DisneyMagicKingdoms", "A278AB0D.MarchofEmpires", "WinZipComputing.WinZipUniversal", "828B5831.HiddenCityMysteryofShadows" ForEach ($App in $AppsList) { $Packages = Get-AppxPackage | Where-Object {$_.Name -eq $App} if ($Packages -ne $null) { "Removing Appx Package: $App" foreach ($Package in $Packages) { Remove-AppxPackage -package $Package.PackageFullName } } else { "Unable to find package: $App" } $ProvisionedPackage = Get-AppxProvisionedPackage -online | Where-Object {$_.displayName -eq $App} if ($ProvisionedPackage -ne $null) { "Removing Appx Provisioned Package: $App" remove-AppxProvisionedPackage -online -packagename $ProvisionedPackage.PackageName } else { "Unable to find provisioned package: $App" } } Save this as removepackages.ps1 Import-Module -DisableNameChecking \\dc1\netlogon\take-own.psm1 # Update this with the location you have placed the psm1 module do {} until (Elevate-Privileges SeTakeOwnershipPrivilege) $packages = @( "Browser" # Removes edge browser "ContactSupport" # Removes contact support "Xbox" # Removes remaining xbox information not removed by remove apps "Microsoft-PPIProjection-Package" # Removes miracast "Microsoft-Windows-Holographic-Desktop" #"cortana" #this removes Cortana, but also the ability to search the start menu ) foreach ($package in $packages) { $pkgs = (ls "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages" | where Name -Like "*$package*") foreach ($pkg in $pkgs) { $pkgname = $pkg.Name.split('\')[-1] Takeown-Registry($pkg.Name) Takeown-Registry($pkg.Name + "\Owners") Set-ItemProperty -Path ("HKLM:" + $pkg.Name.Substring(18)) -Name Visibility -Value 1 New-ItemProperty -Path ("HKLM:" + $pkg.Name.Substring(18)) -Name DefVis -PropertyType DWord -Value 2 Remove-Item -Path ("HKLM:" + $pkg.Name.Substring(18) + "\Owners") dism.exe /Online /Remove-Package /PackageName:$pkgname /NoRestart } } Save this as takeown.psm1 function Takeown-Registry($key) { # TODO does not work for all root keys yet switch ($key.split('\')[0]) { "HKEY_CLASSES_ROOT" { $reg = [Microsoft.Win32.Registry]::ClassesRoot $key = $key.substring(18) } "HKEY_CURRENT_USER" { $reg = [Microsoft.Win32.Registry]::CurrentUser $key = $key.substring(18) } "HKEY_LOCAL_MACHINE" { $reg = [Microsoft.Win32.Registry]::LocalMachine $key = $key.substring(19) } } # get administraor group $admins = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-544") $admins = $admins.Translate([system.Security.Principal.NTAccount]) # set owner $key = $reg.OpenSubKey($key, "ReadWriteSubTree", "TakeOwnership") $acl = $key.GetAccessControl() $acl.SetOwner($admins) $key.SetAccessControl($acl) # set FullControl $acl = $key.GetAccessControl() $rule = New-Object System.Security.AccessControl.RegistryAccessRule($admins, "FullControl", "Allow") $acl.SetAccessRule($rule) $key.SetAccessControl($acl) } function Takeown-File($path) { takeown.exe /A /F $path $acl = Get-Acl $path # get administraor group $admins = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-544") $admins = $admins.Translate([system.Security.Principal.NTAccount]) # add NT Authority\SYSTEM $rule = New-Object System.Security.AccessControl.FileSystemAccessRule($admins, "FullControl", "None", "None", "Allow") $acl.AddAccessRule($rule) Set-Acl -Path $path -AclObject $acl } function Takeown-Folder($path) { Takeown-File $path foreach ($item in Get-ChildItem $path) { if (Test-Path $item -PathType Container) { Takeown-Folder $item.FullName } else { Takeown-File $item.FullName } } } function Elevate-Privileges { param($Privilege) $Definition = @" using System; using System.Runtime.InteropServices; public class AdjPriv { [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)] internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall, ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr rele); [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)] internal static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok); [DllImport("advapi32.dll", SetLastError = true)] internal static extern bool LookupPrivilegeValue(string host, string name, ref long pluid); [structLayout(LayoutKind.Sequential, Pack = 1)] internal struct TokPriv1Luid { public int Count; public long Luid; public int Attr; } internal const int SE_PRIVILEGE_ENABLED = 0x00000002; internal const int TOKEN_QUERY = 0x00000008; internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020; public static bool EnablePrivilege(long processHandle, string privilege) { bool retVal; TokPriv1Luid tp; IntPtr hproc = new IntPtr(processHandle); IntPtr htok = IntPtr.Zero; retVal = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok); tp.Count = 1; tp.Luid = 0; tp.Attr = SE_PRIVILEGE_ENABLED; retVal = LookupPrivilegeValue(null, privilege, ref tp.Luid); retVal = AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero); return retVal; } } "@ $ProcessHandle = (Get-Process -id $pid).Handle $type = Add-Type $definition -PassThru $type[0]::EnablePrivilege($processHandle, $Privilege) }
  10. Really? I've checked status page and it said about 'user created folders' but nothing about public folders. No-one seems to have had any issues other than public folders. The issues has been fixed/fixed itself now anyway... I got an automated email from MS about 3am this morning saying that 'remedial action has been taken in relation to your support request' and lo-and behold it's all back.
  11. As per title - anyone else having issues this morning with Public folders going missing for clients in Office 365? Owners can still see them. I'm waiting for a callback from MS. They are still present in admin centre and everything is unchanged there.
  12. I've been having this issue with 2013 and worse with 2016. Just found this blog and it's fixed it! https://emtunc.org/blog/09/2016/office-2016-network-shortcuts-save-issue/
  13. I have a physical DC - a HP Microserver outside the cluster on a 2 hr UPS, connected to the same switch as the cluster. That switch has a UPS on it with about 3 hours uptime, and then *everything* else is clustered in failover, also with a long run ups on it.
  14. I love the way they look, but I'm too short to ride any of them without spending some serious $ on cut down seats and lowered shocks! I can only just touch the foot pegs on a KTM adventure let alone the floor!
  15. VM till the cows come home... Everything I own is virtual, bar 2 HP micro servers that do backup in another building and a physical DC.
  16. That's a one off payment - keep it forever - however, that also means you're stuck with it forever, office 365 sub means you always get the latest.
  17. Then just get a personal office 365 sub for £5.99 a month.
  18. Edge can be removed... Import-Module -DisableNameChecking \\INSERTREACHABLELOCATIONHERE\take-own.psm1 do {} until (Elevate-Privileges SeTakeOwnershipPrivilege) $needles = @( "Browser" "ContactSupport" "Xbox" "Miracast" ) foreach ($needle in $needles) { $pkgs = (ls "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages" | where Name -Like "*$needle*") foreach ($pkg in $pkgs) { $pkgname = $pkg.Name.split('\')[-1] Takeown-Registry($pkg.Name) Takeown-Registry($pkg.Name + "\Owners") Set-ItemProperty -Path ("HKLM:" + $pkg.Name.Substring(18)) -Name Visibility -Value 1 New-ItemProperty -Path ("HKLM:" + $pkg.Name.Substring(18)) -Name DefVis -PropertyType DWord -Value 2 Remove-Item -Path ("HKLM:" + $pkg.Name.Substring(18) + "\Owners") dism.exe /Online /Remove-Package /PackageName:$pkgname /NoRestart } } And the Take-Own script that needs to be saved as a psm1 function Takeown-Registry($key) { # TODO does not work for all root keys yet switch ($key.split('\')[0]) { "HKEY_CLASSES_ROOT" { $reg = [Microsoft.Win32.Registry]::ClassesRoot $key = $key.substring(18) } "HKEY_CURRENT_USER" { $reg = [Microsoft.Win32.Registry]::CurrentUser $key = $key.substring(18) } "HKEY_LOCAL_MACHINE" { $reg = [Microsoft.Win32.Registry]::LocalMachine $key = $key.substring(19) } } # get administrator group $admins = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-544") $admins = $admins.Translate([system.Security.Principal.NTAccount]) # set owner $key = $reg.OpenSubKey($key, "ReadWriteSubTree", "TakeOwnership") $acl = $key.GetAccessControl() $acl.SetOwner($admins) $key.SetAccessControl($acl) # set FullControl $acl = $key.GetAccessControl() $rule = New-Object System.Security.AccessControl.RegistryAccessRule($admins, "FullControl", "Allow") $acl.SetAccessRule($rule) $key.SetAccessControl($acl) } function Takeown-File($path) { takeown.exe /A /F $path $acl = Get-Acl $path # get administraor group $admins = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-544") $admins = $admins.Translate([system.Security.Principal.NTAccount]) # add NT Authority\SYSTEM $rule = New-Object System.Security.AccessControl.FileSystemAccessRule($admins, "FullControl", "None", "None", "Allow") $acl.AddAccessRule($rule) Set-Acl -Path $path -AclObject $acl } function Takeown-Folder($path) { Takeown-File $path foreach ($item in Get-ChildItem $path) { if (Test-Path $item -PathType Container) { Takeown-Folder $item.FullName } else { Takeown-File $item.FullName } } }
  19. I'd love to. I don't want them to spend it, it's largely pointless, I can do it in house. They went over my head to purchase it but GDPR may well be my bargaining chip to stop them doing it all over again.
  20. I had push issues to my android phone for a couple of days at the start of the week, but everything else has been fine and I've had 0 service advisories.
  21. Interesting thought... Our Iris subscription is up for renewal. If Iris can't dance the GDPR dance I'm about to save the school 9k.
  22. We use MyConcern for the proper issues and the person who deals with myconcern, usually the DSL will email everyone if they consider it is something we should all know about. That is usually something going on that might impact on their behaviour around the school when they aren't with their class teacher. MDSA's get a daily briefing before lunchtime that sounds like the plot of East Enders.
  23. It used to be a single, but the principle still stands, lower CofG.
×
×
  • Create New...