Delivering PowerShell code with the November preview

Step one of investigating OneGet and PowerShellGet – install the latest preview.  I have the environment I used for the demos at the European PowerShell Summit with a machine set up for DSC. Its currently running the September preview:

ÂŁ> $PSVersionTable

Name                           Value
—-                           —–
PSVersion                      5.0.9814.0
WSManStackVersion              3.0
CLRVersion                     4.0.30319.34014
BuildVersion                   6.4.9814.0
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.2


The November preview is supposed to install over the top of the September preview. I’m installing on to  Windows 2012 R2 so I want:


The target machine is fully patched apart from the November Windows 2012 R2 roll up.

Installation occurred with out a problem. – I like the change to being able to just install over the top of pervious versions.  After the usual restart the version has changed.

ÂŁ> $PSVersionTable

Name                           Value
—-                           —–
PSVersion                      5.0.9883.0
WSManStackVersion              3.0
CLRVersion                     4.0.30319.34014
BuildVersion                   6.4.9883.0
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.2


The PowerShellGet module contains these cmdlets:



The module type is Script meaning it contains PowerShell Advanced functions.  You can see the code at C:WindowsSystem32WindowsPowerShellv1.0ModulesPowerShellGet


Just make sure you don’t change anything.


First thing is to see what repositories we’ve got:

ÂŁ> Get-PSRepository | fl

Name               : PSGallery
SourceLocation     :
Trusted            : False
Registered         : True
InstallationPolicy : Untrusted
OneGetProvider     : NuGet
PublishLocation    :
ProviderOptions    : {}

Name               : MSPSGallery
SourceLocation     :
Trusted            : True
Registered         : True
InstallationPolicy : Trusted
OneGetProvider     : NuGet
PublishLocation    :
ProviderOptions    : {}


Notice that PSGallery is not trusted but MSPSGallery is trusted.

If you want to see the modules available use Find-Module.  

The first time you do expect this:

ÂŁ> Find-Module

NuGet-anycpu.exe is required to continue.
PowerShellGet requires NuGet-anycpu.exe to interact with NuGet based galleries. NuGet-anycpu.exe must be available in
‘C:Program FilesOneGetProviderAssemblies’ or ‘C:UsersRichardAppDataLocalOneGetProviderAssemblies’. For more
information about NuGet provider, see Do you want PowerShellGet to download
NuGet-anycpu.exe now?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"):


You’re going to have to download the nuget file to continue.


On many modules I get this error:

Cannot convert value "18/12/2014 04:22:19 +00:00" to type "System.DateTime". Error: "String was not recognized as a valid DateTime."
At C:Windowssystem32WindowsPowerShellv1.0ModulesPowerShellGetPSGet.psm1:1402 char:49
+ …               PublishedDate = if($published){ [DateTime]$published };
+                                                   ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvalidCastParseTargetInvocationWithFormatProvider


If you use:

Find-Module -ErrorAction SilentlyContinue

You will get a display like this:

Version  Name           Repository Description
——-   —-                ———- ———–
1.0.0      xFirefox       PSGallery  Firefox Main module
1.0.0      xChrome      PSGallery  Module for installing the chrome xJea              PSGallery  Module with DSC Resources for  (JEA)

and many more.


The date related error isn’t consistent – for instance the Pester module:

ÂŁ> Find-Module -Name Pester | fl *

Name                       : Pester
Version                    : 3.2.0
Description                : Pester provides a framework for running BDD style Tests to execute and validate PowerShell commands inside of PowerShell and offers a powerful set of Mocking Functions that allow tests to mimic and mock the functionality of any command inside of a piece of powershell code being tested. Pester tests can execute any command or script that is accesible to a pester test file. This can include functions, Cmdlets, Modules and scripts. Pester can be run in ad hoc style in a console or it can be integrated into the
Build scripts of a Continuous Integration system.
Author                     : Pester Team
CompanyName                :
Copyright                  : Copyright (c) 2014 by Pester Team, licensed under Apache 2.0 License.
PublishedDate              : 12/03/2014 17:38:11
LicenseUri                 :
ProjectUri                 :
IconUri                    :
Tags                       : {powershell, unit, testing, bdd…}
Includes                   : {Function, DscResource, Cmdlet, Command}
PowerShellGetFormatVersion :
ReleaseNotes               :
RequiredModules            :
RepositorySourceLocation   :
Repository                 : PSGallery
OneGetProvider             : NuGet


