Function: New-PSUpdateHelpScheduledTask – Auto Update PowerShell Help
Probably not of much value to people unless you build a fair amount of servers and have it scripted, but…
One thing you want to do with servers running PowerShell v3.0, such as Windows Server 2012, is to regularly run Update-Help from a PowerShell session to update the help files PowerShell uses for various modules. But this is something that can be easily forgotten, and, who wants to manually do a recurring task, anyways?
Here is a function you can toss in your server build script to create a scheduled task that will automatically update PowerShell help every day at 7pm. The task runs as ‘system’, so we don’t have to worry about storing credentials. Here’s the function
function New-PSUpdateHelpScheduledTask { [CmdletBinding(SupportsShouldProcess = $true)] param() BEGIN{ [string] $TaskArguments = '-NoProfile -Command "& {Update-Help -Force; Start-Sleep -Seconds 5; Get-ChildItem $env:temp -Recurse -ErrorAction SilentlyContinue | Where-Object {$_.PSIsContainer -eq $True -and $_.GetFiles() -match ''.cab''} | Remove-Item -Recurse -Force}"' [string] $TaskProgram = "$env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell.exe" } PROCESS{ $TaskAction = New-ScheduledTaskAction -Execute $TaskProgram -Argument $TaskArguments $TaskTrigger = New-ScheduledTaskTrigger -Daily -At 19:00 Register-ScheduledTask -TaskName "Update PowerShell Help" -Action $TaskAction -Trigger $TaskTrigger -RunLevel Highest -User "system" -Description "Automatically updates PowerShell help." | Out-Null } END { Remove-Variable TaskAction Remove-Variable TaskTrigger } } # end function New-PSUpdateHelpTask
and merely call it using
New-PsUpdateHelpScheduledTask
You’ll notice a new scheduled task in Task Scheduler, and we see that it completed successfully.
Just a couple of lines of code and we’ve removed the need to manually run Update-Help on a server.
Hope this helps!
Donations
I’ve never been one to really solicit donations for my work. My offerings are created because *I* need to solve a problem, and once I do, it makes sense to offer the results of my work to the public. I mean, let’s face it: I can’t be the only one with that particular issue, right? Quite often, to my surprise, I’m asked why I don’t have a “donate” button so people can donate a few bucks. I’ve never really put much thought into it. But those inquiries are coming more often now, so I’m yielding to them. If you’d like to donate, you can send a few bucks via PayPal at https://www.paypal.me/PatRichard. Money collected from that will go to the costs of my website (hosting and domain names), as well as to my home lab.
Excellent.! Would you happen to know how to create hierarchical folder inside Task Scheduler with PowerShell?
There is a well-known issue with Update-Help if running on a server that is behind proxy, google is full with such reports. So if you have problem with that, this script wont solve it either (as in the deep it is running the same Update-help cmdlet).