Quantcast
Channel: TechNet Blogs
Viewing all 17778 articles
Browse latest View live

New Online Technical Training for Deploying Enterprise Mobility Suite

$
0
0

TimTetrickPhoto

Tim Tetrick

image

Microsoft is seeing great momentum in its Enterprise Mobility Suite (EMS) and this is a prime opportunity for partners to start building their Microsoft Enterprise Mobility practice. Developed and delivered by our engineering teams, this in-depth level 300-400 technical training will equip you with the knowledge you’ll need to effectively deploy EMS!

The on-line training will consist of both technical videos and hands-on labs covering Hybrid Identity and Access Management (Azure Active Directory Premium), Microsoft Device and Application Management (Intune) and Information Protection (Azure Rights Management Service). Learn how to deploy Microsoft Enterprise Mobility Suite at your own pace.

Once you’ve completed the training, we encourage you to check back for any updates or to take certain components as a refresher. We are committed to keeping this evergreen and in future versions will incorporate Advanced Threat Analytics, hybrid scenarios, and business use case scenarios.

Additional training opportunities include:

Looking for additional resources to help you build your practice? Check out aka.ms/EMSPartner as your one-stop shop.


WMI Group Policy Filter issue on Windows 10 breaks Folder Redirection Windows Server 2012 R2 Essentials, Windows Server 2012 Essentials and Windows Small Business Server 2011 Essentials

$
0
0

Folder Redirection Group Policy setup by the Essentials Dashboard needs to be modified. The issue is caused by the WMI Group Policy filters which compare OS build number not working as expected on Windows 10.

Learn more about the issue

User needs to modify the group policy WMI Filter to fix the issue where folder redirection does not work:

  • Launch the group policy management console: 

    • Press Windows Key and “R”

    • Popped-up Run windows –Type gpmc.msc in the “Open” text box

    • Click OK 

  • Modify the WMI Group Policy Filter as the following: 

    • Once you launch the group policy editor, scroll to the bottom where the wmi filters reside.

    • Right click it and select “edit”, and bring up the filter.

    • Change it from select * from Win32_OperatingSystem where (Version >= “6.1%”) and ProductType= “1” to select * from Win32_OperatingSystem where Version like “10.%” or Version >=”6.1″

  

Thanks to Robert Pearman,Gary LeTourneau, Susan Bradley and Grey Lancaster.

For those on WSUS 3.0 SP2 (or SBS 2011)

$
0
0

As indicated in a previous post, we are making changes to WSUS 4.0 and later that will provide a smoother Windows 10 servicing experience.  Because WSUS 3.0 SP2 is already in extended support (receiving no support at all after July 2017), and we are not shipping these improvements further down-level, it is a good idea to start planning your WSUS migration now.  Here is some guidance on how to respond to the recent changes based on your current situation, with the assumption that you intend to deploy Windows 10 in your environment.

WSUS 3.0 SP2 standalone

For this scenario, Microsoft recommends setting up a new WS12R2 or (depending on when you deploy) WS16 server with WSUS and migrate your existing SUSDB to it.  For those unfamiliar, this is supported: TechNet has guidance on how to perform a WSUS migration.  Making this investment ensures that your environment will be capable of taking advantage of all the Windows 10 servicing improvements coming to WSUS in future updates.

WSUS 3.0 SP2 with Configuration Manager

The operative question is whether you want to deploy feature upgrades via WSUS instead of using task sequences, MDT, or other media-based deployment tools.  If you need this functionality, then Microsoft recommends migrating to a newer WSUS platform, same as for the standalone scenario.  If you intend to rely on media-based deployment for your upgrades, then you could continue using your setup as it is today; however, please be aware that any difficulties you experience with using WSUS 3.0 SP2 for Windows 10 servicing might not be addressed, and that hotfixes cannot be requested for this product.

SBS 2008 and SBS 2011 (which uses WSUS 3.0 SP2)

Here the recommendation is slightly different.  If you have need of third-party software update management, then investigating your options to migrate your WSUS deployment to a member server running Windows Server 2012 or later will prepare your environment for the best Windows 10 servicing experience.  If you do not require third-party software updates to be distributed via WSUS, then you might consider configuring your Group Policy settings to let Windows Update for Business manage your Windows 10 updates instead.  This solution is ideal for administrators that want minimal daily complexity because it can provide a mostly hands-off experience after initial configuration, and it makes staying current with the latest Windows 10 builds and cumulative updates significantly easier.

 

To summarize

Our story for how we support the new servicing model in existing tools will continue to improve in subsequent releases through additional features that support key scenarios.  During this time, WSUS 3.0 SP2 will remain in the old servicing model.  Technically, it can provide minimal Windows 10 update support (i.e., sync and distribute security updates), but the experience is less than ideal.  As an example, the Windows 10 machines will display as “Windows Vista” for those remaining on WSUS 3.0 SP2.

As we move forward, we will continue to update existing guidance and provide recommended best practices for smoother navigation through our new servicing model.

PowerTip: Find single-name PowerShell functions

$
0
0

Summary: Learn how to find Windows PowerShell functions that do not have a hyphen in the name.

Hey, Scripting Guy! Question How can I easily find Windows PowerShell functions that do not have a hyphen in the name, but instead are single words, such as the Prompt function?

Hey, Scripting Guy! Answer Use the Get-Command cmdlet and return only functions. Filter out function names that do not contain a hyphen, for example:

gcm -CommandType function | where name -notmatch '-'

Note gcm is an alias for the Get-Command cmdlet.

Customizing the Windows PowerShell Console

$
0
0

Another blog on customizing the PowerShell console?  Really?

Yes.  This is actually what I use on a day-to-day basis as a consultant managing many projects at once.  I find that I'm usually running various PowerShell sessions concurrently and having to keep which one is which can be difficult without having to stop and check which server or Office 365 tenant I'm connect to, or what type of activity I'm performing.

To help keep this straight, I put a few functions in my PowerShell profile for my day-to-day use.

To edit your PowerShell Profile, you can type notepad $PROFILE from a PowerShell prompt.  If you've never modified or created one, you'll need to create the directory first using New-Item $HOME\Documents\WIndowsPowerShell -Force.

My PowerShell Profile looks like this:

Import-Module MSOnline
Import-Module Microsoft.Online.SharePoint.PowerShell -DisableNameChecking
CD \Scripts

# Set Console Settings
Function Console($Background,$ForeGround,$Title)
        {
        Clear-Host
        $console = $host.UI.RawUI
        $console.BackGroundColor = $Background
        $console.ForeGroundColor = $Foreground
 $console.WindowTitle = $Title
        cls
        }

# Office 365 Logon
Function o365Logon()
 {
 $UserCredential = Get-Credential
 $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
 Import-PSSession $Session
 Connect-MsolService -Credential $UserCredential
 $LyncSession = New-CSOnlineSession -Credential $UserCredential
 Import-PSSession $LyncSession
 }

What the main functions do:

Function Console($Background,$Foreground,$Title)is a function declaration that allows me to easily change the foreground, background, and window title of the current PowerShell window.  To change and of those settings, after launching my PowerShell window with this profile, I simply type Console -ForegroundColor <color> -BackgroundColor <color> -Title <what I want in the title bar>.