But looking at the Pester module in the PowerShell gallery – – it shows a date of 2014-12-03  i.e. 3 December 2014.  My system is interpreting that as 12 March 2014 because I’m using the English convention for dates in my culture settings.

ÂŁ> $PSCulture
ÂŁ> $PSUICulture



Set-Culture -CultureInfo en-US


Restarting PowerShell then running

ÂŁ> $PSCulture
ÂŁ> Find-Module

Stops the error messages so


Find-Module | select Name, Version, PublishedDate

works. Just remember your dates are in US format – Month/Day/Year


The last step is downloading and installing a module. The Install-Module cmdlet does that for us.

ÂŁ> Get-Command Install-Module -Syntax

Install-Module [-Name] <string[]> [-MinimumVersion <version>] [-RequiredVersion <version>] [-Repository <string[]>]
[-Scope <string>] [-Force] [-WhatIf] [-Confirm] [<CommonParameters>]

Install-Module [-InputObject] <psobject[]> [-Scope <string>] [-Force] [-WhatIf] [-Confirm] [<CommonParameters>]


Notice that there isn’t a choice of destination. You

ÂŁ> Install-Module -Name Pester

You are installing the module ‘Pester’ from an untrusted repository. If you trust this repository, change its InstallationPolicy value by running the Set-PSRepository cmdlet.
Are you sure you want to install software from ‘’?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): y


This installs the module:

> Get-Module -ListAvailable p*

   Directory: C:Program FilesWindowsPowerShellModules

oduleType Version    Name                                ExportedCommands
——— ——-    —-                                —————-
cript     3.2.0      Pester                              {Describe, Context, It, Should…}


C:Program FilesWindowsPowerShellModules was added to the modules path in PowerShell 4.0 and is the default location for DSC resources.


£> Install-Module -Name Pester –Force

Will override the message asking for confirmation.

Removal instructions for GameTrekkers

What is GameTrekkers?

The Malwarebytes research team has determined that GameTrekkers is a browser hijacker. These so-called “hijackers” manipulate your browser(s), for example to change your startpage or searchscopes, so that the affected browser visits their site or one of their choice. This one also displays advertisements.

The MVPS HOSTS file was recently updated December 20-2014

Blocking Unwanted Connections with a Hosts File

The MVPS HOSTS file was recently updated [December 20-2014]

Download: (134 kb)

How To: Download and Extract the HOSTS file

HOSTS File – Frequently Asked Questions

Note: the “text” version (507 kb) makes a great resource for determining possible unwanted connections …

Get notified when the MVPS HOSTS file is updated

If you find the MVPS HOSTS file useful … please consider a donation …

These annoying crashes..

No dump files, no BSODs, no nothing, just shutting off faster than you can ever get Windows to shut down normally. This has been what my PC has been doing at least once per day for the last two weeks.

I haven’t added hardware or software for quite a while and the PC is not running hot. There are no error messages of any kind and Event Viewer is .. well it’s Event Viewer.. Smile

So, just a few minutes ago, I installed the latest AMD chipset drivers and Realtek’s NIC driver for this PC, and all I can do now is wait and see what happens next,

Watch out for an update on this one..

Speeding up your AngularJS applications

In general AngularJS applications are quite fast, specially when compared to more traditional browser based applications that constantly post back to the server. However there are always a few things that will help performance and make an application even faster.


Disabling Debug Data

Normally AngularJS adds several things like CSS classes and some scope related properties to DOM elements. This is not really needed to run the application and is really only done to help development tools like Protractor and Batarang. When the application is in production that is not really needed and you can save some overhead by disabling this using the $compileProvider.debugInfoEnabled() function.

   1: demoApp.config(function($compileProvider) {
   2:   $compileProvider.debugInfoEnabled(false);
   3: });


