Lenovo ThinkPad P51s Review

Thanks to Lenovo and their Lenovo Insiders program #LenovoIN,  I received a new Lenovo ThinkPad P51s.

I’ve previously reviewed the ThinkPad P50 (which has been superseeded by the ThinkPad P51) which is the big brother or sister to this device. Where the P51 is a top end workstation with multiple hard drive bays, 4 RAM slots and so on, the P51s drops a few of these extra features to be a bit more mobile, while still fitting in the workstation class.

Tech Specs

Here’s an overview of the possible technical specifications of the P51s, with the options I have on this model bolded. I’ll talk in more details about some of these below.

Processor

  • 7th Gen Intel® Core™ i5-7300U Processor (3M Cache, 2.6GHz, max. 3.5GHz), vPro
  • 7th Gen Intel Core i7-7500U Processor (4M Cache, 2.7GHz, max. 3.5GHz)
  • 7th Gen Intel Core i7-7600U Processor (4M Cache, 2.8GHz, max. 3.9GHz), vPro
Operating System
  • Windows 10 Home 64-bit
  • Windows 10 Pro 64-bit
Display

  • 15.6″ FHD (1920 x 1080), anti-glare, IPS, 250 nits, 700:1 contrast ratio
  • 15.6″ FHD (1920 x 1080), anti-glare, IPS, 250 nits, 700:1 contrast ratio, with on-cell touch
  • 15.5″ UHD (3840 x 2160), anti-glare, IPS, 300 nits, 1300:1 contrast ratio
Graphics
  • Intel HD Graphics in processor and NVIDIA® Quadro® M520M, 2GB GDDR5 memory
Memory

  • Up to 32GB / DDR4 2400MHz1, dual-channel capable, 2 x SO-DIMM sockets ( 2 X 8gb16Gb)
Webcam
  • HD 720p
Storage
  • SSD / SATA 6Gb/s: 128GB
  • SSD / PCIe NVMe, 8Gb/s, OPAL 2: 256GB / 512GB / 1TB
  • HDD / SATA, 6Gb/s, 2.5″, 7mm high: 500GB 7200RPM / 1TB 5400RPM
Dimensions (W x D x H)
  • 365.8 x 252.8 x 19.95 – 20.22 mm
Weight
  • Discrete non-touch:
    • With 4 + 3-cell: starting at 1.99 kg
    • With 4 + 6-cell: starting at 2.18 kg
  • Discrete multi-touch:
    • With 4 + 3-cell: starting at 2.01 kg
    • With 4 + 6-cell: starting at 2.20 kg
Internal battery
  • Integrated 4-cell (32 Wh)
External battery
  • 3-cell (24 Wh) or 6-cell (72 Wh)
Battery life
  • 4 + 3-cell: up to 13.5 hours
  • 4 + 6-cell (72 Wh): up to 26.4 hours
AC adaptor
  • 65W
Keyboard
  • 6-row, spill-resistant, multimedia Fn keys, numeric keypad, optional backlight
Fingerprint reader
  • Swipe style fingerprint reader on the palm rest (optional)
Audio support
  • HD Audio, Realtek® ALC3268 codec / stereo speakers, 2W x 2 / dual array microphone, combo audio/microphone jack
Ethernet
  • Intel Ethernet connection
Wireless LAN

  • Intel Dual Band Wireless-AC 8265, 2×2, Wi-Fi + Bluetooth® 4.14, M.2 Card
  • Intel Tri-Band Wireless-AC 18265, 2×2, WiGigTM + Wi-Fi + Bluetooth® 4.14, M.2 Card (configurable from model with UHD display only)
 Ports
  • 3 x USB 3.0 (1 x AlwaysOn)
  • 1 x USB-C/Thunderbolt
  • HDMI
  • Ethernet (RJ45)
  • Combo audio/mic
  • CS13 Docking
  • Media card reader (SD 3.0 UHS-I)
  • Smart Card Reader (optional)