Function o365Logon calls the a series of commands to connect to an Office 365 tenant (prompting for credentials, importing Exchange and Lync/Skype sessions).

New tool: Policy Analyzer

$
0
0
Policy Analyzer is a utility for analyzing and comparing sets of Group Policy Objects (GPOs). It can highlight when a set of Group Policies has redundant settings or internal inconsistencies, and can highlight the differences between versions or sets of Group Policies. It can also compare GPOs against current local policy settings and against local registry settings. And you can export its findings to a Microsoft Excel spreadsheet. Policy Analyzer lets you treat a set of GPOs as a single unit...(read more)

Security baseline for Windows 10 (v1507, build 10240, TH1, LTSB) -- UPDATE

$
0
0
Based on continuing discussions with security experts in Microsoft, the Center for Internet Security, and customers, we are publishing a few changes to the security configuration baseline recommendations for Windows 10, version 1507. Version 1507 was the original RTM release of Windows 10, and is also known as "Build 10240," "Threshold 1," or "TH1." Version 1507 is also the current Long Term Servicing Branch (LTSB) build, which is the primary reason for continuing to...(read more)

Security baseline for Windows 10 (v1511, "Threshold 2") -- FINAL

$
0
0
Microsoft is please to announce the final release of the security configuration baseline settings for Windows 10 version 1511, also known as "November Update," "Build 10586," "Threshold 2," or "TH2." The downloadable attachment to this blog post includes importable GPOs, tools for applying the GPOs to local GPO, custom ADMX files for Group Policy settings, and all the settings in spreadsheet form. We will also be publishing SCM .CAB files for this Windows 10...(read more)

Announcing support for SQL Server 2012 SP3 with AX 2012 R2 & R3

$
0
0

Microsoft Dynamics AX 2012 R3 Cumulative Update 10 and AX 2012 R2 Cumulative Update 9 are now compatible with SQL Server 2012 SP3.

The Microsoft Dynamics AX 2012 System Requirements have been updated to reflect this change.

Conceptualize Desired State Configuration: Part 6

$
0
0

Summary: Microsoft MVP, Will Anderson, teaches how to create a DSC resource by using a Windows PowerShell script.

Hello. Ed Wilson here, bringing you MVP, Will Anderson, and Part 6 of his posts about using Desired State Configuration (DSC). If you have not already done so, please read the previous posts in the series:

   Note The code used in this series can be downloaded from the Script Center Repository:
   Conceptualize Desired State Configuration - Reference Script.

As we saw in our last post, you can use your scripts inside of the Script DSC resource provider to configure your system. But to do so, you need to do a lot of additional work—and in comparison to using a DSC resource, it can look pretty sloppy. However, if you've pulled apart a DSC resource, it can look quite intimidating to build.

Here's where the DSC Resource Designer comes in. You can find the latest version in the PowerShell Gallery as xDscResourceDesigner. Let's use Windows PowerShell to get it:

PS C:\Windows\system32> Find-Module xDscResourceDesigner | Install-Module

If we look at the commands in the module, you'll find the following:

PS C:\Windows\system32> Get-Command -Module xDSCResourceDesigner

CommandType  Name            Version Source                           

-----------  ----            ------- ------                           

Function  Import-xDscSchema         1.6.0.0 xDSCResourceDesigner                      

Function  New-xDscResource         1.6.0.0 xDSCResourceDesigner                      

Function  New-xDscResourceProperty       1.6.0.0 xDSCResourceDesigner                      

Function  Test-xDscResource         1.6.0.0 xDSCResourceDesigner                      

Function  Test-xDscSchema         1.6.0.0 xDSCResourceDesigner                      

Function  Update-xDscResource        1.6.0.0 xDSCResourceDesigner

   Note  There's a lot of great information about using the xDscResourceDesigner on the project's GitHub page: PowerShell/xDSCResourceDesigner. I highly encourage you to take a look.

In the meantime, we're going to look at how we can use this to create a custom DSC resource. I'm not going to use the NO_SMS_ON_DRIVE.sms file script that we added to our configuration in the last post. I'm going to keep that there as our “resource of shame” so we can remember why this is so much better.

My systems are spinning up with a single disk, partitioned with only a drive C and 127 GB of disk allocated to it. But that's way too much storage for my server core instance, so I want to shrink the existing disk, and create a new partition. For this, we're going to create not one, but two, DSC resources! So let's begin.

Figuring out parameters

Before we can create the resource, we need to know what we're going to put in to it. So let's think about our first step, which is to resize our C partition. In PowerShell terms, that equates to:

Resize-Partition -DriveLetter $DriveLetter -Size $DiskSize

That's easy enough. We need two parameters to change the size of an existing partition. Let's create the first resource:

New-xDscResource -Name DiskResize -Property $DiskSize,$DriveLetter,$Ensure -Path 'C:\Program Files\WindowsPowerShell\Modules\' -ModuleName DiskSize

Here, we're creating a new DSC resource called DiskResize (Name) and assigning the parameters, or properties (DiskSize,DriveLetter,Ensure) to the resource. We're building it straight in our module’s directory, and giving the module the name of DiskSize. Before we can execute this code, we need to declare our property variables:

$DiskSize = New-xDscResourceProperty -Name DiskSize -Type Uint64 -Attribute Required

$DriveLetter = New-xDscResourceProperty -Name DriveLetter -Type String -Attribute Key

$Ensure = New-xDscResourceProperty –Name Ensure -Type String -Attribute Write –ValidateSet “Present”, “Absent”

New-xDscResource -Name DiskResize -Property $DiskSize,$DriveLetter,$Ensure -Path 'C:\Program Files\WindowsPowerShell\Modules\' -ModuleName DiskSize

We're creating our DSC resource properties. The Name is obviously the name of the parameter we're setting. The Type is the expected input type. This is important for validation of the input data. And then there's the Attribute, of which your available options are Key, Read, Write, and Required.

Note   You must select one property as Key, and only one property can be made the Key. This property must be unique! So if you're planning to use the DSC resource more than once in your configuration, you want to make sure this is a property that won't be called again in a later configuration. If you need to leverage that Key value more than once, you can do so later with hash tables...we'll get into that at a later date.

Now that we've got our properties, let's execute!

PS C:\Windows\system32> $DiskSize = New-xDscResourceProperty -Name DiskSize -Type Uint64 -Attribute Required

$DriveLetter = New-xDscResourceProperty -Name DriveLetter -Type String -Attribute Key

$Ensure = New-xDscResourceProperty –Name Ensure -Type String -Attribute Write –ValidateSet “Present”, “Absent”

New-xDscResource -Name DiskResize -Property $DiskSize,$DriveLetter,$Ensure -Path 'C:\Program Files\WindowsPowerShell\Modules\' -ModuleName DiskSize

 Directory: C:\Program Files\WindowsPowerShell\Modules

Mode    LastWriteTime   Length Name                                  

----    -------------   ------ ----                                 

d-----   1/7/2016 6:12 PM    DiskSize                                

 Directory: C:\Program Files\WindowsPowerShell\Modules\DiskSize

Mode    LastWriteTime   Length Name                                  

