Function Disable-MetroAtBoot { <# .Synopsis Disables Windows booting to the Metro Desktop. .DESCRIPTION Disables Windows booting to the Metro Desktop by modifying the registry. Windows will boot to the Desktop after running this function. .EXAMPLE Disable-MetroAtBoot After loging out and back into windows you will have 3 rows on your Windows Metro desktop. .EXAMPLE Disable-MetroAtBoot -Verbose After loging out and back into windows you will have 1 row on your Windows Metro desktop. .NOTES After running this script the next time you log into Windows, the first thing you will see is the desktop and not the Metro desktop. .FUNCTIONALITY Windows 8, Windows 8.1 #> [CmdletBinding()] Param ( $VerbosePreference = "Continue" ) Begin{ $RegLocation = "HKCU:\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StartPage" } Process{ New-ItemProperty $RegLocation -Name "OpenAtLogon" -Value 0 -PropertyType "DWord" } End { Write-Verbose "Next time you log into Windows; Windows will boot right to the Desktop!" } }Disable-MetroAtBoot -Verbose
I'm a Windows PowerShell Enthusiast trying to spread all the great things PowerShell can do with the world!
Monday, December 23, 2013
Skip Windows Metro UI at boot
Here is a short PowerShell function that will make Windows boot right to the Desktop; skipping the Metro UI!
Minneapolis, Minnesota, USA
Minneapolis, MN 55426, USA
Tuesday, December 10, 2013
Change number of rows on Windows 8 metro desktop
Do you have Windows 8 installed? Would you like to customize your Computers Desktop? Download this short PowerShell function to modify the amount of rows you Windows Metro Desktop will display.
I've got some good new, some not so good news and some bad news;
Simply copy the below code into an Administrative PowerShell console by right clicking on PowerShell.exe and then left clicking on 'Run as an Administrator.'
I've got some good new, some not so good news and some bad news;
Good:
If you have Windows 8 this opens up an awesome ability to customize your Metro Desktop.Not so good:
I have yet to get this to work in Windows 8.1. There is however a possible workaround as in some copies of Windows 8.1 you are able to Charms Bar > Settings > Tiles > Show More Tiles Change to 'Yes'. This option is only found in specific Versions of Windows 8.1, sadly I have not came to a defiant reasoning to what allows this optionBad:
You must sign out of your Windows account and back in for the change to take effect.Simply copy the below code into an Administrative PowerShell console by right clicking on PowerShell.exe and then left clicking on 'Run as an Administrator.'
Function Set-MetroRows { <# .Synopsis Changes the number of rows on Windows 8 metro desktop .DESCRIPTION Changes the number of rows on Windows 8 metro desktop by modifying the registry .EXAMPLE Set-MetroRows -Rows 3 After loging out and back into windows you will have 3 rows on your Windows Metro desktop. .EXAMPLE Set-MetroRows -Rows 1 After loging out and back into windows you will have 1 row on your Windows Metro desktop. .NOTES You must logout\sign out and back into Windows for the registry changes to take effect. .FUNCTIONALITY PowerShell v3.0+ #> [CmdletBinding()] Param ( [Parameter(Mandatory=$True, ValueFromPipelineByPropertyName=$true, Position=0)] $Rows, $VerbosePreference = "Continue" ) Begin{ Remove-ItemProperty "HKCU:\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ImmersiveShell\Grid" -Name "Layout_MaximumRowCount" } Process{ New-ItemProperty "HKCU:\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ImmersiveShell\Grid" -Name "Layout_MaximumRowCount" -Value $Rows -PropertyType "DWord" } End { Write-Verbose "Please Press Enter to sign out of windows, once logged back in the changes will be in place!" ; Pause ; shutdown /l } } Set-MetroRows -Rows 3The amount of rows that you can have is determined by your screen resolution.(see chart below)
Screen Resolution (HxV) | Default | Max | Min |
800 x 600 | 3 | 3 | 1 |
1024 x 768 | 4 | 4 | 1 |
1152 x 864 | 5 | 5 | 1 |
1280 x 720 | 4 | 4 | 1 |
1280 x 900 | 5 | 5 | 1 |
1280 x 960 | 5 | 6 | 1 |
1280 x 1024 | 5 | 6 | 1 |
1440 x 900 | 5 | 5 | 1 |
1600 x 900 | 5 | 5 | 1 |
1680 x 1050 | 6 | 6 | 1 |
1900 x 1080 | 5 | 6 | 1 |
1920 x 1080 | 6 | 6 | 1 |
1920 x 1200 | 6 | 7 | 1 |
2560 x 1920 | 6 | 10 | 1 |
Examples:
Minneapolis, Minnesota, USA
Minneapolis, MN 55426, USA
Wednesday, December 4, 2013
Cleanup a C: drive with Windows PowerShell
Being an overnight Administrator I get a lot of low disk space alerts when drives hit their thresholds. Tonight I’m going to put an end to all this work. I wrote the following script to help automate the cleaning of C:\ drives or any drives that have a Windows operating system installed.
What Does this Script do?
- Clears all code off the screen
- Stops the Windows Update Service
- Deletes the contents of Windows Software Distribution
- Deletes the contents of windows temp folder
- Deletes files in users temp folder
- Deletes temporary internet files
- Cleans IIS logs
- Empties the Recycling Bin
- Starts Windows update service
- Outputs disk space before and after.
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 | <# .CREATED BY: Matthew A. Kerfoot .CREATED ON: 10\17\2013 .Synopsis automate cleaning up a C: drive with low disk space .DESCRIPTION Cleans up the C: drives temp files and other misc. unneeded files. .EXAMPLE .\cleanup_log.ps1 #> function global:Write-Verbose ( [string]$Message ) # check $VerbosePreference variable { if ( $VerbosePreference -ne 'SilentlyContinue' ) { Write-Host " $Message" -ForegroundColor 'Yellow' } } Write-Verbose $DaysToDelete = 7 $LogDate = get-date -format "MM-d-yy-HH" $objShell = New-Object -ComObject Shell.Application $objFolder = $objShell.Namespace(0xA) Start-Transcript -Path C:\Windows\Temp\$LogDate.log ## Cleans all code off of the screen. Clear-Host $Before = Get-WmiObject Win32_LogicalDisk | Where-Object { $_.DriveType -eq "3" } | Select-Object SystemName, @{ Name = "Drive" ; Expression = { ( $_.DeviceID ) } }, @{ Name = "Size (GB)" ; Expression = {"{0:N1}" -f( $_.Size / 1gb)}}, @{ Name = "FreeSpace (GB)" ; Expression = {"{0:N1}" -f( $_.Freespace / 1gb ) } }, @{ Name = "PercentFree" ; Expression = {"{0:P1}" -f( $_.FreeSpace / $_.Size ) } } | Format-Table -AutoSize | Out-String ## Stops the windows update service. Get-Service -Name wuauserv | Stop-Service -Force -Verbose -ErrorAction SilentlyContinue ## Windows Update Service has been stopped successfully! ## Deletes the contents of windows software distribution. Get-ChildItem "C:\Windows\SoftwareDistribution\*" -Recurse -Force -Verbose -ErrorAction SilentlyContinue | Where-Object { ($_.CreationTime -lt $(Get-Date).AddDays(-$DaysToDelete)) } | remove-item -force -Verbose -recurse -ErrorAction SilentlyContinue ## The Contents of Windows SoftwareDistribution have been removed successfully! ## Deletes the contents of the Windows Temp folder. Get-ChildItem "C:\Windows\Temp\*" -Recurse -Force -Verbose -ErrorAction SilentlyContinue | Where-Object { ($_.CreationTime -lt $(Get-Date).AddDays(-$DaysToDelete)) } | remove-item -force -Verbose -recurse -ErrorAction SilentlyContinue ## The Contents of Windows Temp have been removed successfully! ## Deletes all files and folders in user's Temp folder. Get-ChildItem "C:\users\$env:USERNAME\AppData\Local\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue | Where-Object { ($_.CreationTime -lt $(Get-Date).AddDays(-$DaysToDelete))} | remove-item -force -Verbose -recurse -ErrorAction SilentlyContinue ## The contents of C:\users\$env:USERNAME\AppData\Local\Temp\ have been removed successfully! ## Remove all files and folders in user's Temporary Internet Files. Get-ChildItem "C:\users\$env:USERNAME\AppData\Local\Microsoft\Windows\Temporary Internet Files\*" -Recurse -Force -Verbose -ErrorAction SilentlyContinue | Where-Object {($_.CreationTime -le $(Get-Date).AddDays(-$DaysToDelete))} | remove-item -force -recurse -ErrorAction SilentlyContinue ## All Temporary Internet Files have been removed successfully! ## Cleans IIS Logs if applicable. Get-ChildItem "C:\inetpub\logs\LogFiles\*" -Recurse -Force -ErrorAction SilentlyContinue | Where-Object { ($_.CreationTime -le $(Get-Date).AddDays(-60)) } | Remove-Item -Force -Verbose -Recurse -ErrorAction SilentlyContinue ## All IIS Logfiles over x days old have been removed Successfully! ## deletes the contents of the recycling Bin. $objFolder.items() | ForEach-Object { Remove-Item $_.path -ErrorAction Ignore -Force -Verbose -Recurse } ## The Recycling Bin has been emptied! ## Starts the Windows Update Service Get-Service -Name wuauserv | Start-Service -Verbose $After = Get-WmiObject Win32_LogicalDisk | Where-Object { $_.DriveType -eq "3" } | Select-Object SystemName, @{ Name = "Drive" ; Expression = { ( $_.DeviceID ) } }, @{ Name = "Size (GB)" ; Expression = {"{0:N1}" -f( $_.Size / 1gb)}}, @{ Name = "FreeSpace (GB)" ; Expression = {"{0:N1}" -f( $_.Freespace / 1gb ) } }, @{ Name = "PercentFree" ; Expression = {"{0:P1}" -f( $_.FreeSpace / $_.Size ) } } | Format-Table -AutoSize | Out-String ## Sends some before and after info for ticketing purposes Hostname ; Get-Date | Select-Object DateTime Write-Host "Before: $Before" Write-Host "After: $After" Write-Verbose ( Get-ChildItem -Path C:\* -Include *.iso, *.vhd, *.vhdx -Recurse -ErrorAction SilentlyContinue | Sort Length -Descending | Select-Object Name, Directory, @{Name="Size (GB)";Expression={ "{0:N2}" -f ($_.Length / 1GB) }} | Format-Table | Out-String ) ## Completed Successfully! Stop-Transcript |
Now just open an elevated command prompt and run the this script.
Sample Output:
VT-MKERFOOT-W8 nbsp; DateTime -------- Thursday, December 04, 2014 5:00:15 MATTHEW Before: SystemName Drive Size (GB) FreeSpace (GB) PercentFree ---------- ----- --------- -------------- ----------- VT-MKERFOOT-W8 C: 223.2 41.8 18.7 % After: SystemName Drive Size (GB) FreeSpace (GB) PercentFree ---------- ----- --------- -------------- ----------- VT-MKERFOOT-W8 C: 223.2 45.9 20.5 % VT-MKERFOOT-W8 C: 223.2 29.2 13.1 % Transcript stopped, output file is C:\Windows\Temp\12-04-14-9.log
Note this would have cleaned up more files and given a long verbose string of files removed except I just ran this against my computer and it brought it from 18% free to 20% free(which was shown above). Now all you have to do is Download my script here!
Subscribe to:
Posts (Atom)