Processor: It’s always nice to have the fastest. This has Intel 7th gen CPU options, which now are 1 behind the latest, but usually between single generations there’s not that much of a difference.

Display: Would have been nice to have touch screen, but I’m still happy with a 1080p res. Above that, and Windows 10 scaling + remote desktopping doesn’t usually make for a good experience. It seems like a higher quality display than what’s on my P50, something a bit more crisp about it.

Graphics: Having a dedicated graphics card is always a bonus on a laptop, and the 2GB NVIDIA Quadro M520M is about the same as a GeForce 940MX if you’re looking up benchmarks. This should give you high level gaming at 720p, or decent level gaming at 1080p.

Lenovo ThinkPad P51s Display

Memory: It doesn’t have 4 slots like it’s P51 sibling, but can still take two 16GB sticks. This one has two 8GB sticks which is plenty, but if I wanted to run lots and lots of VMs or a few beefy ones, I might upgrade that amount.

Battery: This took me a little bit to realise. There’s both an internal battery, and an external battery. I first connected the battery that came with it and noticed it was only 3 cell. I thought that wasn’t too big, but then found it also had a 4 cell battery inside. If you remove the external battery and the power plug, the laptop keeps going. 13.5 hours is a pretty good claim, and makes sense with that much battery power. It starts getting crazy with a 26.4 hour claim when using a 6 cell battery plus the internal 4 cell, and a good option if you really need your laptop to stay awake longer than you will.

Ports: Let’s look at each side of the laptop –

Left side – Rectangle charger plug, USB3, USB-C, Smartcard slot (filled in on this one)

Back – Nothing to see here, battery and hinges

Right side – 3.5mm headphone port, 2x USB3, full HDMI, full Ethernet

Another point I noticed about this laptop is that it came with a USB-C power cable, but still had provision for the older rectangle power cord. Handy if you have those from the last few years of ThinkPads as either port will charge the laptop.

Keyboard: Most people are fans of the ThinkPad style of keyboards, and this one even has a number pad. Nothing too different or tricky here – I liked the feel of both the keys and the trackpad on this model, and there’s no buttons that felt out of place for me (good to see Caps Lock where it should be!)

Lenovo ThinkPad P51s Keyboard

Other observations: The circular power button felt slightly off center, as in the left side of the button dipped in further than the right side. Not something that will make any difference, and isn’t visible unless you look really closely, but still worth mentioning to anyone that will notice non-perfect things like me :)