Explicit dependency injection annotations

Another option to speed up your application is by using explicit dependency injection annotations. If the DI annotations are not present AngularJS has to parse functions to see the parameter names, something that can be avoided by adding the explicit annotations. The annotations can be added manually, which can be tedious to do, or automatically using something like ng-annotate with either a Gulp or Grunt task.

Adding the ngStrictDi directive to the same element as the ngApp directive can help you find


Reducing the number of $apply() calls

Another helpful option is to reduce the number of $apply() calls that are the result of $http request finishing. When you are doing multiple $http requests when a page loads each will trigger a $apply() function causing all watches and data bindings to be reevaluated. By combining these into a single $apply() call for requests that are done at almost the same time we can increase the load speed of you application, something that can be done using $httpProvider.useApplyAsync().

   1: demoApp.config(function($httpProvider) {
   2:   $httpProvider.useApplyAsync(true);
   3: });



Microsoft Security Bulletin Minor Revisions Issued: December 19, 2014


The following bulletins and bulletin summary have undergone a minor
revision increment.

Please see the appropriate bulletin or bulletin summary for more

* MS14-051 – Critical
* MS14-052 – Critical
* MS14-076 – Important
* MS14-AUG
* MS14-NOV

Bulletin Information:

MS14-051 – Critical

– Title: Cumulative Security Update for Internet Explorer
– Reason for Revision: V1.2 (December 19, 2014): Corrected the
severity table and vulnerability information to add CVE-2014-6354
as a vulnerability addressed by this update. This is an
informational change only. Customers who have already
successfully installed the update do not have to take any action.
– Originally posted: August 12, 2014
– Updated: December 19, 2014
– Bulletin Severity Rating: Critical
– Version: 1.2

MS14-052 – Critical

– Title: Cumulative Security Update for Internet Explorer
– Reason for Revision: V1.1 (December 19, 2014): Revised bulletin
to change Known Issues entry in the Knowledge Base Article section
from “None” to “Yes”. Corrected mitigations and workarounds for
the Internet Explorer Resource Information Disclosure
Vulnerability (CVE-2013-7331).
– Originally posted: September 9, 2014
– Updated: December 19, 2014
– Bulletin Severity Rating: Critical
– Version: 1.1

MS14-076 – Important

– Title: Vulnerability in Internet Information Services (IIS) Could
Allow Security Feature Bypass
– Reason for Revision: V1.1 (December 19, 2014): Bulletin revised
to include Windows 2012 Server Core installation and Windows 2012
R2 Server Core installation as affected software.
– Originally posted: November 11, 2014
– Updated: December 19, 2014
– Bulletin Severity Rating: Important
– Version: 1.1
Bulletin Summary Information:


– Title: Microsoft Security Bulletin Summary for August 2014
– Reason for Revision: V2.2 (December 19, 2014): For MS14-051,
added an Exploitability Assessment in the Exploitability Index for
CVE-2014-6354. This is an informational change only.
– Originally posted: August 12, 2014
– Updated: December 19, 2014
– Version: 2.2


– Title: Microsoft Security Bulletin Summary for November 2014
– Reason for Revision: V2.1 (December 19, 2014): Bulletin Summary
revised to include Windows 2012 Server Core installation and
Windows 2012 R2 Server Core installation in the Affected
Software table for MS14-076.
– Originally posted: November 11, 2014
– Updated: December 19, 2014
– Version: 2.1

Surface Power Cover

I just picked up a couple of Surface Power Covers. They were on sale and it seemed to be good value to get them now. I run long Skype sessions with screen sharing and these chew up battery life. The Surface Power Covers help with that.

Power Cover

If you follow the instructions and remove the warning label on the connector, the Surface Power Cover works with Surface Pro 3 as well as the Surface Pro 2, Surface Pro, and Surface 2.  It  will work as a keyboard only for a Surface (RT) – the original.

