Learn about Windows PowerShell
Summary: Microsoft Scripting Guy, Ed Wilson, talks about using Windows PowerShell to configure a new laptop.
Microsoft Scripting Guy, Ed Wilson, is here. WooHoo! My new laptop arrived. Oh, no…I now have a lot of work to do to install and configure Windows 8 on it. You see, I never, never simply turn on and use a new laptop—that is not the way I operate. I always do a fresh installation. I am not saying one needs to always do this, but I like to know what is going on and make my own decisions. So here I am with a lot of work to do.
A while back I began working on a new computer deployment module that helps me configure a number of things that simply irate me about default installs. Today I am going to discuss a few types of things that I need to configure.
This one is easy. In Windows 8, there is a Scheduled Task module, and all I need to do is disable one scheduled task. When I first tried the command, I received the following error message:
PS C:\> Get-ScheduledTask -TaskName *defrag* | Disable-ScheduledTask
Disable-ScheduledTask : Access is denied.
At line:1 char:40
+ Get-ScheduledTask -TaskName *defrag* | Disable-ScheduledTask
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (PS_ScheduledTask:Root/Microsoft/..
.S_ScheduledTask) [Disable-ScheduledTask], CimException
+ FullyQualifiedErrorId : HRESULT 0x80070005,Disable-ScheduledTask
When I started Windows PowerShell with Admin rights, the command came off without a hitch as shown here.
TaskPath TaskName Sta
te
-------- -------- ---
\Microsoft\Windows\Defrag\ ScheduledDefrag Dis
Windows 8 has a cool feature called Fast Start. Unfortunately, I have a scavenged SSD in my laptop that is really small, so I cannot afford the disk space of Hiberfile.sys. Anyway, guess what? Windows 8 on an SSD boots up pretty quickly anyway. So this is a simple one-line command using the PowerCfg command-line tool.
Powercfg /H OFF
Note This command also requires Admin rights. If you run it without Admin rights, the following error arises:
PS C:\> powercfg /H OFF
An unexpected error condition has occurred. Unable to perform operation. You may not have permission to perform this operation.
If I use Get-CimInstance to query for instances of Win32_PageFileSetting, guess what? It returns nothing—not a thing. There is not an instance of Win32_PageFileSetting because Windows is managing the page file.
So the first thing I need to do is to turn off auto management of the page file. I use the Win32_ComputerSystem WMI class to do this. Here is the command.
PS C:\> Set-CimInstance -Query "Select * from win32_computersystem" -Property @{autom
aticmanagedpagefile="False"}
PS C:\> Get-CimInstance win32_PageFileSetting
MaximumSize Name Caption
----------- ---- -------
0 C:\pagefile.sys C:\ 'pagefile.sys'
To set the size of the page file, I can now use the Set-CimInstance cmdlet, and set the size by using the Win32_PageFileSetting cmdlet. Here is the script I used.
PS C:\> Set-CimInstance -Query "Select * from win32_PageFileSetting" -Property @{Init
ialSize=3072;MaximumSize=3072}
It took a few times before I came up with the right combination. In the end, I looked up the Win32_PageFileSetting WMI class on MSDN, and I found that it wants the values in megabytes.
I invite you to follow me on Twitter and Facebook. If you have any questions, send email to me at scripter@microsoft.com, or post your questions on the Official Scripting Guys Forum. See you tomorrow. Until then, peace.
Ed Wilson, Microsoft Scripting Guy
Why disable "defrag"? Windows 8 does not defrag SSD, it is doing some kind of optimization.
superuser.com/.../what-does-optimize-drives-do-in-windows-8
Hi Ed,
interesting post.
While I agree with Igor on the fact that you don't need to disable defrag because Windows already skips this kind of drives (and that you may prefer to move pagefile on a mechanical drive instead of fixing its size), I still think that what's important here is that you show us how to do it.
Very instructive!
Carlo
I love this post!
My 2 cents: I agree on disabling hiberfile.sys... since I put a SATA3 SSD drive, my laptop clean boots in less than 10 seconds, I've never hibernated my laptop since I moved to SSD.
I do not agree with "happysysadm" because, if you have a laptop with a single drive it is pretty likely that you only have 1 drive, so, no chance to move to a second disk ;-)
@Massimo I see your point. In that case I disable paging if I have enough RAM. Maybe SSD short life expectancy is only a urban myth but I still prefer to avoid too many "blocks" being modified.
After that you could always use Chocolatey.org to install a bunch of your commonly used apps with a simple PowerShell script. :) Thanks Ed.
@Igor Kudrin Thanks for this information. I was looking at it like Windows 7 and when I saw the task was not disabled, I went ahead and disabled it. I will turn it back on.
@Happysysadm moving the page file is a good idea, and when I get my second drive running on my laptop I will consider that.
@Massimo Thanks, I am glad you love the post. Yes, I feel that reclaiming the disk space on my laptop was more important than the small gains used by hiberfile. You are right I feel that Windows 8 boots up very quickly anyway.
@Jonathan Waltz great suggestion thanks.
@HappySysAdmin.... are you sure that disabling page file is a good idea? I always thought that pagefile is somewhat "mandatory". I started thinking this when I disabled the pagefile on a server with exchange 2003 and he didn't react very well.
Actually I don't know if disabling it (even when you have much physical RAM) is a good idea or not.
@Ed, with modern SSD, limited writes are a actually a mith. My first Corsair SATA3 (6gbps) 120 GB SSD lived 1 year and a half on my laptop. When I upgraded to Corsair SATA3 240 GB, one year ago, I moved the 120 GB drive to my desktop workstation to run virtual machines faster. That disk is still perfect. :-)