Tag: Windows
-

Correctly Setting the PowerShell Root
⭐ You should NOT set $root or $PSScriptRoot in your profile Your profile runs in contexts where: If you set a $root variable in your profile, you would be lying to your scripts about where they live. ❌ Example of what goes wrong If your profile sets: Then you run a script from: Your script…
-

Scheduled Local Admin
You could also change the duration to hours with (Get-Date).AddHours($durationInHours)
-

The End of Cheap Cloud Computing?
Did you really think letting someone else manage your security was the answer? What is missing in this Petri article, ‘Free Microsoft Identity Tools Increasing Risk‘, the blog posting that presents the problem many have with Cloud security, from a survey Petri.com ran, is the answer to the problems presented. Their Key Takeaways from the…
-

Step-by-Step Guide to Troubleshooting Windows Server 2016 Active Directory Replication Issues
To force replication, run the command: repadmin /syncall /e /d /A /P
-

Upgrade to PWSH Without Being Destructive (even for DCs)
-

Upgrade Windows 11 at Home
-

Fix the SoftwareDistribution Folder
“ensure your windows update works ”
-

Enable AD RDC Rules on Domain Controllers
-

PWSH: Get-Latest-WinEvent-Prompted-DCs
This is a VERY useful script that prompts for RWDC or RODCs, prompt to specify EventIDs or just get the last event on each DC, and refactored with Microsoft CoPilot 4 for locations where WinRM is disabled, using Invoke-Command (Enter-PSSession)
-

GPOs: List-GPOs-EnabledandLinked-AndBackup
How to backup the Group Policies you are actually using
-
Step-by-Step Procedure to Analyze Group Policies
…be careful to be confident
-

Check-WinEvents-Prompted.ps1
‘Check-WinEvents-Prompted.ps1’ #************************************************************************************************************* # Script Name : Get-Latest-WinEvent-Prompted-DCs # Purpose : Check Latest Event log for DCs chosen # Date : #.\Get-UpdateDate.ps13:32 PM 3/13/2024 # – Initial version # Date : #.\Get-UpdateDate.ps11:12 PM 3/14/20244 # – Updated to reflect specific events, added credentials, added prompts # Author : Patrick Burwell #************************************************************************************************************* #Set location first set-location D:\PowerShell…
-
Confirm Windows Server In-place Upgrade to 2025
From 4SysOps: Confirm Windows Server in-place upgrade to 2025 Current version Upgrade to Windows Server 2025? Windows Server 2012 ❌ No Windows Server 2012 R2 ❌ No Windows Server 2016 ✅ Yes Windows Server 2019 ✅ Yes Windows Server 2022 ✅ Yes https://4sysops.com/archives/check-the-windows-server-version-to-determine-if-an-in-place-upgrade-to-server-2025-is-supported
-

Check-Uptime-DC-Prompt.ps1
Sometimes a simple script makes life easier…
-
Get-Pagefile
Quickly get the remote pagefile of a window server
-

Log Specific IPV4 Traffic When Found
-

Check for GPO or run GPupdate Remotely
This script does lots of things that are handy when group policy (SysVol) replication is a problem… (like an environment still using FRS) My Thanks to Microsoft’s CoPilot for the help in sorting the logic of the try-else-catch commands…
-

HOWTO-Run Robocopy Hard and Fast
To ignore errors and make Robocopy proceed without stopping, you can adjust the `/R` and `/W` switches in your command. The `/R` switch specifies the number of retries on failed copies, and the `/W` switch specifies the wait time between retries². To force Robocopy to copy a file regardless of its condition, you can use…
-

Reverse Ping a 255.255.254 Scope
To quickly obtain the devices using an IPv4Address in a scope reverse ping the scope in PowerShell (5.1) ‘#’ReverseLookup-Ipv4Address-By23Range.ps1’$subnet = read-host -Prompt “What IP scope with /23 range? -leave off the last octet numbers – like this 10.228.30. “for ($i=0; $i -le 511; $i++) { $ip = $subnet + $i Resolve-DnsName -name $ip -ea SilentlyContinue|select…
-

Remove Revoked Certificates
The removal of revoked certificates is not automatic…
-

Set PS 5.1 to use PS 7 PSModulePath
…might as well prepare by using the D:\PowerShell path now with PS 5.1…
-

Set PowerShell Credential
…you can make the script prompt you for you admin credential or you can type it in manually, or adjust from your username for more elevation
-

Update ADSS Subnets
The real advantage of this script is the ability it gives you to update your ADSS subnets quickly #Import the Active Directory moduleImport-Module ActiveDirectory -NoClobber -DisableNameChecking -Scope Local#Import the CSV with headers$csvData = Import-Csv -Path D:\powershell\input\subnets.csv#Checks for any count and breaks if not $nullif(!($csvData.Count)){break}#Loop through each row in the CSVforeach ($row in $csvData) {#Get the…
-

Update-Windows_Powershell.ps1
Updates Windows powershell modules, installs any not installed, and updates help for them all
-

Get ALL A User’s Groups
…get every group a user is in, including the Primary
-

Get Domain Users
The reason you cannot enumerate all ‘Domain Users’ members is due to size restrictions of the PowerShell commands,
-

Get-ADGroup WildCard is BROKEN
In the past (2018) you could use ‘like’ on Get-adgroup, like this:
-

PS Script to Promote 2019 Server to RWDC
Add-WindowsFeature -Name “AD-Domain-Services” -IncludeManagementTools:$False -Confirm -ea Inquire -LogPath “C:\Users\$env:username\Documents\WindowsPowerShell\log\$day-RWDCPromo.log”
-

Set-MpPreference
As you can see, Microsoft’s syntax is wrong:They show the syntax for setting soft-passive mode as ‘Set-MpPreference -DisableRealtimeMonitoring $true’ when it is ‘Set-MpPreference -DisableRealtimeMonitoring:$true’ <– NOTE THE COLON??? Arrrrgghhhh! I cannot tell you how frustrating it is when code is not written to give you ANY response unless you get the syntax EXACTLY right. *SIGH*…
-

Gpupdate Latency Errors Lookup Script
I cannot TELL you how hard this was to write. Holy smokes the help on this is terrible.