You have to do a Windows Update to install the drivers that allow you to see all the battery information described in this article.

Surface Power Cover

Tap or click the battery icon in the desktop tray to see the charge on each battery.

The typing experience is pretty much the same as the original type cover and that’s a good experience. The overall experience is better with the Surface Pro 3 type cover with the bigger touch pad. But when battery life is a priority, I’ll make the sacrifice.

The early reports about usability of the touch pad have been alleviated by firmware updates that work on both Surface Pro and Surface Pro 3. That is, you can:
  • double tap for left-click
  • tap-drag to select and
  • two-finger tap for right-click

This pretty eliminates my need to use the buttons on the bottom of the touch pad except when I need to do a right-click drag.

I was concerned about the weight, but if I need longer battery life, I’m probably stationery. Walking around in tablet mode is a secondary concern. Traveling around I’ve found that the weight is no more a burden than carrying the power supply and it fits better in my carrying case.  It’s a relief not to be looking for power outlets before I stake out territory in a room

The Power Cover can charge the Surface while the Surface is in sleep or standby mode. That means that if I’m in an all day session where I need to walk around with the Surface, when I’m on a break, I can snap on the Power Cover and charge the Surface just like I would take those opportunities to connect it to a charger, only now I don’t need to find an AC outlet.

Here’s an excerpt from the article above describing the charging sequence.

Charging sequence

The Surface and Power Cover batteries are charged and discharged in a sequence designed to keep most of the charge on the Surface battery. Understanding the sequence makes it easier to predict how much charge to expect on each of the batteries.

Which battery gets charged first?

Once Surface is 80% charged, it starts charging the Power Cover. Then, when Power Cover is 80% charged, Surface finishes charging. When Surface is fully charged, Power Cover finishes charging. Power Cover will charge as long as Surface is turned on (sleep is fine) and connected to a power source, and Power Cover is connected to Surface.

battery charging sequence
How the batteries charge.

Which battery is used first?

When you’re using Surface and Power Cover and the Surface isn’t connected to a power source, Surface draws power from Power Cover first. When the Power Cover battery is drained, Surface switches to its own battery. Power Cover continues to charge your Surface while it is in sleep or on standby. If Surface is turned off and unplugged, or the Surface battery is completely drained, it can’t detect the Power Cover or draw power from it. If the battery on the Power Cover is completely drained, you can still use it as a keyboard.
So far, I’m very pleased with the Power Covers. I have the Surface Pro and Surface Pro3 docking stations. It’s easy to connect the Power Cover to the Surface while docked, and that’s convenient for charging the Power Cover as long as the Surface is in sleep or hibernation mode. It doesn’t charge when the Surface is off. Battery Life? From what I can see using BatteryBar, it looks like the Power Cover offers about 29 mWh to the 42 mWh to the internal battery in the Suface Pro3 for a total of about 71 mWh.   I haven’t had occasion to exhaust the system to find out how long that actually lasts, but from what I’ve seen that should be more than enough to get me through 7  or 8 hours of connected work.  That’s pushing hard.

I’m really excited about this!!

So a guy buys a cheap tablet thinking that it will cope with all of his needs..

“I have a cheap PC that has a small 32gb hard drive.”

It ISN’T a PC..

“When i first powered it on it had around 22-24gb of usable space. it crashed and became unusable and couldn’t even go into recovery to format as new.”

Yep. Minimum specs strike again..

“i created a bootable usb with 8.1 and installed it but i couldnt activate it because my key is for a crippled version of 8.1 (8.1 w/ bing). “

It’s not getting any better, is it.

“so I have tried a few times to re-install windows from scratch before I realized my code was never going to work.”

Oh the joys of ‘new ways’

“So now I sit here with 5gb usable space and no apps installed and nothing on the computer”

Brilliant stuff. Between Microsoft and the computer manufacturers, yet another user has been sent up a creek with no paddle.

“I’m guessing it’s all the old installed copies i had installed and maybe recovery partitions (that i could never access in the first place). How can i free up all this space? I’m planning on buying a full copy of windows 8.1 and starting from scratch again.”