----    -------------   ------ ----                                 

d-----   1/7/2016 6:12 PM    DSCResources                               

 Directory: C:\Program Files\WindowsPowerShell\Modules\DiskSize\DSCResources

Mode    LastWriteTime   Length Name                                 

----    -------------   ------ ----                                 

d-----   1/7/2016 6:12 PM    DiskResize

As you can see, some new directories have been created. Also some new files have been created.

PS C:\Windows\system32> Get-ChildItem -Path 'C:\Program Files\WindowsPowerShell\Modules\DiskSize' -Recurse -Exclude Directory

 Directory: C:\Program Files\WindowsPowerShell\Modules\DiskSize

Mode    LastWriteTime   Length Name                                 

----    -------------   ------ ----                                 

d-----   1/7/2016 6:12 PM    DSCResources                               

 Directory: C:\Program Files\WindowsPowerShell\Modules\DiskSize\DSCResources

Mode    LastWriteTime   Length Name                                 

----    -------------   ------ ----                                 

d-----   1/7/2016 6:12 PM    DiskResize                                

 Directory: C:\Program Files\WindowsPowerShell\Modules\DiskSize\DSCResources\DiskResize

Mode    LastWriteTime   Length Name                                 

----    -------------   ------ ----                                 

-a----   1/7/2016 6:12 PM   3946 DiskResize.psm1                                

-a----   1/7/2016 6:12 PM   508 DiskResize.schema.mof                             

 Directory: C:\Program Files\WindowsPowerShell\Modules\DiskSize

Mode    LastWriteTime   Length Name                                 

----    -------------   ------ ----                                 

-a----   1/7/2016 6:12 PM   6574 DiskSize.psd1

Let's take a look at the module manifest under C:\Program Files\WindowsPowerShell\Modules\DiskSize. This will be the file that provides the data when you look at the properties of a module. I've modified some of the basic information in the DiskSize manifest.

#

# Module manifest for module 'DiskSize'

#

# Generated by: Will Anderson

#

# Generated on: 1/5/2016

#

@{

# Script module or binary module file associated with this manifest.

# RootModule = ''

# Version number of this module.

ModuleVersion = '1.0.0.0'

# ID used to uniquely identify this module

GUID = '507d2597-0903-48a9-bd38-291bfbee8419'

# Author of this module

Author = 'Will Anderson'

# Company or vendor of this module

CompanyName = 'Last Word In Nerd'

# Copyright statement for this module

Copyright = '(c) 2016 lastwordinnerd.com. All rights reserved.'

# Description of the functionality provided by this module

# Description = 'Provides DSC Resources to resize existing disk partitions and create new ones.'

# Minimum version of the Windows PowerShell engine required by this module

# PowerShellVersion = '4.0'

# Name of the Windows PowerShell host required by this module

# PowerShellHostName = ''

# Minimum version of the Windows PowerShell host required by this module

# PowerShellHostVersion = ''

# Minimum version of Microsoft .NET Framework required by this module

# DotNetFrameworkVersion = ''

# Minimum version of the common language runtime (CLR) required by this module

# CLRVersion = ''

# Processor architecture (None, X86, Amd64) required by this module

# ProcessorArchitecture = ''

# Modules that must be imported into the global environment prior to importing this module

# RequiredModules = @()

# Assemblies that must be loaded prior to importing this module

# RequiredAssemblies = @()

# Script files (.ps1) that are run in the caller's environment prior to importing this module.

# ScriptsToProcess = @()

# Type files (.ps1xml) to be loaded when importing this module

# TypesToProcess = @()

# Format files (.ps1xml) to be loaded when importing this module

# FormatsToProcess = @()

# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess

# NestedModules = @()

# Functions to export from this module

FunctionsToExport = '*'

# Cmdlets to export from this module

CmdletsToExport = '*'

# Variables to export from this module

VariablesToExport = '*'

# Aliases to export from this module

AliasesToExport = '*'

# DSC resources to export from this module

# DscResourcesToExport = @()

# List of all modules packaged with this module

# ModuleList = @()

# List of all files packaged with this module

# FileList = @()

# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.

PrivateData = @{

 PSData = @{

  # Tags applied to this module. These help with module discovery in online galleries.

  # Tags = @()

  # A URL to the license for this module.

  # LicenseUri = ''

  # A URL to the main website for this project.

  # ProjectUri = ''

  # A URL to an icon representing this module.

  # IconUri = ''

  # ReleaseNotes of this module

  # ReleaseNotes = ''

 } # End of PSData hashtable

} # End of PrivateData hashtable

# HelpInfo URI of this module

# HelpInfoURI = ''

# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.

# DefaultCommandPrefix = ''

}

When we pull the properties of the newly created module, here’s what we see:

PS C:\Windows\system32> Get-Module DiskSize | Select-Object *

LogPipelineExecutionDetails : False

Name      : DiskSize

Path      : C:\Program Files\WindowsPowerShell\Modules\DiskSize\DiskSize.psd1

ImplementingAssembly  :

Definition     :

Description     :

Guid      : 507d2597-0903-48a9-bd38-291bfbee8419

HelpInfoUri     :

ModuleBase     : C:\Program Files\WindowsPowerShell\Modules\DiskSize

PrivateData     : {PSData}

Tags      : {}

ProjectUri     :

IconUri      :

LicenseUri     :

ReleaseNotes    :

RepositorySourceLocation :

Version      : 1.0.0.0

ModuleType     : Manifest

Author      : Will Anderson

AccessMode     : ReadWrite

ClrVersion     :

CompanyName     : Last Word In Nerd

Copyright     : (c) 2016 lastwordinnerd.com. All rights reserved.

You'll see the information is displayed. So now let's take a look at the DiskResize.psm1 file under C:\Program Files\WindowsPowerShell\Modules\DiskSize\DSCResources\DiskResize. This is where the meat and potatoes of our DSC resource are built.

function Get-TargetResource

{

 [CmdletBinding()]

 [OutputType([System.Collections.Hashtable])]

 param

 (

  [parameter(Mandatory = $true)]

  [System.UInt64]

  $DiskSize,

  [parameter(Mandatory = $true)]

  [System.String]

  $DriveLetter

 )

 #Write-Verbose "Use this cmdlet to deliver information about command processing."

 #Write-Debug "Use this cmdlet to write debug information while troubleshooting."

 <# $returnValue = @{ DiskSize = [System.UInt64] DriveLetter = [System.String] Ensure = [System.String] } $returnValue #>

}

function Set-TargetResource

{

 [CmdletBinding()]

 param

 (

  [parameter(Mandatory = $true)]

  [System.UInt64]

  $DiskSize,

  [parameter(Mandatory = $true)]

  [System.String]

  $DriveLetter,

  [ValidateSet("Present","Absent")]

  [System.String]

  $Ensure

 )

 #Write-Verbose "Use this cmdlet to deliver information about command processing."

 #Write-Debug "Use this cmdlet to write debug information while troubleshooting."

 #Include this line if the resource requires a system reboot.

 #$global:DSCMachineStatus = 1

}

function Test-TargetResource