At around 2KG the laptop isn’t light, but it’s much lighter than the P50 on my desk. It feels solidly built, the hinge style seems strong and there’s very little screen wobble. The fingerprint reader is also nice for Windows Hello, but this unit actually came with Infa red cameras too – meaning I can use my face to log in. You visibly see something flashing when it tries to read your face (at a guess they’ve got some sort of film over the lenses to show that, since IR is invisible to our eyes normally.

Beyond that, I’m very happy with this laptop. There’s no frills to it’s appearance, so it’s square and black like most ThinkPads, but it’s enjoyable to use with a screen that has a decent bezel.

The laptop is also pretty much a ThinkPad T570 with a Quadro graphics card in it, so if you’d rather the consumer Geforce option, check that out too. If you’re looking at videos on how to take this laptop apart, the T570 is identical.

Lenovo ThinkPad P51s vs P51 or P71: If you’re wondering which to get, the main decision is purely tech specs based. The P51s can take 2 RAM sticks, for a max 32GB RAM. The P51 however has 4 slots, which doubles the max to 64GB.

It’s similar with the hard drives – a single drive in the P51s, versus the P51 that can hold either; a combo of two M.2 drives and one 2.5″ drive, or two 2.5″ drives. The third spec factor is the dedicated graphics card which in the P51 has 4GB RAM rather than the P51s’ 2GB. The M2200 is also a higher end card than the M520, and worth looking up comparisons on performance.

Finally the CPU, although the P51s can take a high end i7, it’s still not the Xeon you can get in the P51. Deciding what you want and need in specs, or leaving your options for upgrading in the future. If you don’t need the high end options, the P51s is a great choice which comes in a much thinner form factor, and a bit less weight.

All the above applies to the P71 too, just with a larger 17.3″ screen.

Feel free to ask any questions below about the laptop, and I’ll leave a banner here that should update on any Lenovo Australia deals currently on offer:

Microsoft Word – Show all formatting marks

Microsoft Word 2016 and earlier versions have a handy toggle for ‘Show/Hide paragraph marks and other hidden formatting symbols’. It’s that backwards P looking thing in the Word ribbon:

… but also choosable from Word’s options under the Display section, called ‘Show all formatting marks’:

By default, this option is off. I had a business requirement to have it on by default, which proved harder to work out than I thought.

Normally for Word and Office, a user option is controlled by the registry. Procmon is great for capturing those changes, but I couldn’t see anything when toggling this option.

Jeremy Moskowitz from PolicyPak gave me a hint on finding the solution on this one; Word sets some of it’s user settings at the time of closing Word, rather than changing an option and pressing ‘OK’.

Once I knew that, the setting was easy to find.

HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\Options

DWORD Value - ShowAllFormatting

1 - Enabled / On

0 - Disabled / Off

Word will read this setting at startup, and write to it at shutdown based on what the setting was last set to.

Using Group Policy Preferences and setting the option ‘Apply once and do not reapply’ to push out the registry setting will make it the default, but let users change it as they please.

Deploying a Locked Down Start Menu in Windows 10

The tiles in Windows 10’s Start Menu can be rather messy. By default, you get a lot – and they may be things you don’t want there such as News, Sports, Photos, Microsoft Store etc.

Since Windows 10 1607, there’s been a way to control this. Customize Windows 10 Start and taskbar with Group Policy covers how to do this, but there’s some errors and links that don’t work, so I thought it was worth giving a quick overview on how to do this.

Keep in mind that this process locks down the Start Menu tiles completely, users won’t be able to add, remove or change anything to do with tiles.

The first step is to configure the Start Menu tiles how you want them on a computer. You can add, remove, move, resize etc until you’re happy with how it looks.

Once that’s done, you’ll need to export the layout to an XML file. Easily done by opening PowerShell and running Export-StartLayout. This needs the -Path switch, e.g. Export-StartLayout -Path “C:\temp\startmenu.xml”

Copy the resulting startmenu.xml file into a central location that clients will be able to access, or copy it out to each machine through Group Policy Preferences. This XML file will be called in the Group Policy setting “Start Layout”.

The Group Policy setting called “Start Layout” lives in User Configuration or Computer Configuration > Policies> > Administrative Templates >Start Menu and Taskbar. You’ll probably want this at the user level rather than the computer level, but it depends at what layer you want this locked down at. 

If you can’t see this policy at all, then you may need to update your Group Policy templates. Each time a new version of Windows 10 comes out, there’s usually new or updated Group Policies to use. There’s a good step-by-step here if you need help – I’d recommend downloading the templates that match the latest version of Windows 10 you’re managing.

Start Layout in Group Policy

For this policy, you’ll be setting the radio button to Enabled, and setting the Start Layout File value to the path of the XML file that you copied out or placed centrally.

Start Layout Settings

Once that is done, the Group Policy object containing this setting needs to be pointed at the users or computers you want it to apply to, just like any other Group Policy.

The end result is the client then having the same Start Menu tiles configured in the XML file.

You may find that some of the tiles are missing. I’ve seen this happen when the shortcut the XML points to isn’t in the location expected. Here’s an example XML file with just one tile configured for Notepad:

<LayoutModificationTemplate xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout" Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification">
 <LayoutOptions StartTileGroupCellWidth="6" />
 <DefaultLayoutOverride>
 <StartLayoutCollection>
 <defaultlayout:StartLayout GroupCellWidth="6">
 <start:Group Name="">
 <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\Notepad.lnk" />
 </start:Group>
 </defaultlayout:StartLayout>
 </StartLayoutCollection>
 </DefaultLayoutOverride>
</LayoutModificationTemplate>

When a Tile is added to the Start Menu, if it doesn’t exist already, it will create a .LNK file and uses that for the tile. You may need to copy these off the computer you created the tiles on the in first place too, and copy them out to the same path on the computers you’re pushing this setting to.

You can also manually update or change the XML file yourself, which can sometimes be easier than going through the whole export process again.

One last thought I have on this, is that you can have multiple XML files going to different computers or users based on their requirements – but don’t over complicate things or you’ll be constantly managing tiles!

Windows Store Error 0x8024500c

I was getting this error company wide when trying to install any app from the Windows Store on a domain joined computer. The store was fully navigational, but any app I tried to install would instantly error. Showing the details would reveal Error Code 0x8024500c.

This is a fairly standard error code and there’s a lot of reasons already posted online; but for me it was one simple Group Policy setting:

Do not connect to any Windows Update Internet locations

Help:

Even when Windows Update is configured to receive updates from an intranet update service, it will periodically retrieve information from the public Windows Update service to enable future connections to Windows Update, and other services like Microsoft Update or the Windows Store.

Enabling this policy will disable that functionality, and may cause connection to public services such as the Windows Store to stop working.

Note: This policy applies only when this PC is configured to connect to an intranet update service using the “Specify intranet Microsoft update service location” policy.

Back in the Windows 7 days, it makes sense to disable this if you want to force clients to only use your WSUS servers and control the experience. However, it completely breaks the Windows Store!

You can find this policy under Computer Configuration > Policies > Administrative Templates > Windows Components > Windows Update.

Note that this doesn’t seem to break the private Business Store section if you have that configured up, which can be a nice way of controlling the apps your users see.

Update 14th December 2017

A friend pointed this out to me – before changing this setting, be aware that there’s a bug with Windows 10 Pro that is fixed in KB4053580: 

Exchange Online and Exchange On-Premises Security Groups

I had a requirement come up where I needed a list of Exchange Online users as well as Exchange On-Premises users. If you’re hybrid or going through a long migration, there’s many scenarios where you want certain products or settings applied against the users and accounts based on where their mailbox is.

You could maintain that manually, but why do that when you can automate it!

Thankfully there’s two easy commands that will return accounts based on where they are – get-mailbox and get-remotemailbox. As long as you’re in Exchange Hybrid mode, you can run both of these commands against your local Exchange server.

Here’s the quick script I wrote up:

$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://exchange server name/Powershell -Authentication Kerberos
Import-PSSession $session
$remoteusers = Get-RemoteMailbox -resultsize unlimited
$onpremusers = Get-mailbox -resultsize unlimited
$remotegroup = "Exchange Online Users"
$onpremgroup = "Exchange OnPrem Users"

Get-ADGroup $remotegroup | Set-ADObject -clear member
Get-ADGroup $onpremgroup | Set-ADObject -clear member

foreach ($user in $remoteusers){
Add-ADGroupMember -Identity $remotegroup -Members $user.SamAccountName
}

foreach ($user in $onpremusers){
Add-ADGroupMember -Identity $onpremgroup -Members $user.SamAccountName
}

Remove-PSSession $Session

All I’m doing here is getting the two user types and putting them into variables – $remoteusers and $onpremusers. I’ve also used the group names as variables, so you can create whatever AD groups you like and put them into the $remotegroup and $onpremgroup variables.

Also I’m clearing out all members of the group before adding users, which means if someone gets migrated or leaves, they’ll be cleaned up from the old group properly.

Finally I’m going through the two users lists and using ‘foreach’ to add each user to the relevant group, using the SamAccountName value of each result to identify them.

It’s only a basic script, but you can easily add extra filters to the Get-Mailbox and Get-RemoteMailbox commands to do things such as only getting users from certain OUs.

This was tested on Exchange 2010, so if you get different results on Exchange 2013 or 2016 please let me know.