This is the end game for so many people, and is representative of what I see in the forums all too often.

I used to allow 40gb for an XP installation plus programs and updates, but in those days there was no recovery partition and no digital cameras in the wings. Mind you, there were still some incredibly badly specified computers around where price was the most important issue and to hell with how they worked in practice.

Nothing has changed.

In the course of my business, I have backed up as much as 50gb of music, photos and documents from client machines. That’s 18gb more than the machine above holding the OS and associated junk has got.

Did the sales person in the store tell the people that a tablet would do all that a laptop could do? Hey, he/she needs the commission and says whatever it takes to get a sale. The store manager makes those rules because he/she is under the same pressure from the Area Manager. The computer/tablet manufacturers don’t give a hoot beyond ensuring that their own products will be selected first because they are cheaper.

As usual, it is the end customer who loses out. Just like auto dealers, once the product has been sold, they lose interest FAST.

In conclusion:

One has to wonder how long the excitement lasts for computer end users. My excitement with Windows 8 initially lasted two, after which all apps stopped working and refused all fix attempts and I am a skilled tech !!

In the case of the user stuff at the top of this post, the user simply ran out of space. Surprise surprise with only 32gb less the OS available to him.

What advice would you give to him? My advice is to get the laptop back out and run the updates..


Weekend reading

Comparison of database systems

Was today directed to a nice little site giving the differences between different database systems. Its a nice succinct table of features There is however an issue having yes and no answers to many of…(read more)
Source: Simon

Simplifying ADO.NET Data Access, Part 5

This is a continuation of the series on simplifying data access using ADO.NET.  We have a little cleanup to do around parameters before finishing up the series.

Generic Parameters

In the last article we defined the DataParameter class to represent a (database agnostic) parameter and value. At the time we used object for the type of the parameter value. This is convenient for working with parameters in a generic manner but for clients we want to use a strongly typed parameter so we will create a new, derived type from DataParameter that accepts the type of the parameter value. Under the hood we will continue to use the non-generic version but consumers of the code will use the generic version, in most cases.

public class DataParameter<T> : DataParameter
    public DataParameter ( string name ) : base(name, DbTypeMapper.ToDbType(typeof(T))
                                                , ParameterDirection.Input)
    { }

    public DataParameter ( string name, ParameterDirection direction ) : base(name, 
                                    DbTypeMapper.ToDbType(typeof(T)), direction)
    { }

    public T TypedValue
            if (Convert.IsDBNull(Value) || (Value == null))
                return default(T);

            return (T)Convert.ChangeType(Value, typeof(T));

            Value = value;

The only hard part is mapping the CLR type to a DbType. To help with this we introduce a mapping class (included in the source). For most cases the mapping class is sufficient. If you need something more complicated or extensible then feel free to replace the mapper with something else. Under the hood the mapper simply uses a dictionary to map CLR types to the corresponding enum value.

Fluent Parameters

With strongly typed parameters defined we can now switch our focus to making parameter creation more fluent. Depending upon the kind of parameter we can expose a fluent API to allow the core properties to be set.

  • Input parameters – name, type and value
  • Output parameter – name, type
  • input/output parameter – name, type and value
  • Return value – ignored

While a client could use a (raw) DataParameter<T> we’ll create a couple of derived types to represent each of the parameter kinds along with a simple fluent interface to set the core properties. Here’s the code for an input parameter.

public class InputParameter
    private InputParameter ( string name )
        if (name == null)
            throw new ArgumentNullException("name");
        if (String.IsNullOrEmpty(name))
            throw new ArgumentException("Name cannot be empty.", "name");

        m_name = name;

    public static InputParameter Named ( string name )
        return new InputParameter(name);

    public InputParameter<T> WithValue<T> ( T value )
        return new InputParameter<T>(m_name).WithValue(value);

    private readonly string m_name;

The InputParameter type is a builder and therefore does not derive from DataParameter. This ensures that the type is defined by setting a value for the parameter. The builder ultimately returns a concrete type of InputParameter based upon the value assigned to it.