{

 [CmdletBinding()]

 [OutputType([System.Boolean])]

 param

 (

  [parameter(Mandatory = $true)]

  [System.UInt64]

  $DiskSize,

  [parameter(Mandatory = $true)]

  [System.String]

  $DriveLetter,

  [ValidateSet("Present","Absent")]

  [System.String]

  $Ensure

 )

 #Write-Verbose "Use this cmdlet to deliver information about command processing."

 #Write-Debug "Use this cmdlet to write debug information while troubleshooting."

 <# $result = [System.Boolean] $result #>

}

Export-ModuleMember -Function *-TargetResource

Understanding the DSC resource

As you can see, the xDscResourceDesigner has already built a template for us to use, and even inserted some nice comments into it so you know where to put what. Let's start with the Get-TargetResource function first.

Get-TargetResource, like the GetScript block of the Script resource, pulls a hash table of the input parameters. You'll notice that there's a comment block that's already generated a nice little hash table for us. So we can remove the comment tags and use the template provided:

function Get-TargetResource

{

 [CmdletBinding()]

 [OutputType([System.Collections.Hashtable])]

 param

 (

  [parameter(Mandatory = $true)]

  [System.UInt64]

  $DiskSize,

  [parameter(Mandatory = $true)]

  [System.String]

  $DriveLetter

 )

 #Write-Verbose "Use this cmdlet to deliver information about command processing."

 #Write-Debug "Use this cmdlet to write debug information while troubleshooting."

 $returnValue = @{

 DiskSize = [System.UInt64]

 DriveLetter = [System.String]

 Ensure = [System.String]

 }

 $returnValue

}

I'm going to skip to the Test-TargetResource block. Like the TestScript block from the previous post, we need to return a True or False statement so DSC can decide if it should proceed to the Set-TargetResource step. This will be a little easier than our SMS file statement because we're not dealing with an array in this example. We'll use the Get-Partition cmdlet to test it.

PS C:\Windows\system32> $DriveLetter = 'C'

PS C:\Windows\system32> ((Get-Partition -DriveLetter $DriveLetter).Size / 1GB)

40

PS C:\Windows\system32> $DiskSize = 40GB

PS C:\Windows\system32> ((Get-Partition -DriveLetter $DriveLetter).Size -eq $DiskSize)

True

PS C:\Windows\system32> $DiskSize = 20GB

PS C:\Windows\system32> ((Get-Partition -DriveLetter $DriveLetter).Size -eq $DiskSize)

False

I’ve used Get-Partition against my system drive to get the size in GB and then set that as my $DiskSize variable. Then I executed a True/False query to verify that with the given parameters, I return a True statement. Then, I change the $DiskSize variable to 20 GB, which I know is not the size of my drive, and execute the code to get a False statement. This validates that my test command should be valid. Now I'll insert it into the Test-TargetResource block.

function Test-TargetResource

{

 [CmdletBinding()]

 [OutputType([System.Boolean])]

 param

 (

  [parameter(Mandatory = $true)]

  [System.UInt64]

  $DiskSize,

  [parameter(Mandatory = $true)]

  [System.String]

  $DriveLetter,

  [ValidateSet("Present","Absent")]

  [System.String]

  $Ensure

 )

 #Write-Verbose "Use this cmdlet to deliver information about command processing."

 #Write-Debug "Use this cmdlet to write debug information while troubleshooting."

 ((Get-Partition -DriveLetter $DriveLetter).Size -eq $DiskSize)

}

Now that we have the Get-TargetResource and Test-TargetResource blocks finished, we can move on to Set-TargetResource, which is the easiest by far.

function Set-TargetResource

{

 [CmdletBinding()]

 param

 (

  [parameter(Mandatory = $true)]

  [System.UInt64]

  $DiskSize,

  [parameter(Mandatory = $true)]

  [System.String]

  $DriveLetter,

  [ValidateSet("Present","Absent")]

  [System.String]

  $Ensure

 )

 #Write-Verbose "Use this cmdlet to deliver information about command processing."

 #Write-Debug "Use this cmdlet to write debug information while troubleshooting."

 Resize-Partition -DriveLetter $DriveLetter -Size $DiskSize

 #Include this line if the resource requires a system reboot.

 #$global:DSCMachineStatus = 1

}

If you notice, the template gives you a commented line that you can use if you want to set the global DSCMachineStatus variable to flag the system for a reboot. This can be pretty handy if you're making a change that requires a reboot.

Let's save our work, and re-import the module:

PS C:\Windows\system32> Get-DscResource -Module DiskSize

ImplementedAs Name      ModuleName      Version Properties         

------------- ----      ----------      ------- ----------         

PowerShell  DiskResize    DiskSize      1.0.0.0 {DiskSize, DriveLetter, DependsOn, Ensure...}

~Will

Thanks, Will. Tune in tomorrow for Will’s last installment of this DSC blog series.

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. Also check out my Microsoft Operations Management Suite Blog. See you tomorrow. Until then, peace.

Ed Wilson, Microsoft Scripting Guy

PowerTip: Create list of approved PowerShell verbs

$
0
0

Summary: Learn how to easily produce a list of approved Windows PowerShell verbs.

Hey, Scripting Guy! Question How can I find what verbs are approved for use in a Windows PowerShell function?

Hey, Scripting Guy! Answer Use the Get-Verb cmdlet, and to make it easy to peruse, send the output to the Out-GridView cmdlet:

get-verb | Out-GridView

Fotoreportáž: BETT 2016

$
0
0

Konference BETT (British Educational Training and Technology Show) je navzdory "British" celosvětovou největší konferencí a výstavou technologií ve vzdělávání a koná se vždy na začátku roku v Londýně. Od roku 2013 je tím místem výstaviště Excel, v části Docklands.

Na BETTu je každý rok cca 600 vystavovatelů, přes 35 000 návštěvníků a desítky ministrů školství z celého světa. 
Obrázek a video řekne za tisíc slov, takže je lepší se na to, jak to na BETTu 2016 vypadalo, podívat. 
Každá cesta letadlem musí být bezpečná, v mrazivém počasí je zapotřebí odmrazení.
Cloud - tady se ukládají data :)
Victoria - Cardinal Place - místo, kde dlouho sídlil anglický Microsoft.
Davy návštěvníků míří za novými technologiemi.
Microsoft je celosvětovým partnerem konference BETT.
A brány jsou otevřeny...
Minecraft jako součást výuky byl vidět na BETTu v mnoha podobách.
Kromě stánků byly pro účastníky připraveny i workshopy s velice propracovanými ukázkami toho, jak lze Minecraft využít. Představte si v Minecraftu město s funkční hydroelektrárnou, která osvětluje město a v případě jejího vypnutí se město ponoří do tmy. A to je jen jedna z mnoha ukázek toho, jak lze Minecraft např. ve fyzice využít. 
Stánek Microsoftu a jeho součást Live Theatre byl vždy v obležení desítek návštěvníků.
Největším místem pro prezentace byla pak BETT Arena, kde bylo vidět mnoho zajímavých vystoupení a oznámení nových produktů a služeb.
Zde třeba VP Microsoftu pro školství Anthony Salcito oznamuje nové funkce OneNote pro vzdělávání. 
Na BETTu je čím dál více vidět i česká stopa. Jen tak dále.
NetSupport jakožto jeden z největších hráčů na poli classroom managementu tu nemohl chybět. Toto řešení využívají desítky škol v České republice. 
Celkový pohled na BETT 2016
PowerBI ve školství čeká velice růžová budoucnost.
Na takové akci jako je BETT nemohl chybět pochopitelně ani další IT velikán, Intel. 
Na stánku Microsoftu jste se mohli podívat na několik stovek vybraných aktivních Microsoft Innovative Expert Educators.

















Microsoft Surface Hub - na první pohled dotyková obrazovka - na ten druhý objevíte neuvěřitelné funkce - rozpoznání toho, zda píšete pravou nebo levou rukou či rozpoznání osob, pokud jich před obrazovkou stojí více, jsou jen začátkem.
Microsoft Surface Book - precizně zpracovaný "notebook" s nadstandardními parametry a výkonem. Třešničkou na dortu je možnost oddělení od klávesnice a získání tak velice výkonného tabletu.
Workshopy na Minecraft byly realizovány ve stylovém prostředí.
Účastníci BETTu mohli zanechat na zdi BETT Areny svá "poselství" o vzdělávání.
Na takovéto akci nemohl chybět ani český tým Microsoft pro školství. 
Karel Klatovský, Microsoft ČR

Conceptualize Desired State Configuration: Part 7

$
0
0

Summary: MVP, Will Anderson, wraps up his series by discussing how to add DSC resources to existing Windows PowerShell modules.

Ed Wilson here, bringing you MVP, Will Anderson, and the conclusion of his week of blogging about Desired State Configuration. If you have not already done so, please read the previous posts in the series:

   Note The code used in this series can be downloaded from the Script Center Repository:
   Conceptualize Desired State Configuration - Reference Script.

Adding additional resources to existing modules

Our DSC resource has been repopulated and it's ready for testing. But first, I'm going to add in an additional DSC resource for creating a new partition. We'll be adding this DSC resource into the DiskSize module that we created for the DiskResize resource.

$DiskNumber = New-xDscResourceProperty -Name DiskNumber -Type String -Attribute Key

$DriveLetter = New-xDscResourceProperty -Name DriveLetter -Type String -Attribute Required

$Ensure = New-xDscResourceProperty –Name Ensure -Type String -Attribute Write –ValidateSet “Present”, “Absent”

New-xDscResource -Name DiskPartition -Property $DiskNumber,$DriveLetter,$Ensure -Path 'C:\Program Files\WindowsPowerShell\Modules\' -ModuleName DiskSize

Like in our previous example, we'll be using the New-xDscResource and New-xDscResourceProperty cmdlets to generate the resource. We'll call the new resource DiskPartition, and direct it to the already existing DiskSize module. Here’s how to execute and then re-import the module:

PS C:\Windows\system32> Get-DscResource -Module DiskSize

ImplementedAs Name      ModuleName      Version Properties         

------------- ----      ----------      ------- ----------         

PowerShell  DiskPartition    DiskSize      1.0.0.0 {DiskNumber, DriveLetter, DependsOn, Ensure...}

PowerShell  DiskResize    DiskSize      1.0.0.0 {DiskSize, DriveLetter, DependsOn, Ensure...}

You'll see that we now have the DiskPartition resource in the manifest! So now we can edit the .psm1 file with our code. Remember:

  • Get-TargetResource must return a hash table. This validates our inputs.
  • Test-TargetResource is the go/no-go switch. It must return a boolean True or False.
  • Set-TargetResource is the “make it so” button. This is where our execution will take place.

We've already done this, so I'm going to post only the code I inserted into the DiskPartition .psm1 file:

function Get-TargetResource

{

 [CmdletBinding()]

 [OutputType([System.Collections.Hashtable])]

 param

 (

  [parameter(Mandatory = $true)]

  [System.String]

  $DiskNumber,

  [parameter(Mandatory = $true)]

  [System.String]

  $DriveLetter

 )

 #Write-Verbose "Use this cmdlet to deliver information about command processing."

 #Write-Debug "Use this cmdlet to write debug information while troubleshooting."

 $returnValue = @{

 DiskNumber = [System.String]

 DriveLetter = [System.String]

 Ensure = [System.String]

 }

 $returnValue

}

function Set-TargetResource

{

 [CmdletBinding()]

 param

 (

  [parameter(Mandatory = $true)]

  [System.String]

  $DiskNumber,

  [parameter(Mandatory = $true)]

  [System.String]

  $DriveLetter,

  [ValidateSet("Present","Absent")]

  [System.String]

  $Ensure

 )

 #Write-Verbose "Use this cmdlet to deliver information about command processing."

 #Write-Debug "Use this cmdlet to write debug information while troubleshooting."

 New-Partition -DiskNumber $DiskNumber -UseMaximumSize -DriveLetter $DriveLetter | Format-Volume -FileSystem NTFS -Confirm:$false

 #Include this line if the resource requires a system reboot.

 #$global:DSCMachineStatus = 1

}

function Test-TargetResource

{

 [CmdletBinding()]

 [OutputType([System.Boolean])]

 param

 (

  [parameter(Mandatory = $true)]

  [System.String]

  $DiskNumber,

  [parameter(Mandatory = $true)]

  [System.String]

  $DriveLetter,

  [ValidateSet("Present","Absent")]

  [System.String]

  $Ensure

 )

 #Write-Verbose "Use this cmdlet to deliver information about command processing."

 #Write-Debug "Use this cmdlet to write debug information while troubleshooting."

 (Get-Partition -DiskNumber $DiskNumber | Where-Object ({$PSItem.DriveLetter -eq $DriveLetter})).DriveLetter -eq $DriveLetter

}

Export-ModuleMember -Function *-TargetResource

So now I save the file and re-import the module. Let's take a look at the DSC resources we've created:

PS C:\Windows\system32> Get-DscResource -Module DiskSize -Syntax

DiskPartition [String] #ResourceName

{

 DiskNumber = [string]

 DriveLetter = [string]

 [DependsOn = [string[]]]

 [Ensure = [string]{ Absent | Present }]

 [PsDscRunAsCredential = [PSCredential]]

}

DiskResize [String] #ResourceName

{

 DiskSize = [UInt64]

 DriveLetter = [string]

 [DependsOn = [string[]]]

 [Ensure = [string]{ Absent | Present }]

 [PsDscRunAsCredential = [PSCredential]]

}

Awesome! Now let's import the module. We’ll test the DiskResize resource first because we need to resize the C partition before we can create the new partition. We'll place this as the first step in our configuration.

configuration CMDPConfig