public class InputParameter<T> : DataParameter<T>
    public InputParameter(string name) : base(name, ParameterDirection.Input)
    { }

    public InputParameter<T> WithValue(T value)
        this.Value = value;

        return this;

Now the client code becomes much clearer as to what parameters are being passed in and what are being returned.

var cmd = new AdhocQuery("SELECT Id, Name FROM Users where Id = @id").WithParameters(

CAVEAT: The fluent interface around creating non-generic parameters has changed of recent so there may be some bugs that have not been found in the newer code.

Next Article

We are finished with parameters but we still have a few more areas to simplify so we will defer until next time.

How to Open Settings in Windows 10

Starting in the Windows 10 Preview 9901 build, PC settings and zPC settings have been merged and replaced with a new Settings app now.

Most of the settings you’ll want to change in Windows 10 are in Settings. Settings is organized into the separate System, Devices, Network & Internet, Personalization, Accounts, Time & language, Ease of Access, Privacy, and Update & recovery categories. You can click/tap on a category to view and change more settings for that category.

This tutorial will show you different ways on how to open the Settings app in Windows 10.

Read more…

Removal instructions for AVC Plus

What is AVC Plus?

The Malwarebytes research team has determined that AVC Plus is a fake anti-malware application. These so-called “rogues” use intentional false positives to convince users that their systems have been compromised. Then they try to sell you their software, claiming it will remove these threats. In extreme cases the false threats are actually the very trojans that advertise or even directly install the rogue.

Removal instructions for TotalComicBooks

What is TotalComicBooks?

The Malwarebytes research team has determined that TotalComicBooks is a browser hijacker. These so-called “hijackers” manipulate your browser(s), for example to change your startpage or searchscopes, so that the affected browser visits their site or one of their choice. This one also displays advertisements

AVLab Internet Security Removal Guide

AVLab Internet Security is a rogue anti-spyware programs from the Rogue.FakeRean-Braviax family of computer infections. This infection is considered a rogue anti-spyware program because it purposely displays fake scan results, false security warnings, hijacks your web browser, and does not allow you to run your legitimate Windows applications. This scareware is promoted through web sites that have been hacked with scripts that try to install the software by exploiting vulnerabilities on your computer. It is also promoted through Trojans that pretend to be legitimate programs that are required to view an online video, but instead install the infection.

Windows 8.x – Server 2012: Créer un groupe de tuiles

Bonjour Ă  tous,

Cette semaine, une question pratique m’a Ă©tĂ© posĂ©e par un utilisateur dĂ©butant de Windows 8.1 aprĂšs une longue pĂ©riode sous Windows XP.

“Comment fait-on pour crĂ©er un groupe de tuiles/Vignettes personnalisĂ© ?”

Il existe évidemment plusieurs méthodes pour créer ce groupe. Soit :

  • Il est crĂ©Ă© Ă  la demande des services lors du dĂ©ploiement du systĂšme d’exploitation. On se place alors dans le cas de l’entreprise.
  • L’utilisateur Windows le crĂ©e lui-mĂȘme manuellement lors de la phase de personnalisation du systĂšme.

A ce propos, si le sujet liĂ© Ă  la phase de dĂ©ploiement vous intĂ©resse, Ben Hunter (Solution Architect with Microsoft Consulting Services) a publiĂ© un billet de blog expliquant comment procĂ©der Clignement d'Ɠil
Et ici
Egalement les pages Microsoft Technet

Ceci étant précisé, nous pouvons maintenant revenir au but de ce billet
 Voyons comment faire.


Il faut savoir que l’écran d’accueil de Windows n’est pas un objet figĂ©; vous pouvez ajouter, dĂ©placer, grouper des tuiles (ou vignettes) qui ne sont ni plus ni moins que des raccourcis d’applications que vous avez connus avec les versions prĂ©cĂ©dentes de Windows. A ceci prĂšs que ces tuiles ou vignettes peuvent ĂȘtre dynamiques et donc afficher des informations “temps rĂ©el”, si vous ĂȘtes connectĂ©, comme c’est le cas pour les applications Courrier, Contact, Agenda

Depuis cet Ă©cran, vous pouvez :

  • lancer vos applications,
  • Ajouter, dĂ©placer, organiser ces applications,
  • Effectuer des recherches de ces applications ou de fichiers,
  • ParamĂ©trer Windows ou votre profil utilisateur,
  • AccĂ©der au bureau de Windows (comme si vous Ă©tiez sur XP ou Windows 7),
  • AccĂ©der au Windows Store pour acquĂ©rir des applications gratuites ou payantes,
  • Utiliser Internet Explorer

CrĂ©er un groupe d’applicationsApps

  1. InsĂ©rer la premiĂšre vignette en allant la chercher dans l’affichage des applications installĂ©es. Cliquez sur la flĂšche, en bas Ă  gauche de l’écran

  2. A l’aide du clic droit de la souris, cliquez sur l’icĂŽne de la premiĂšreEpingler application Ă  ajouter au groupe puis, sĂ©lectionner Epingler Ă  l’écran d’accueil.

    PrĂ©cision: La barre des tĂąches est celle que vous connaissez depuis les versions prĂ©cĂ©dentes de Windows oĂč s’accumulent les icĂŽnes d’applications ouvertes sur le bureau, les zones de lancement rapide et de notifications,  Clignement d'Ɠil. Barre des tĂąches qui, Ă©galement, n’est pas figĂ©e puisque vous pouvez la dĂ©placer, Ă  l’aide de la souris en haut, Ă  droite ou Ă  gauche de l’écran Clignement d'Ɠil.
  3. Depuis l’écran d’accueil, repĂ©rez la tuile, ici, Nettoyage de disque puis, Ă  l’aide deCrĂ©erGroupe la souris, faites la glisser entre 2 groupes de vignettes afin de faire apparaitre le nouveau groupe, matĂ©rialisĂ© par une barre verticale transparente. LĂącher la vignette; elle est maintenant dans le nouveau groupe



  4. Nous allons nommer ce groupe afin qu’il soit mieux identifiable. Cliquez au-dessus de la premiĂšre vignette puis,NommerGroupe sĂ©lectionnez Nommer les groupes.
  5. Saisissez le nom désiré puis cliquez en dehors de la zone de texte pour quitter le mode modification.
  6. Nous allons Ă©pingler Ă  l’écran d’accueil uneGlisserTuile deuxiĂšme vignette. Pour cela, nous procĂšderons comme en 2.
  7. A l’aide de la souris, dĂ©plaçons maintenant la nouvelle vignette vers ceDeplacerTuile groupe

Et voilĂ , ce n’est pas plus difficile que cela. Il est finalement plus long de l’expliquer que de rĂ©aliser cette personnalisation Clignement d'Ɠil

Pour ajouter d’autres vignettes au groupe, il suffit alors de reprendre les points 2, 6 et 7.

Bonne continuation avec Windows 8 Clignement d'Ɠil.

Removal instructions for DealPly

What is DealPly?

The Malwarebytes research team has determined that DealPly is a browser hijacker. These so-called “hijackers” manipulate your browser(s), for example to change your startpage or searchscopes, so that the affected browser visits their site or one of their choice. This one also displays advertisements.

Removal instructions for HD+v3

What is HD+v3?

The Malwarebytes research team has determined that HD+v3 is a browser hijacker. These so-called “hijackers” manipulate your browser(s), for example to change your startpage or searchscopes, so that the affected browser visits their site or one of their choice. This one also displays advertisements.

Selecting AD properties

Saw a question on the forums about selecting name properties using the Microsoft AD cmdlets.  By default Get-AdUser returns a limited subset of properties:

ÂŁ> Get-ADUser -identity richard

DistinguishedName : CN=Richard,CN=Users,DC=Manticore,DC=org
Enabled           : True
GivenName         :
Name              : Richard
ObjectClass       : user
ObjectGUID        : 7c42be70-c6b2-401f-8296-46de9ee7446c
SamAccountName    : Richard
SID               : S-1-5-21-195014076-723736408-1406369008-1104
Surname           :
UserPrincipalName :


Given name = first name


if you want other properties you have to explicitly aske for them using the –Properties parameter. You can use a wildcard * but if you have a big AD that could be a lot of unrequired data you are pulling back. On the other hand if you want a lot of properties its often simpler to use the wildcard. As with most PowerShell related things there is no answer that is right all of the time.


The user asking the question wanted the first name, last name and department for all users in a given OU.  Use the OU as the –SearchBase.  The property you need to explicitly ask for is Department:

ÂŁ> Get-ADUser -Filter *  -SearchBase ‘OU=Testing,DC=Manticore,DC=org’ -Properties Department | select GivenName, SurName, Department | fl *

GivenName  : Dave
SurName    : Green
Department : Testing


Selecting AD properties can be a little bit awkward if you forget that the default set is limited.  If in doubt of a property name – display them all for one user:

Get-ADUser -identity richard -Properties *

Reusing Validation Messages in AngularJS

One of the many new features in AngularJS 1.3 is the ability to reuse validation messages.

When displaying validation messages, you may find that you often reuse very similar messages:

“Class name must be entered.”  “Start date must be entered.”  “End date must be entered.”

Wouldn’t it be nice if you could reuse error messages instead of repeating them throughout the application? Angular 1.3 provides an ngMessagesInclude directive as part of the new Angular ngMessages module that allows you to share error messages throughout an application.

This post shows you how to use this new feature.

For more information about the new features in AngularJS 1.3, check out my latest Pluralsight course, authored with Joe Eames:

What’s New in Angular 1.3


Reusing validation messages in Angular requires the following steps:

  1. Create an HTML file for the common messages.
  2. Include the HTML file in the same element as ngMessages.
  3. Override any messages as required.

Let’s take it one step at a time.

NOTE: If you are new to using ngMessages, check out the Angular 1.3 course.

Create the Messages File

The first step is to create the HTML template file for the common message text. In this file, add HTML with an ng-message attribute for each message. The value of the ng-message attribute must be a valid $error object key. That key is often the name of the validation type, for example: required, minlength, or maxlength.

The message text itself should be generic, meaning it should not refer to specific field names or field requirements.

The resulting HTML file could look something like this:

<span ng-message=”required”>
This item cannot be blank.</span>
<span ng-message=”minlength”>
You have not met this item’s minimum length.</span>
<span ng-message=”maxlength”>
You have exceeded this item’s maximum length.</span>

Include the HTML File

The next step is to include the messages HTML file for each input element that wants to reuse the messages using ng-messages-include. Insert this directive in the same element containing the ng-messages directive.

The following shows an Email field with a label, textbox, and validation. The entire form-group is shown below to provide context for the validation messages.

<div class=”form-group”
     ng-class=”{‘has-error':classForm.inputInstructorEmail.$invalid &&
    <label class=”col-md-2 control-label”
           for=”inputInstructorEmail”>Instructor’s Email</label>

    <div class=”col-md-4″>
        <input class=”form-control”
               placeholder=”instructor’s email”
               minlength=”6″ />
    <span class=”help-block has-error”
          ng-messages-include=”app/errorMessages.html” >
        <span ng-message=”email”>
            Instructor’s email must be a valid email address.

Notice that the only ng-message directive included in the code above is for an invalid email address. This one is required here because it was not included in the messages html file.

Override Messages as Required

There may be times when you want a customized message. In those cases, you can easily override a message by simply adding a child element with an ng-message directive. The child element ng-message will always override any message defined for the same key in the included messages file.

    <span class=”help-block has-error”
          ng-messages-include=”app/errorMessages.html” >
        <span ng-message=”email”>
            Instructor’s email must be a valid email address.
        <span ng-message=”minlength”>
            Instructor’s email must be at least 6 characters in length.


Use this technique any time you want to reuse messages throughout your application.


Recent Comments