{

 Import-DscResource -ModuleName @{ModuleName = 'DiskSize'; ModuleVersion = '1.0.0.0'}

 Import-DscResource -ModuleName @{ModuleName = 'PSDesiredStateConfiguration'; ModuleVersion = '1.1' }

 Import-DscResource -ModuleName @{ModuleName = 'xNetworking'; ModuleVersion = '2.5.0.0'}

 Node ("LWINCM02")

 {

  # Call Resource Provider

  # E.g: WindowsFeature, File

  #Remove GUI Tools

  LocalConfigurationManager

  {

   RebootNodeIfNeeded = $true

   ConfigurationMode = "ApplyAndAutoCorrect"

  }

  DiskResize CDrive

  {

   DiskSize = "40GB"

   DriveLetter = 'C'

   Ensure = 'Present'

  }

We’ll generate a new .mof file for our test machine. Remember to copy the new module to the test system because we're still using push configuration. And now we execute, and check our partition size:

Image of command output

Finally, let's update our configuration with the new partition resource provider and push our configuration to the target server.

Image of command output

We have success!

We've managed to take our Windows PowerShell configuration script and create a DSC configuration from it. We've even added some things to our configuration that we didn't previously have in the script by creating some new DSC resources for it.

There's still plenty of cleanup that needs to be done with our configuration and resources, such as adding error handling and some parameterization so we can further automate our deployments. By now, though, you should have a better understanding of how you can use Desired State Configuration to create basic configurations for your environment.

~Will

Wow! What a week. Thanks, Will, for seven days of DSC greatness. This is some really cool stuff.

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. Also check out my Microsoft Operations Management Suite Blog. See you tomorrow. Until then, peace.

Ed Wilson, Microsoft Scripting Guy 

MDOP 2015 für Windows 10

$
0
0

Viele Unternehmenskunden haben bei uns den Windows Client unter Windows SA (Software Assurance) und somit das Recht die Windows Enterprise Edition einzusetzen.
Neu ist es jedoch, dass im SA auch die Nutzung vom MDOP mit eingebunden wurde. Somit kann MDOP ohne Aufpreis eingesetzt werden.

Die folgenden Tools sind im MDOP mit integriert:

  • App-V 5.1– Desktop Anwendungen virtuell betreiben, ein Sandboxing für klassische Anwendungen
  • UE-V 2.1 SP1– User Profil Virtualisierung (Roaming von Einstellungen)
  • MBAM 2.5 SP1– BitLocker und TPM Chip Verwaltung mit Self-Service
  • AGPM 4.0 SP3– Automatisierung der verwalteten GPOs
  • DaRT 10– Tools zur Wiederherstellung und Diagnose inkl. Offline Antivirus/Antimalware

Weiterführende Informationen:
Zur Thema UE-V habe ich bereits mal einen Beitrag geschrieben und eine kleine Erläuterung geschrieben. Hier geht's zum Beitrag.

PowerTip: Find disk status with PowerShell and Windows 10

$
0
0

Summary: Use Windows PowerShell in Windows 10 to find disk status.

Hey, Scripting Guy! Question How can I use Window PowerShell in Windows 10 to check the status information (such as the health status, operational status, and if the disks are offline or read-only) on multiple disks?

Hey, Scripting Guy! Answer Use the Get-DiskStorageNodeView cmdlet:

Get-DiskSNV

Note  Get-DiskSNV is an alias for Get-DiskStorageNodeView.


自動化対象のユニットテスト(単体テスト)の仕様書を書くことは完全なる無駄である

$
0
0

本ブログポストは、マイクロソフトの意見ではなく、私個人の意見であることをお断りしておきます。

DevOps 普及活動の一環として、DevOps ハッカソンというイベントを実施しています。DevOps のプラクティスの一つとしてAutomated Testing (自動化されたテスト) があります。

それに関して複数の参加者の皆さんがこのようなことを言っていました。

「自動テストを書くのは好きではないです。何故かというと、自動化されたユニットテストを書いたら、同じ内容のエクセル方眼紙の仕様書を書かないといけないので、二重に書くのは無駄だし大変だと思うんです。」

はっきり言ってしまうと、このケースの単体テスト仕様書は完全なる無駄であると断言できます。

このポストではその理由をお話ししたいと思います。

1. 単体テストのイメージの違い

この問題が起きている背景には、「単体テスト」というものがCOBOLの時代から変化しているからというのがある。このような仕様書を書くプロジェクトは書く仕様書が定められている形式の開発が行われていると思う。それらの
ルールがどのように醸成されたかを考えてみる。ある意味無理がないところがあるのだ。

 著名なアジャイルコーチの川口氏が言っていたことだが、「一見無駄なルールにも昔には妥当な理由があった」という話がある。COBOL時代の「単体テスト」と、現在の言語のアーキテクチャの「単体テスト」は相当イメージが異なる。

図に示した通り、COBOL時代の単体テストというのは、画面毎に1つのプログラムなので、単体テスト = 画面単位のテストになる。一方最近のアーキテクチャだと、1画面の処理に複数のクラスが協調動作して動く。今の時代でいう単体テストは、画面の単位ではなく、個別の一つ一つの小さなクラスをテストすることを意味する。Unit = 最小の個別の単位なので、相当イメージは違うのだが、どちらも「単体テスト」なのだ。であるので、この記事では、クラス単位のテストをユニットテストと呼び、画面単位でのテストを「画面単体テスト」と呼ぶことにしよう。

画面単位に対してテスト設計をすることは、私は全くの無駄とは思わないが、1つ1つの小さなクラスに対して仕様書を書くのは完全に無駄だ。それに相当するテスト仕様書を書くのは、COBOLの時代だってしていない。

2. 今のアーキテクチャのユニットテスト(単体テスト)を書くことは何故必要か?

従来書いてなかったレベルの単体テストを書くのはなぜ必要なのだろうか?現在主流で使われているJavaや、RubyそしてC#等のオブジェクト指向の言語は、図のように1つの画面の処理を行うときも複数のクラスのインスタンスが協調動作して一つの処理を実施する。V字モデルの話になるのだが、テストを実施するときに、より低レベルのテストを必要十分にテストしておくことは大変重要だ。そのレベルのテストをさぼると、上位のレベルのテストを実施するときに、低レベルのテストまで一緒にすることになり、複雑度がまし、品質の確保が難しくなる。だから、今のアーキテクチャだと昔1つだったプログラムが複数にわかれていて、協調して動くのだから、この「単体」のレベルでしっかりとテストをしておく必要があるのだ。逆にそこを書いておくことで、かつて以上に全体の品質を大きく向上させることができる。

3. 今のアーキテクチャのユニットテスト(単体テスト)はなぜ仕様書が必要ないか?

当然ながらテストの品質というのは大変重要だ。このレベルの単体テストに関してもそれはもちろん重要だ。しかし、この細かいこのレベルのテストに対して仕様書を書いたところで品質は向上しない。何故ならコードを書くものにとっても、事前にどういうクラスでプログラムを構成するか?というのは最初の時点でわかっていないからだ。

  現在の言語やアーキテクチャの状況だと、インターネットにある仕様書がいつもだたしいとは限らないのは皆さんもご経験済みだろう。ある時点で正しくても、バージョンが変化して挙動が変わるなんかしょっちゅうである。だから、スパイクと言って、本当にそれが動くのか実験しながらコードを書いていく。つまり、コードを書くものにとっても、書き始めた時点で明確にこういうコードになるというのは少なくとも100%想像がついていることは稀だ。今の複雑な仕様と、本当に動くかわからないAPIに対して、事前にテストを書くことは神業に等しい。プログラマは、大まかな設計はするかもしれないが、コードを試行錯誤し、すこしづつ進化させながらコードを書いていく。だから、マーチンファウラー氏曰くは「コードは設計作業であり、実装はコンパイラがやっている」と言われている。

コードですら予想がつかないもののインターフェイスと内部実装についてのテストを事前に書くことは相当難しく、事後に書いたとしたら、それはいったい誰がレビューするのだろうか?なぜなら、そのコードは、対象の言語仕様や文化、アーキテクチャ、最新のライブラリ状況に詳しい人しか良し悪しの判断ができない。

毎日コードを書いていない者にはそれは不可能だ。エバンジェリストである、筆者にも難しいかもしれない。それを考えると、対象の言語、コード、アーキテクチャ、ライブラリに詳しいものにとって、最も信頼できる仕様書のようなものは何だろう?

「コード」だ。「API仕様書」よりも、最も信頼できるものが「コード」だ。だから、今の開発プロセスでは、このレベルの単体テストは「テストコード」を書くようになっている。そういう人にとっては、これぐらい細かい内容だと、「コード」を
読むほうが確実なのだ。

 もちろん、コードのみでいいというつもりはない。それが一番望ましいとは思うが、「API仕様書」が意味があるように、細かいコードであっても、ある程度の「抽象化」は意味があるだろう。「API仕様書」はExcelで書いたりしない。いろんなオープンソースのプロジェクトを見ても明白だ。どうするかというと、コードと密接に関係しているので、大抵はコードのコメントで書いて、API仕様書を自動生成できるようにしている。もっともコードに近いので、最もメンテがやりやすい。だから、自動化されたユニットテストでは、API仕様書用のコメントの代わりのものとして、テストのメソッドがテストの概要を表しているような書き方になるようにチームで習慣づけるすると、最近の、自動ビルドの環境を使うとテストレポートが出てくるので、コードを読む前にも概要がわかりやすい。

RSpecを使ったテストコードを読もう  [倉貫義人、松村章弘TIS株式会社/SonicGarden] より

しかし、ここまでしても、内容がコードとぶれる必要がある。だから、例えばRubyとかのAPI仕様書は、API仕様書から具体的なコードを読めるように工夫されている。

だから、このレベルのユニットテスト(単体テスト)を書く場合は、先に書く場合、あとに書く場合両方のケースにおいて「仕様書」と呼ばれるものは無駄なのだ。書いても形骸的なものになり、ユニットテストコードと同一になるので、全く
意味がないものになり、重複作業を生むだけになる。これは、工数の無駄だ。

4. 自動化されたユニットテストのメリット

 こうして書かれた、「ユニットテストコード」は何が嬉しいだろうか?まず、従来のレベル以上に、細かいテストを書くことになり、それが自動化されている。つまり、何回でも繰り返しテストをできることになる。つまり、何かがおかしくなっても、それを自動で流しておくと、いつでも問題に気づけることになるのだ。アジャイル開発などの繰り返し型のプロジェクトではこの技術は必須だ。繰り返し開発をして変化を受け入れるので、その際自動テストがないと、デグレードや、バグを新たに作りこんだ時に気づくことが出来ない。

 また、テスト駆動開発という自動テストを書きながらプロダクションコードを書いていく開発の設計・テスト作成の技術がある。そういうノウハウを使うことで、複雑なロジックでもテストを書きながら少しづつテストを書きながら開発をすることができる。複雑なロジックであっても複雑な問題を分割して、簡単にして考えることがしやすくなる。

(Please visit the site to view this video)

5. 品質よい自動化されたユニットテストを書く方法

 では、品質の良い自動化されたユニットテストを書く方法はどうすればいいだろうか?先ほど上げたテスト駆動開発を学ぶことは一つだが、それをもってしても妥当なテストケースを考えることができる能力が必要である。この分野のテスト技法を学ぶということもあるが、私のおすすめは「Pull Request」と「チームのレビュー」である。つまるところ、最新のアーキテクチャを持った言語に精通したプログラマ同士のレビューである。少なくとも、オブジェクト指向の原則やパターンとか、テスト駆動開発等をわかっている人物にレビューしてもらうのがいい。最初は時間がかかって無駄に見えるかもしれないが、レビューをすると人が育つので加速度的に、しょうもない指摘事項が少なくなっていく。

参考までに、著名なソニックガーデンさんがどのレベルでレビューをしているかがわかる好エントリがあるので、参考までに貼っておきます。

ソニックガーデンで行われているコードレビューの具体例をお見せします

 レビュー以外の方法で有効なものとしては、最近は「静的解析」や「自動コードレビュー」というものが有効だ。「チェックリスト」などの方式はコードの実装レベルの話なので、もし適切に書いたとしても、チェック項目が多くなりすぎて機能しない。そういう機械的にできることはツールに任せて自動化してしまおう。無料のツールや、簡単に導入できるサービスもあるので是非導入していただきたい。

自動コードレビューサービスCode climateでの解析例

6. 自動化されたユニットテストを管理する法

 あなたが、マネージャだとして、こうした自動テストを導入して、彼らを管理するにはどうすればいいだろうか?カンタンだ、管理するのをあきらめるとよいのだ。過激に聞こえるかもしれないが、今の時代は技術の流れが速すぎて、当のプログラマですら時代の流れについていくのは大変だ。そんな難しいことを普段コードを書く回数が圧倒的に少ない、もしくは全くしていない人がどうしたら把握できるだろうか?正直無理なのだ。
 であるので、最近のマネージメント方法としては、「サーバントリーダーシップ」と呼ばれる方法が推奨されている。端的にいうと、チームに任せて、彼らに外部から障害が降りかかった時にそれを助けてあげるというファシリテーターのような役割だ。今までは、マネージャがいろいろ指示していたかもしれないが、チームが自律的に考えて実行できるようになるように、手助けをする。そうすればチームは、徐々に自主的に判断する力がついてくる。細かいことを知っているので適切に技術的な判断ができるようになってくる。


 そういう時代になったので、次にどうするか?というと、チームが「適切に自動テストを書いているか?」ということをあなたがテスト駆動とテスト技法の専門家でもない限り知りようがない。ただし、チームがちゃんとテストコードのレビューをしているか?とか、テスト駆動とテスト技法に詳しい人をチームに入れてレビューしてもらうよう促進することはできるだろう。

あとは、カバレッジや静的解析、自動コードレビューは、プログラムに負荷がからないので、自動化して、プログラマが自分のコードの改善のガイドにしてもらうといいだろう。ここで例えば、ユニットテストを100%書くこととか、カバレッジを100%にすることとか、中身がわからないのに、数値だけですべてを判断しようとしないことだ。

 例えば、私はこんなプロジェクトを見たことがある。コードカバレッジが80%になるよう、自動化されたテストコードを書くように定められていた。そのプロジェクトは大変品質が悪かった。大きなプロジェクトだったが、何故問題があるのかわからないようだった。なぜなら管理者の誰もが実際に「テストコード」を読まなかったからだ。私がテストコードを実際に読んでみると、自動のユニットテストは大量に書かれていたが、assertと呼ばれる実際にテストを行うコードが一行も書かれていなかった。つまり、カバレッジを通すためだけに、プログラムを呼び出すためだけのプログラムがそこに書かれていたのだ。これは、工数の無駄以外の何物でもない。

 しかし、あなたがテスト駆動とテスト工学を学ぶのもいい手だが、恐らく一番簡単なのはそれが出来る人にレビューして貰うことだろう。自分でなんでもかんでもする必要はない。マネージャは仕事がいっぱいあるはずだ。チームが自主的にできることはやってもらおう。できないなら、少しづつできるようになってもらおう。

7. 自動化された適切なテストを書いて世界で勝とう!

先日、DevOps Enterprise 2015というサンフランシスコで開催されたイベントに行ってきた。驚いたことに、スタートアップの企業だけではなくエンタープライズの大手企業、それの生保や、銀行などの企業が、第二世代アジャイルと言われるDevOpsと呼ばれる考え方を実践していて、1日に10回以上もサービスをデプロイできるような開発チームを作り上げていた。それだけ見ると、米国人はとても優秀に見える。私は米国マイクロソフト所属で同僚は全員外国人だが、米国人を観察していて思ったが彼らは日本人と比べて優秀というわけではない。むしろ単体の能力でいうと日本人のほうが優れて見える。ずっとよく物を考えている人が多いのだ。


 しかし、彼らが素晴らしいところがあって、すぐやる、すぐ人に聞く、そして無駄なことをしないということだ。彼らがいつも言っていることは「最小の時間で最大のインパクトを」といつも言っている。残業して成果をだしても褒められたためしはない。もっと、短い時間で楽にインパクトを!という意味で「Be Lazy」と上司から言われるのだ。もっと休めと。そうやってみてだんだんわかってきたが日本人の心だと、一生懸命時間をかけてやろうとおもうと、毎回同じだけの時間がかかってしまう。ところが、「Be Lazy」を意識すると、同じ成果に対してだんだん短い時間でやれるようになってくるのだ。そうなると、余った時間で次のことをすることができる。そしてリラックスできる時間が持てる。これは簡単ではないが「一生件名、頭をつかって怠け者になる」よう頑張るのだ。

 そういうちょっとしたことをすれば、日本人は世界的にユニークだし、能力は高いし真面目だ。圧倒的に勝てる。だから、日本の無駄は本当に無くすようなことに少しでもご協力できればと思う。もちろん私ももっと無駄をなくして、世界で勝てる人になりたいと思っています。

[EMS] ATA のインシデント通知機能

$
0
0

皆様、こんにちは。認証・デバイス管理・セキュリティ担当の橘です。

今回は ATA のインシデント検知時の通知機能についてご紹介します。
ATA はインシデントを検知すると管理コンソール上にそのインシデントを表示することが出来ますが、
Syslog や指定された管理者にメール通知をすることも可能となっています。

通知の設定は下記の画面より実施することができます。




設定手順については下記のLink をご参考ください。

Setting ATA Alerts
https://technet.microsoft.com/en-us/library/mt126700.aspx


Syslog
連携時には、Syslog が転送されるサーバーに下記のような通知が実施され、
どのようなインシデントがどこから (From) 発生したかを把握することができます。


 

また、メール通知を実施する場合には、下記のようなメールが送信され、インシデントの詳細について記載された Excel のファイルが添付されます。


こちらも Syslog 同様どのようなインシデントがどこから (From) 発生したかを把握することができますが、

添付される Excel のファイルを通してより詳細を把握することが出来るようになります。
Excel のファイルを添付しておりますので、どのような情報が取得されるかを是非ご確認ください。
※シートの切り替えを実施ください

ATA の通知機能を利用することで、インシデントの発生をより迅速に把握することが可能となり、
そのインシデントへの対処もより迅速に行えるようになります。

是非ご活用ください。

「Halo Japan Championship 2016」優勝者発表

$
0
0

約 2 か月間に渡って熱戦が繰り広げられてきた「Halo Japan Championship 2016」の決勝戦が 2016 年 1 月 24 日(日)に開催され、下記のプレイヤーの皆さんが栄えあるチャンピオンの座を獲得されました。

 

【個人戦 (1 対 1)】

TEROTERO

 

【個人戦 (FFA)】

Klanny

 

【チーム戦 (4 対 4)】

FANATIC_ESL

 

熱戦の模様は「ニコニコ動画」のタイムシフト視聴でご覧いただけます。

http://live.nicovideo.jp/watch/lv248257300

「Halo Japan Championship 2016」 に参加いただいた皆さんありがとうございました!

 

 

Halo Japan Championship 2016 Webページ

http://www.xbox.com/ja-JP/community/halo-japan-championship/

Schnappschüsse der TechConference 2016

$
0
0

Diese Woche fand die dritte Microsoft TECH-Conference 2016 in Wien statt. An den beiden Konferenztagen von 20. bis 21. Jänner konnten sich Teilnehmer in über 20 Sessionsüber aktuelle Themen und Best Practises rund um Microsofts Technologie-Stack informieren.

image

Veranstalter waren Microsoft Österreich und das ETC Learning Center, die sich auf rund 340 Teilnehmer freuen konnten. Die Schwerpunkte der Tech Conference 2016 lagen bei Client & Mobility, Development und Database Solutions, Infrastructure Solutions und Productivity, siehe Agenda.

Wir vom TechNet Team Blog Austria waren vor Ort und haben neben einigen Schnappschüssen von der Konferenz auch kurze Interviews mit den Organisatoren, Sprechern und Stimmungsbilder von Teilnehmern eingeholt.

Die Interviews werden in Kürze in Form einer News-Show produziert und hier mit Link veröffentlicht.
Wir freuen uns darauf und bedanken uns bei allen Interview-Partnern!

Bis es so weit ist, gibt es hier eine kleine Auswahl mit einigen Foto-Schnappschüssen von der Tech-Konferenz.

WP_20160121_11_04_27_Rich_LI WP_20160120_09_36_54_Rich
WP_20160120_10_23_26_Rich_LI WP_20160120_12_40_23_Rich_LI
 WP_20160120_10_27_28_Rich WP_20160120_10_25_49_Rich_LI
vlcsnap-2016-01-24-19h28m41s887 vlcsnap-2016-01-24-19h22m52s111
vlcsnap-2016-01-24-19h35m13s296 WP_20160120_12_39_13_Rich
vlcsnap-2016-01-24-19h37m09s826 WP_20160120_09_35_59_Rich

Wie die Amerikaner so schön sagen… stay tuned. Winking smile

Azure Batch サービスのアップデートを発表 (2015 年 12 月)

$
0
0
このポストは、1 月 20 日に投稿された Azure Batch service update (December 2015) の翻訳です。 このたび Azure Batch サービスのメジャー アップデートが実施されました。これは、このサービスの一般提供が昨年 7 月に開始されて以来、初めてのことです。 このアップデートでは、以下をはじめとするさまざまな新機能が追加されています。 MPI のサポート ノードを削除せずにオフラインに切り替える機能 自動スケールの数式の評価期間を変更する機能 詳細については、以下のブログ記事を参照してください。 Azure Batch サービスのアップデート (英語) Azure Batch での MPI のサポートを発表 (英語)...(read more)
Viewing all 17778 articles
Browse latest View live


Latest Images