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

PowerShell and BitLocker: Part 2

$
0
0

Summary: Guest blogger, Stephane van Gulick, continues his series about using Windows PowerShell and BitLocker together.

Microsoft Scripting Guy, Ed Wilson, is here. Welcome back Stephane van Gulick for the final part of his two-part series. Be sure you read PowerShell and BitLocker: Part 1 first.

Encryption operations

A lot of the following script examples come from a function I wrote called BitLockerSAK. It is a tool written in Windows PowerShell that makes BitLocker tasks easier to automate.

Finally, we arrive at the interesting part: the encryption of the drive. Don’t get me wrong—the Trusted Platform Module (TPM) operations are extremely important in the process of automating the drive encryption. Without these steps, the drive encryption might not even happen. But this is where I had the most fun in the scripting process.

Are you sitting comfortably? You might want to get a refill of coffee before we hit it. Ready? All right...let’s go!

Everything that relates to the proper encryption of the drive and that needs to be automated resides in the WMI (CIM) repository. It lies in the same Root\cimv2\Security\ namespace hierarchy as the Win32_TPM. But this time we will dive into the Win32_EncryptableVolume class.

The Win32_EncryptableVolume class contains an instance for each of the volumes that are present on the computer (for example, hard drives and USB keys).

We can look into it by using the following command, and because we generally want to encrypt the system drive, we will filter on drive C.

Using Get-CimInstance will look like this (the results are shown in green in the following image):

$CIMVolumeC = Get-CimInstance -namespace "Root\cimv2\security\MicrosoftVolumeEncryption" -ClassName "Win32_Encryptablevolume" -

Or we can use Get-WmiObject as follows for retrocompatibility (shown in red in the following image):

$WMIVolumeC= Get-WmiObject -namespace "Root\cimv2\security\MicrosoftVolumeEncryption" -ClassName "Win32_Encryptablevolume" -filter "DriveLetter = 'C:'"

As you can see, these two commands return (almost) the same results:

Image of command output

The only difference is that Get-WMIObject returns the instance and the system properties (they start with the double underscore “__”).

Let’s look at the properties and methods we have access to through the two methods.

Get-CIMInstance returns the following list:

Image of command output

Get-WMIObject returns a bunch more methods—there are so many that we cannot see them all on this screenshot:

Image of command output

The CIM option returns only 18 results when piped to Get-Member:

Image of command output

But good old Get-WMIObject returns 84 results:

Image of command output

Now that we have seen the methods that are available, we can start to work with them.

Key protectors

Prior to launching the encryption of a specific volume, we need to set a key protector. A key protector will protect the volume encryption key, which will protect the volume that has just been encrypted.

We can find all the key protectors that can be set by using the following code:

$EncryptionData = Get-WMIObject -Namespace "Root\cimv2\security\MicrosoftVolumeEncryption" –classname "Win32_EncryptableVolume" -Filter "DriveLetter = 'c:'"

We have a few methods available as shown in the following screenshot:

Image of command output

Those I have worked with the most are:

  • ProtectKeyWithTPM
  • ProtectKeyWithTPMAndPIN
  • ProtectKeyNumericalPassword

Theoretically, we could allow any key protector on any computer. But this is something you want to control in your environment. This can be easily achieved by using a Group Policy Object (GPO).

Each key protector will deliver another encryption experience and it will need some custom scripting to make it work in your environment.

We will not go into the details of each because that would make this post even longer that what it already is. But each of the previous methods are documented on MSDN, so you can find everything that you need there.

Protection key IDs and types

We list the key protectors that are currently on one computer by using GetKeyProtectors and getKeyProtectorType from the Win32_Encryptable class. Here is the code from my BitLockerSAK function:

$BitLocker = Get-WmiObject -Namespace "Root\cimv2\Security\MicrosoftVolumeEncryption" -Class "Win32_EncryptableVolume" -Filter "DriveLetter = '$DriveLetter'"

                $ProtectorIds = $BitLocker.GetKeyProtectors("0").volumekeyprotectorID       

                $return = @()

                foreach ($ProtectorID in $ProtectorIds){

                $KeyProtectorType = $BitLocker.GetKeyProtectorType($ProtectorID).KeyProtectorType

                $keyType = ""

                    switch($KeyProtectorType){

                        "0"{$Keytype = "Unknown or other protector type";break}

                        "1"{$Keytype = "Trusted Platform Module (TPM)";break}

                        "2"{$Keytype = "External key";break}

                        "3"{$Keytype = "Numerical password";break}

                        "4"{$Keytype = "TPM And PIN";break}

                        "5"{$Keytype = "TPM And Startup Key";break}

                        "6"{$Keytype = "TPM And PIN And Startup Key";break}

                        "7"{$Keytype = "Public Key";break}

                        "8"{$Keytype = "Passphrase";break}

                        "9"{$Keytype = "TPM Certificate";break}

                        "10"{$Keytype = "CryptoAPI Next Generation (CNG) Protector";break}

                    }#endSwitch

 $Properties = @{"KeyProtectorID"=$ProtectorID;"KeyProtectorType"=$Keytype}

  $Return += New-Object -TypeName psobject -Property $Properties

                }#EndForeach

Return $Return

This enumerates the all the existing key protectors. Based on their IDs, it will fetch their type, put it in a custom object, and return the information through the variable $return.

You will have something similar to this:

Image of command output

Those I have seen the most are:

  • Numerical Password (return value 3)
  • TPM and PIN (return value 4)

BitLocker Drive Encryption operations

Finally, we come to the part about BitLocker Drive Encryption operations...

There is one main WMI class that hosts all the encryption methods and properties of all of your drives: the Win32_EncryptableVolume. You will find this class in the Root\cimv2\security\MicrosoftVolumeEncryption namespace.

Global protection state

Prior to any encryption operations, you most likely would want to verify which state the drive is in. If it is already 100% encrypted, you will save you some time. We can get that information by using the following  code:

$ProtectionState = Get-WmiObject -Namespace ROOT\CIMV2\Security\Microsoftvolumeencryption -Class Win32_encryptablevolume -Filter "DriveLetter = 'c:'"

                        switch ($ProtectionState.GetProtectionStatus().protectionStatus){

                            ("0"){$return = "Unprotected"}

                            ("1"){$return = "Protected"}

                            ("2"){$return = "Uknowned"}

                            default {$return = "NoReturn"}

}

return $return

We get a value of either 0, which means the drive is unprotected or 1, which means the drive is protected.

Image of command output

This is a first step. If the drive is protected, you can quit the whole script logic because this means that your drive is currently 100% encrypted, and it is ready for the wild, wild west.

Encryption state and encryption percentage

If you want the see the current encryption state of your drive, you can use the following code:

$EncryptionData= Get-WmiObject -Namespace ROOT\CIMV2\Security\Microsoftvolumeencryption -Class Win32_encryptablevolume -Filter "DriveLetter = 'c:'"

                        $protectionState = $EncryptionData.GetConversionStatus()

                        $CurrentEncryptionProgress = $protectionState.EncryptionPercentage

                    switch ($ProtectionState.Conversionstatus){

                    "0" {

                            $Properties = @{'EncryptionState'='FullyDecrypted';'CurrentEncryptionProgress'=$CurrentEncryptionProgress}

                            $Return = New-Object psobject -Property $Properties

                           }

                    "1" {

                            $Properties = @{'EncryptionState'='FullyEncrypted';'CurrentEncryptionProgress'=$CurrentEncryptionProgress}

                            $Return = New-Object psobject -Property $Properties

                           }

                    "2" {

                            $Properties = @{'EncryptionState'='EncryptionInProgress';'CurrentEncryptionProgress'=$CurrentEncryptionProgress}

                            $Return = New-Object psobject -Property $Properties

                            }

                    "3" {

                            $Properties = @{'EncryptionState'='DecryptionInProgress';'CurrentEncryptionProgress'=$CurrentEncryptionProgress}

                            $Return = New-Object psobject -Property $Properties

                            }

                    "4" {

                            $Properties = @{'EncryptionState'='EncryptionPaused';'CurrentEncryptionProgress'=$CurrentEncryptionProgress}

                            $Return = New-Object psobject -Property $Properties

                            }

                    "5" {

                            $Properties = @{'EncryptionState'='DecryptionPaused';'CurrentEncryptionProgress'=$CurrentEncryptionProgress}

                            $Return = New-Object psobject -Property $Properties

                            }

                    default {

                                write-verbose "Couldn't retrieve an encryption state."

                                $Properties = @{'EncryptionState'=$false;'CurrentEncryptionProgress'=$false}

                                $Return = New-Object psobject -Property $Properties

                             }

                }

return $return

The current encryption state and the current percentage of encryption of the current drive will be returned. If I launch this part of the code on my computer with elevated rights, the following results are returned:

Image of command output

Note  In the case of decryption, the percentage represents the amount of encrypted space.

The following Visio flow chart helps us see a global overview. It shows the action and the methods that are related to these actions.

Image of flow chart

Encryption

Now that we have identified the current state of the drive, we want to start the encryption. At this state, you should already have a protection key.

If we take a peek in the MSDN documentation, ProtectKeyWithNumericalPassword, we see that the ProtectKeyWithNumericalPassword method has two parameters as input [IN], and one as output [OUT]. But both of the input parameters are optional [Optional]. This means that we can actually call this method without passing any parameters.

Note  The following code will only work if you have set a GPO that allows drive protection by using TPM and PIN.

$pin = 123456 

$ProtectionState = Get-WmiObject -Namespace ROOT\CIMV2\Security\Microsoftvolumeencryption -Class Win32_encryptablevolume -Filter "DriveLetter = '$DriveLetter'"

                write-verbose "Launching drive encryption."

                    $ProtectorKey = $protectionState.ProtectKeyWithTPMAndPIN("ProtectKeyWithTPMAndPIN","",$pin)

                    Start-Sleep -Seconds 3

                    $NumericalPasswordReturn = $protectionState.ProtectKeyWithNumericalPassword()

                    $Return = $protectionState.Encrypt()

                    $returnCode = $return.returnvalue

                    switch ($ReturnCode) {

                        ("0"){$message = "Operation successfully started."}

                        ("2147942487") {$message = "The EncryptionMethod parameter is provided but is not within the known range or does not match the current Group Policy setting."}

                        ("2150694958") {$message = "No encryption key exists for the volume"}

                        ("2150694957") {$message = "The provided encryption method does not match that of the partially or fully encrypted volume."}

                        ("2150694942") {$message = "The volume cannot be encrypted because this computer is configured to be part of a server cluster."}

                        ("2150694956") {$message = "No key protectors of the type Numerical Password are specified. The Group Policy requires a backup of recovery information to Active Directory Domain Services"}

                        default{

                            $message = "An unknown status was returned by the Encryption action."

                            }

                    }

                    $Properties = @{'ReturnCode'=$ReturnCode;'ErrorMessage'=$message}

                    $Return = New-Object psobject -Property $Properties

return $return

As you can see, we use following two methods to encrypt our drive:

  • ProtectKeyWithTPMandPIN
  • ProtectKeyWithNumericalPassword

To protect our volume, we will use the ProtectKeyWithTPMAndPIN method. For this method, there are several parameters that we could pass, but only PIN is a required parameter.

According to the documentation, PIN accepts a user-specified personal identification string as input. This string must consist of a sequence of 4 to 20 digits or, if the "Allow enhanced PINs for startup" Group Policy is enabled, 4 to 20 letters, symbols, spaces, or numbers.

If a 0 is returned (operation successfully started), you can call the previous code and see how the encryption percentage progresses through the time.

Pause the encryption

If at any time, you want to pause the encryption, you can use the following code:

                 $BitLocker = Get-WmiObject -Namespace "Root\cimv2\Security\MicrosoftVolumeEncryption" -Class "Win32_EncryptableVolume" -Filter "DriveLetter = '$DriveLetter'"

                $ReturnCode = $BitLocker.PauseConversion()

                switch ($ReturnCode.ReturnValue){

                    "0"{$Return = "Paused sucessfully.";break}

                    "2150694912"{$Return = "The volume is locked.";Break}

                    default {$Return = "Uknown return code.";break}

                }

return $return

Note  To continue the encryption from where it was paused, simply use previous encryption code to call the encrypt() method again.

The drive encryption logic is summarized in the following Visio flow chart. It shows the actions and the methods that are related to these actions.

Image of flow chart

Decryption

In some cases, you might want or need to decrypt a drive. Again, this can be done through the Win32_EncryptableVolume WMI class with the following code:

$BitLocker = Get-WmiObject -Namespace "Root\cimv2\Security\MicrosoftVolumeEncryption" -Class "Win32_EncryptableVolume" -Filter "DriveLetter = 'c:'"

                $ReturnCode = $BitLocker.Decrypt()

                switch ($ReturnCode.ReturnValue){

                    "0"{$Return = "Uncryption started successfully.";break}

                    "2150694912"{$Return = "The volume is locked.";Break}

                    "2150694953" {$Return = "This volume cannot be decrypted because keys used to automatically unlock data volumes are available.";Break}

                    default {$Return = "Uknown return code.";break}

                }

return $return

If the code is launched, it will start the decryption of drive C.

If you launch the encryption state code again, you will see that the decryption starts and the CurrentEncryptionProgress percentage gets closer to zero each time you launch it.

Image of command output

The methodology must be familiar to most of you by now. If we combine the previous code examples, we can build a logic similar to the following quite easily by using the Decrypt() method.

Image of flow chart

Global encryption logic

I have presented a lot of code, and all of these single tasks need to be done in a specific order. I have summarized all the BitLocker encryption logic in the following Visio flow chart:

Image of flow chart

If the encryption involves a TPM, the TPM also need to be activated; and therefore, some specific TPM actions need to be done. (Those details are discussed in the first post of this series.)

BitLockerSAK

The BitLocker Swiss Army Knife (BitLockerSAK) is a project I started a while ago. It started with the need to automate TPM and BitLocker encryption for one of my clients. This client didn’t have Windows PowerShell 3.0 deployed—thus no BitLocker or CIM cmdlets.

After repetitively executing Get-WMIObject calls, I thought I would simplify the complete process and combine all of this in one unique tool that would have the look and feel of the well-known Manage-bde.exe. I wrote version 1.0 in a weekend and posted it shortly after.

BitLockerSAK makes TPM and drive encryption operations through Windows PowerShell much easier than calling the different WMI methods directly. It has additional logic that will save a lot of time for those who need to script BitLocker or TPM tasks. I have used it in complex encryption scripts and in Configuration Manager configuration items to retrieve non encrypted computers, and remediate the non-compliant ones.

The following tables might look similar, but I have simplified them (especially the WMI Method section) to help you identify how to execute which encryption or TPM task according to which tool you are using.

TPM operations equivalence

The following table lists the most common TPM WMI methods (based on Win32_TPM) and their BitLockerSAK equivalents.

 

WMIMethod

BitLockerSAK

TPM Enabled

.IsEnabled().isenabled

BitLockerSAK -isTPMEnabled

TPM Activated

.IsActivated().isactivated

BitLockerSAK -isTPMActivated

TPM Owned

.IsOwned().Isowned

BitLockerSAK -isTPMOwned

Take TPM OwnerShip

.ClearTpm + .TakeOwnerShip

BitLockerSAK -TakeTPMOwnership

Encryption operations equivalences

The following table lists the most common encryption WMI methods (based on Win32_EncryptableVolume) and their BitLockerSAK equivalents.

 

WMIMethod

BitLockerSAK

Get protection status

.protectionStatus + code to convert return code.

BitLockerSAK -GetProtectionStatus

Get encryption state

.GetConversionStatus() + encryptionpercentage

BitLockerSAK -GetEncryptionState

Get key protector type

.GetKeyProtectorType(“ID”)

BitLockerSAK - GetKeyProtectorTypeAndID

Get key protector ID

.GetKeyProtectors(). volumekeyprotector

BitLockerSAK - GetKeyProtectorTypeAndID

Delete key protector

.DeleteKeyProtectors()

BitLockerSAK –DeleteKeyProtector –protectorID “ID”

Encrypt drive

Specify the protector type +.Encrypt()

BitLockerSAK –encrypt –pin “123456”

Pause encryption

.PauseConversion()

BitLockerSAK -PauseEncryption

Windows Powershell cmdlets in Windows 8.1

Windows 8.1 brought a lot of new features, but one thing that was missing for some time were official Windows PowerShell cmdlets for TPM and encryption management. Luckily, Windows 8.1 came with Windows PowerShell 4.0 and a new set of cmdlets for managing BitLocker operations.

BitLocker cmdlets

The following cmdlets are provided in Windows 8.1 for BitLocker operations:

Image of command output

TPM cmdlets

There are 11 cmdlets for the TPM operations, and they are available in a module called TrustedPlatformModule.

Image of command output

I have updated the equivalence tables with these new cmdlets to help finding the information easier.

BitLocker equivalences

 

WMIMethod

BitLockerSAK

Windows 8.1 cmdlets

Get protection status

.protectionStatus + code to convert return code.

BitLockerSAK

Get-BitLockerVolume

Get encryption state

.GetConversionStatus() + encryptionpercentage

BitLockerSAK

(Get-BitLockerVolume).EncryptionPercentage

Get key protector type

.GetKeyProtectorType(“ID”)

BitLockerSAK

 

(Get-BitLockerVolume).keyprotector

Get key protector ID

.GetKeyProtectors(). volumekeyprotector

BitLockerSAK

 

(Get-BitLockerVolume).keyprotector[0].KeyProtectorID

Delete key protector

.DeleteKeyProtectors()

 

BitLockerSAK –DeleteKeyProtector –protectorID “ID”

Remove-BitLockerKeyprotector

Encrypt drive

Specify the protector type +

.Encrypt()

BitLockerSAK –encrypt –pin “123456”

Enable-BitLocker

Pause encryption

.PauseConversion()

BitLockerSAK -PauseEncryption

Suspend-BitLocker

TPM sheet

 

WMIMethod

BitLockerSAK

Windows 8.1 Cmdlets

TPM Enabled

.IsEnabled().isenabled

BitLockerSAK

Get-TPM

TPM Activated

.IsActivated().isactivated

BitLockerSAK

Get-TPM

TPM Owned

.IsOwned().Isowned

BitLockerSAK

Get-TPM

Take TPM OwnerShip

.ClearTpm + .TakeOwnerShip

BitLockerSAK -TakeTPMOwnership

Initialize-Tpm -AllowClear

Here is my contact information:

Website: PowerShell District
Twitter: @Stephanevg
Linked-In: Stéphane van Gulick

~Stephane

Thank you again, Stephane, for sharing your time and knowledge. This has been an awesome series, and one that is timely and important.

I invite you to follow me on Twitter and Facebook. If you have any questions, send email to me at scripter@microsoft.com, or post your questions on the Official Scripting Guys Forum. See you tomorrow. Until then, peace.

Ed Wilson, Microsoft Scripting Guy


Azure Web Conferense – Lær hvordan du kan bygge applikasjoner med Azure App Services.

$
0
0


Azure App Service gjør det enklere for utviklere og løsningsarkitekter å bygge skreddersydde apper. Ved å samle Azure Websites, Azure Mobile Services, Azure BizTalk Services og Notification hubs i en og same tjeneste, slipper man å bygge sine løsninger på tvers av plattformer.

Ønsker du å vite mer om hvordan slike apper kan bygges internt eller på vegne av kunde/parnter?  I to ulike web-konferanser vil vi gi deg et detaljert bilde av tilgjengelighet og verktøy du som utvikler kan bruke i Azure App Service. Web-konferansen vil også ta for seg prising av tjenesten, og ulike salgsscenarier du som forhandler kan møte.

Hver konferanse tilbys live på to ulike tidspunkt, og instruktør vil her gjennomgå den samme tematikken.


Enterprise Apps on Azure App Service
May 28th 5:00 PM (Pacific)
May 29th 8:00 AM (Pacific)

Selling Enterprise Web and Mobile Apps with the New Azure App Service
June 16th 5:00 PM (Pacific)
June 17th 8:00 AM (Pacific)

Meld deg på web-konferansene her

微软中国区合作伙伴六月份课程训练精选

$
0
0

尊敬的合作伙伴,您好!

 

为了更好的服务我们的合作伙伴,六月份我们将提供如下课程来帮您提升团队的技术能力,或者更好的帮助您销售微软的解决方案。学习体验部署使用的过程,我们都有相应的服务来给予您协助和支持,让您有最好的体验。

 

如有任何疑问,

如有任何疑问,请来信至:

AskPTSchina@microsoft.com

 

您可以电话联系我们:

800-820-3800*3*2

 

我们将会有专员为您做详细的解答。请您选择您感兴趣的课程,并点击课程注册链接进行课程注册即可。


课程名称课程描述讲课时间培训工程师注册链接授课语言
Exchange online protection技术概览介绍EOP特性,管理与使用6/4/2015 2:00 -4:00 PMEltarish点击这里注册中文
Exchange Online 存档概览介绍Exchange Online 归档, 客户端存档功能,合规性和安全功能6/5/2015 2:00 -4:00 PMEthan Qi点击这里注册中文
Skype for Business 新特性介绍Skype for Business新特性6/11/2015 2:00 -4:00 PMXixi Huang点击这里注册中文
Sharepoint 企业内容管理课程将简单介绍如何使用Sharepoint进行企业内容管理6/12/2015 2:00 -4:00 PMJia Liu点击这里注册中文
Office 365 架构简介简介Office 365背后的物理架构,用户身份管理;讨论微软Office 365是如何保证用户数据安全性的;Office365数据中心的组成等6/18/2015 2:00 -4:00 PMJiamei Zheng点击这里注册中文
Office 365 部署和IMAP迁移介绍Office 365的部署、迁移模式等6/19/2015 2:00 -4:00 PMJerry Ye点击这里注册中文
Office 365 面向中小型企业实践加速器在这次的实践加速器服务中,您将会学到基本的部署原则和流程,让您可以为中小企业不断地成功部署Office 365。 针对Exchange Online, SharePoint Online, OneDrive for Business, Yammer 和 Lync Online 的部署/迁移,我们将会介绍有关的新功能以及相关工具,并且在尽可能少的时间内,提供一个精巧的解决方案。我们将会提供给您关于单独的产品和功能交付准备的后续步骤,确保您的交付实践可以快速地从构想规划阶段,进入到实验,部署/迁移和采用阶段6/25/2015 9:30-4:30PMHua Chen, Xuan Li点击这里注册中文
CRM Online管理介绍CRM online管理,价格和授权等6/26/2015 2:00 -4:00 PMSiming Yu点击这里注册中文

夏休み中に準備していただけるように OneNote を強化。学校管理者や教職員、生徒の各ニーズに対応する新機能をリリース

$
0
0

(この記事は 2015 年 5 月 20 日に Office Blogs に投稿された記事 OneNote gets ready for summer technology planning with updates for everyoneの翻訳です。最新情報については、翻訳元の記事をご参照ください。)

 

「OneNote を導入したことで、私のクラスは本当の意味で変貌を遂げ、進化しています (中略) 1 人ひとりの生徒のニーズにすばやく、きめ細やかに対応できるようになりました」— マンテカ統一学区ウェストン ランチ高校、教員兼テクノロジ推進担当 Michael Williams 氏 (詳細については同氏が作成した Office Mix (英語)をご覧ください)

今回、OneNote Class Notebook (英語)OneNote Staff Notebook、 および各プラットフォーム向け OneNote で特に多くのご要望を頂いていた多数の機能が、Office 365 ユーザーの皆様に提供されることとなりました。マイクロソフトの認識では、多くの学校やその IT 担当者の方は、Office 365 Education テナントに OneNote Class Notebook アプリを自動インストールするなどの大規模な変更を実施する際、ある程度の準備期間を必要とされています。そこで今回の更新は 5 月下旬から 6 月中旬にかけて全世界に順次リリースすることにしました。これにより、世界中のほとんどの地域で、夏休み期間中に次年度のテクノロジ活用に向けた準備を整 えることができます。

OneNote Class Notebook が教員の皆様にとってさらに使いやすく

幼稚園から 12 年生 (日本の高校 3 年生に相当) までを受け持つ教員は、授業で使用するアプリやサービスを選択する権限を持っている場合が多く、IT 担当者は教員が生徒にとって最適なテクノロジを選択できるように支援したいと考えています。教員の皆様からは「OneNote Class Notebook を活用すると生徒との共同作業や情報の整理が効率化できる」という喜びの声が定期的に寄せられています。このため、OneNote Class Notebook の「ウィザード」を Office 365 Educationを使用しているすべての教職員に自動的にご利用いただけるようにしました。また、Class Notebook ではノートブックを見つけやすくするために、アプリ起動ツールの [My Apps] ページに 表示し、シンプルな URL からアクセスできるようにしています。OneNote Class Notebook は、複雑なアクセス許可や設定を行わなくても、すべての教職員の方にお使いいただけます。また、お客様からのご意見を参考にして、アプリ名を 「OneNote Class Notebook Creator」から「OneNote Class Notebook」に短くしました。

OneNote Staff Notebook の利用がもっと簡単になり、サービス提供地域も拡大

OneNote Staff Notebookもたいへんご好評いただいており、OneNote Class Notebook と同様に、既存および新規のすべての Office 365 Education E1、E3 プランのユーザーにお使いいただけるようになります。これで、Office 365 にログインして [My Apps] ページに移動するときと同じくらい簡単に、OneNote のスタッフ用ノートブックを作成して学校で利用できるようになります。

Staff Notebook のサービス提供地域が拡大され、新たに 45 の言語、60 の市場を対象にリリースされます。対応言語は 1 月 15 日に発表された Class Notebooks の対応言語と同じですので、そちらのリストをご覧ください。この他にも、中東地域のお客様からのご要望を受け、右から左に記述するアラビア語やヘブライ語でも OneNote Class Notebook と Staff Notebook を近日中にリリースする予定です。

現在のサービス提供地域は下図のとおりです。この地図は Excel Power Map を活用して作成しました。

Class Notebook と Staff Notebook の新機能

この数か月間、マイクロソフトでは教育機関の皆様から Class Notebook と Staff Notebook に関するご意見を頂いたり、実際に学校を訪問してお話を伺ったりしました。こうして集められたフィードバックの中で特にご要望の多かった項目が、新機能と してリリースされることになりました。今後数週間以内に、下記の機能が全世界の対象となるお客様に順次適用されます。

  • Active Directory セキュリティ グループのリストを利用して生徒を追加可能に— 教員が授業用ノートブックへのアクセス許可を生徒全員にすばやく付与できるように、ウィザードの [Add Student Names]ページで Active Directory セキュリティ グループ (英語)がサポートされました。クラスのリストを 1 回の入力で追加できるので、時間を節約できます。たとえば、新たに SharePoint グループのエイリアスを Mrs. Smith Period 1 (スミス先生 1 限)という名前の [Student Names] フィールドに入力するとします。このディレクトリが各教員の担当クラスのグループとしてセットアップされている場合、Active Directory セキュリティ グループのリスト上の生徒の情報に基づいて、クラスの生徒全員の個人用スペースが作成されます。次にその例を示します。

  • 授業用ノートブックから生徒や副担当教師を削除可能に— 生徒や副担当教師のアクセス許可を簡単に削除できるようにしてほしいというご要望も数多く寄せられていました。これを受けて、授業または学校から去ることになった副担当教師や生徒を [Remove Student] と [Remove Teacher] から削除できるようにしました。追加操作と同じくらい簡単に実行可能です。ただし、この機能では生徒のアクセス許可のみが削除され、生徒の個人用ノート ブックはそのまま残されます。このため、このノートブックを手動で削除するかアーカイブ化する前に、パッケージ化する時間を十分に確保できます。

この機能は Staff Notebook にも追加されており、ノートブックにアクセス可能なメンバーや共同所有者を削除することができます。

本製品に追加してほしい機能などのアイデアをお持ちの方は、ご自身の学校やクラスでのシナリオをお書き添えのうえ、User Voice サイト (英語)にご投稿いただくか OneNoteEDU@microsoft.comまでメールをお送りください。今回導入した機能のように、お客様からのご意見やご要望は実際に開発の参考とさせていただきますので、ぜひご協力をお願いいたします。

新しい API と LTI のサポートにより、学習管理システムの自動化と統合を推進

ここまで説明した機能の他に、Class Notebook と Staff Notebook の両ソリューションを既存の学習管理プラットフォームに拡張して自動化を進めたいというご要望も多数寄せられていました。4 月に Office 365 向けの OneNote API (英語)がリリースされましたが、さらに新しい REST API が今後追加され、IT 管理者はクラス名簿の管理や OneNote ページのエクスポートおよびインポートなどといった Class Notebook や Staff Notebook の管理プロセスを自動化できるようになります。また、パートナーも API を使用して Class Notebook や Staff Notebook を自社ソリューションと緊密に統合することができます。この API では、下記の操作をプログラムから実行できます。

  • 授業用またはスタッフ用ノートブックの作成
  • 生徒や教員の追加および削除 (生徒情報システムの名簿と同期)
  • OneNote ページのコピー (学習管理システムの課題配布および収集ワークフローに統合)
  • ノートブックの複製 (年度末のアーカイブ作業に対応)

さらに、今後 Class Notebook は、LTI (学習ツールの相互運用性 (英語)) 標準に準拠します。このため、Class Notebook は Blackboard、Moodle、Canvas、Schoology、Sakai、Desire2Learn などの主要な学習管理システム (LMS) プロバイダー、およびその他のプロバイダーや LTI に準拠する学習プラットフォームとの統合が可能になります。

LTI アプリをインストールしている教員の皆様は、Class Notebook を起動して作成プロセスを実行し、そこで作成したノートブックを自身の LMS コースに追加する作業を、すべて学習環境の中で行うことができます。

各デバイス向け OneNote に生徒のニーズを重視した更新を実施

もちろん、生徒のことも忘れてはなりません。彼らは教育現場において最も重要な存在です。先週、Apple 製品を含む各種デバイスで OneNote を使用している生徒の皆様を主な対象として、更新をいくつかリリースしました。

まず、特にご要望の多かった OneNote for Mac の機能強化 (英語)について説明します。

  • 音声の録音 — 授業や講義を録音して、後から重要なポイントを聴き返せる便利な機能です。
  • 数学の方程式の表示 — 教員が Windows デバイスの OneNote で作成した方程式を、生徒が Mac で表示できるようになります。
  • 削除されたページの復元 — 生徒や教員が誤って削除したアイテムを復元できるようになります。

さらに、すべてのプラットフォームで手書き検索機能 (英語)がサポートされると共に、OneNote for iPad へのページのコピー/貼り付けが可能になります。これは Class Notebook および Staff Notebook の利用時にコンテンツ ライブラリから個人用ノートブックにページを移動するために必須とな重要な機能です。

マイクロソフトでは、皆様と同じように夏休みを心待ちにしていますが、何よりも夏休みの後に学校管理者や教職員、生徒の皆様が OneNote を活用してさらに多くのことを実現できるようになることが楽しみです。ぜひ皆様からのご意見、ご感想、活用事例をお聞かせください。新しい Twitter アカウント @OneNoteEDUでシェアさせていただきます。その際、ツイートにハッシュタグ「#OneNoteClass」または「#OneNoteStaff」を付けていただくようお願いいたします。

また、OneNoteInEducation.com (英語)では無償のトレーニング用資料を公開していますので、お時間に余裕がありましたらご利用いただくことをお勧めいたします。

どうぞ楽しい夏休みをお過ごしください。

Доступна предварительная версия Project 2016!

$
0
0

Мы рады объявить о выпуске предварительной версии Office 2016, которая включает Project 2016 и Visio 2016.

Чтобы попробовать превью, нажмите ссылкуи следуйте дополнительным инструкциям как добавить Project 2016 и Visio 2016 ниже:

...(read more)

New Ninja Belt Promotions! Heroes Step Forward! Honours, Love, Immortal Fame and Fortune!!!

$
0
0

Great news Wiki Ninjas!

 

The Ninja Belt Calculator has just been run (monthly), and the list of Ninja Belts have been updated!

The result has been updated in the following WIki article: Wiki Ninja Belt Status: Who Has What Belt Ranking

The calculator has been run bi-monthly for the last two runs, but now we have everything in place, we will be increasing this to monthly, or even weekly!

Anyone who "comes onto our radar" (either by winning a Weekly Top Contributor Award, winning a TechNet Technical Guru Award, being interviewed or having a featured article) gets added to our database.

We then track your progress and achievements, and award Ninja Belts - depending on your progress.

Ninja belt ranks include your profile stats, so we have to import them too.

Altogether, this is crunched through our Ninja Belt Calculator, based on the rules defined here.

And below is a list of those community members who have just gained a rank...

Calculator Belt Upgrades for 26 May 2015

User NameNinja Belt
Durval RamosBlack Belt (2nd Dan)
Luigi BrunoBlack Belt (1st Dan)
Recep YUKSEL - TATPurple Belt
Ed (DareDevil57)Brown Belt
Saeid HasaniGreen Belt
Dan ChristianOrange Belt
ChervineOrange Belt
Asil MUTLU - TATOrange Belt
Bob BlorkYellow Belt
Heidi Steen - SQLUEWhite Belt
Jefferson CastilhoWhite Belt
Bruno N. L. FariaWhite Belt

Congratulations to all these Wiki Ninjas for gaining ranks this time round!

 

Доступна предварительная версия Visio 2016!

$
0
0

Мы рады объявить о выпуске предварительной версии Office 2016, которая включает Visio 2016 и Project 2016.

Чтобы попробовать превью, нажмите ссылкуи следуйте дополнительным инструкциям как добавить Visio 2016 и Project 2016 ниже:

...(read more)

Magine TV tar steget in i Windows Phone

$
0
0

Idag lanseras Magine TV’s nya app till Windows Phone. Med den helt nya appen kan svenska användare nu njuta av ett stort utbud av underhållning – var som helst, när som helst.

Intresset för Windows Phone ökar konstant och med det fortsätter även apputbudet i Windows Store att växa. Senaste tillskottet är Magine TV som låter användare i Sverige ta del av innehållet från 67 populära kanaler som till exempel CNN, Comedy Central, Discovery, MTV och Disney Channel direkt på telefonens skärm.

- Att Magine TV nu väljer att lansera sin tjänst till Windows Phone är ett kvitto på det stora intresse som finns för vårt operativsystem. Det är väldigt roligt att välkomna Magine TV till Windows Phone vilket ytterligare stärker vårt utbud av appar,säger Klas Hammar, affärsområdeschef Windows och Surface på Microsoft.

Den molnbaserade Magine TV-appen låter Windows Phone-¬användarna bestämma var och när de vill se sina tv¬-program via en catch¬up-funktion. Dessutom går det att pausa och spola i live¬program. Alla nya användare som registrerar sig får dessutom prova tjänsten gratis i 30 dagar.

- Magine TV’s app för Windows Phone gör det lätt för användarna att hitta sina favorit-program genom ett enkelt, snyggt och intuitivt gränssnitt. Vi når nu en ännu större grupp tittare som kan ta del av Magine TV:s unika kombination av live¬tv, start¬over och catch¬up i en och samma tjänst, säger Alexander Jamal, Sverigechef Magine TV.

Magine TV finns sedan en tid som app i Windows 8 för dator och surfplatta.
Magine TV är en svensk satsning som finns etablerad i Sverige sedan 2013, i Tyskland sedan våren 2014 och med lanseringar på nya marknader planerade för 2015.


Ladda hem Magine TV till Windows Phone här.


5 Giugno: Evento Gratuito in Microsoft!

$
0
0
Buongiorno a tutti! Il concetto di Datacenter , applicazioni e business sta decisamente cambiando. Chi avrebbe mai pensato che Microsoft potesse presentare una strategia tecnologica applicabile a qualsiasi scenario? Parlo di soluzioni che vi permettono di continuare a utilizzare tranquillamente i vostri server Linux, farne il Backup e gestirli come se fossero dei Windows Server . Parlo di scrivere applicazioni in qualsiasi linguaggio e renderli accessibili da tutto il mondo e da qualsiasi dispositivo...(read more)

Disaster Recovery di VmWare in Microsoft Azure

$
0
0
Oggi è possibile provare lo scenario di Disaster Recovery anche per i vostri server virtualizzati con VmWare! ASR (Azure Site Recovery) è stato sin dal suo annuncio un servizio strepitoso: si tratta dell’opportunità di demandare a Microsoft Azure il compito di salvare lo stato e orchestrare le operazioni di Recovery delle vostre macchine virtuali. Il tutto verso un secondo sito che può essere un datacenter privato oppure Microsoft Azure stesso. E se fino a poche...(read more)

Where can you place the Data Management Gateway?

$
0
0

NOTE: Information good as of 5/26/2015 and is subject to change!

There seems to be some confusion about where the Data Management Gateway (DMG), or rather any Gateway, for Power BI can be located.  The biggest thing I hear is that the gateway has to be on the box that we are trying to connect to.

So, for example, I have a SQL Server that I want to use with Scheduled Data Refresh with Power BI.  People would tell me that the gateway has to be on the SQL Server box.  That just simply isn’t true.  The short answer to this is just plain no!

Does that mean we should just put the gateway anywhere?  No!  We should be thoughtful with where we locate this.  Having the gateway on the machine we are trying to connect to is the shortest distance we can be.  This eliminates potential network latency issues and really allows us to get in and get out a little faster.  Your milage will vary of course as it really depends on your infrastructure. 

That being said, some DBS’s or IT folks may prefer it not to be on the data server as that could impact what the data server is actually trying to do.  So, in that respect you may want it on a different machine.  You will really need to look at your environment and determine what is the best fit for you.  As with most things, it really depends.

Changing the Gateway to a different box

For this example, we have a workbook setup that has a SQL Connection via the Excel Data Tab.  We already have a Gateway and Data Source setup for this refresh to succeed.

SNAGHTML474b28

I have a Gateway called GuyInACube that is sitting on the box that is hosting my SQL Server.

SNAGHTML481afc

I also have another Gateway available that is just sitting on a different server.  This gateway is called ClientGateway.

SNAGHTML4927d8

Unfortunately, the UI doesn’t let you change the gateway of a Data Source.  It has a drop down, but only shows the current gateway. So, we need to delete the existing gateway and create a new one.  The reason we want to delete the old one, instead of them being side by side is that will cause issues with the Data Source/Connection String Match up.

When we create the new Data Source, we keep all the same info, except I choose the ClientGateway for the Gateway dropdown.

SNAGHTML5ed538

Once that is done, we can go back and test the connection from the Scheduled Data Refresh perspective.

SNAGHTML474b28

 

Adam W. Saxton | Microsoft Business Intelligence Support - Escalation Services
@GuyInACube | YouTube | Facebook.com\guyinacube

お客様も買ってうれしい! 販売会社様も売ってうれしい! 春の W チャンス キャンペーン【5/27 更新】

$
0
0

2015 年 6 月 30 日までの期間限定で、ボリューム ライセンスでご販売いただいた販売会社様に素敵なプレゼントがもらえるキャンペーンを実施中です。

対象期間中に Office や Server 製品をボリューム ライセンスで販売いただきますと、もれなく最新マウスをプレゼント! さらに、抽選でタブレットや空気清浄機などの豪華景品が当たります。
この機会に、Windows XP や Office 2003 を引き続きご利用中のお客様やパソコンの入れ替えをご検討されているお客様へ、ボリューム ライセンスでの購入をおすすめください。


▼ 販売会社様向け マイクロソフト 春の W チャンス キャンペーンの詳細はこちら

なお、お客様向けにも同スペックのキャンペーンを実施中です。このチャンスをお見逃しなく!

▼ お客様向け マイクロソフト 春の W チャンス キャンペーンの詳細はこちら


※キャンペーンなどは、期間終了後にページが Close になっている場合があります。ご了承ください。

Enable or Disable Incremental Collection Updates via PowerShell

$
0
0

Hi Gang.

Here is a couple of functions I’ve written to enable or disable Incremental Collection updates by Collection Name or Collection ID.

Enable via Collection ID

Enable-IncrementalUpdates -CollectionID PRI0000C

Enable via Collection Name

Enable-IncrementalUpdatesCollectionName “CU Deployment” 

Disable via Collection ID

Disable-IncrementalUpdates -CollectionID PRI0000C

Disable via Collection Name

Disable-IncrementalUpdatesCollectionName “CU Deployment” 

I’ve also added an optional parameter to specify the Server Name, so this can be run remotely by adding the SMS Provider name to your cmdlet

Enable-IncrementalUpdates -CollectionID PRI0000CServer PRI

And of course it’s pipeline enabled

Import-CSV -Path .\collections.csv | % {Enable-IncrementalUpdates -CollectionName $_.Collection}

Here’s the code

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043

function Disable-IncrementalUpdates {

 
[CmdletBinding(DefaultParameterSetName="CollectionID")]
 
   
Param
    (
   
[Parameter(Mandatory=$true,ParameterSetName="collectionID", Position=0)]
    [String]$CollectionID,
    [Parameter(Mandatory=$true,ParameterSetName="collectionName", Position=0)]
    [String]$CollectionName,
    [Parameter(Mandatory=$false,ParameterSetName="collectionName", Position=1)]
    [Parameter(Mandatory=$false,ParameterSetName="collectionID", Position=1)]
    [String]$Server
    )

if(!$server){ $server = '.'}
$siteCode = @(Get-WmiObject -Namespace root\sms -Class SMS_ProviderLocation -ComputerName $server)[0].SiteCode
gwmi sms_collection -ComputerName $server -Namespace root\sms\site_$siteCode -Filter "CollectionID = '$collectionID' or Name = '$collectionName'" | % {
$collection = [wmi] $_.__Path 
$collection.RefreshType = 2
$collection.Put() | Out-Null
} 
}


function Enable-IncrementalUpdates
 {

 
[CmdletBinding(DefaultParameterSetName="CollectionID")]
 
   
Param
    (
   
[Parameter(Mandatory=$true,ParameterSetName="collectionID", Position=0)]
    [String]$CollectionID,
    [Parameter(Mandatory=$true,ParameterSetName="collectionName", Position=0)]
    [String]$CollectionName,
    [Parameter(Mandatory=$false,ParameterSetName="collectionName", Position=1)]
    [Parameter(Mandatory=$false,ParameterSetName="collectionID", Position=1)]
    [String]$Server
    )

if(!$server){ $server = '.'}
$siteCode = @(Get-WmiObject -Namespace root\sms -Class SMS_ProviderLocation -ComputerName $server)[0].SiteCode
gwmi sms_collection -ComputerName $server -Namespace root\sms\site_$siteCode -Filter "CollectionID = '$collectionID' or Name = '$collectionName'" | % {
$collection = [wmi] $_.__Path 
$collection.RefreshType = 4
$collection.Put() | Out-Null } 
}

Happy POSHing!

Matt

Terça-Feira - Artigo Spotlight - Corrigindo erros de conexão após diminuir os valores da propriedade ‘Maximum Number of Concurrent Connections’ no SQL Server

$
0
0

Olá Comunidade TechNet Wiki!

Hoje é terça-feira, dia de Artigo Spotlight!

E o destaque de hoje vai para o Artigo Corrigindo erros de conexão após diminuir os valores da propriedade ‘Maximum Number of Concurrent Connections’ no SQL Server

Criado pelo Colaborador 

No SQL Server existe uma propriedade ao nível de servidor chamada Maximum Number of Concurrent Connections, essa configuração especifica o número máximo de conexões de usuários concorrentes a uma instância do SQL Server. O número atual de conexões de usuários permitida depende da versão do SQL Server, assim como, os limites da aplicação ou hardware.

O valor padrão para essa propriedade é zero e normalmente esse valor não será alterado, pois significa que não existem “limites” (na verdade o valor máximo é de 32.767) para a quantidade de conexões de usuários concorrentes.

Obrigado Bruno pelas suas ótimas contribuições.

Venha nos ajudar contribuindo com a comunidade Technet Wiki BR.

Até a próxima!

Wiki Ninja Jefferson Castilho ( BlogTwitterWikiPerfil )

 

Office 365 Partner Community: focus on CRM Online – your opportunities

$
0
0

clip_image001

by Michael Panciroli
US Partner Technology Strategist for Office 365

The Office 365 Partner Community is led by National Partner Technology Strategists from the Microsoft US Partner Team. Partner Community activities include blog posts, discussions on Yammer, newsletters, and community calls.

This is part 3 of our Office 365 Partner Community blog series about adding CRM Online to your practice. Read part 1 and read part 2.

Office 365 partner opportunities with Microsoft Dynamics CRM Online

In this third and last post in our Office 365 Partner Community blog series about adding Microsoft Dynamics CRM Online to your practice, I’ll talk about two opportunities that fit nicely within the cloud productivity and enterprise social capabilities that Office 365 offers: Sales Productivity Solution and Microsoft Social Engagement.

Sales Productivity Solution (SPS)

The processes of buying and selling have changed dramatically. Through digital and social channels, buyers today have access to vast amounts of data, information, and social networks, where they can do their own research, ask for opinions, come up with solutions, and make buying decisions on their own, before ever talking to a salesperson. The role of the sales professional must evolve alongside this empowered customer, and the sales community needs new, modern tools that enable sales professionals to become a trusted advisor to sell more effectively.

The sales professional for this new purchasing dynamic needs to bring together social conversations and their personal networks, plus have access to the data available across the company. The Sales Productivity Solution offering comprises Microsoft Dynamics CRM Online, Office 365, and Power BI. The combination of these services provides a modern experience, while keeping the customer in focus. SPS enables organizations to empower their salespeople and help them more effectively engage with customers, and deliver amazing experiences by zeroing in, winning faster, and selling more.

image

The Sales Productivity Solution is not a product sale, and you will want to master the business value conversation to have with your customers, versus demoing individual features. Sales professionals want to be able to cut through the clutter, zero in on opportunities, and quickly identify what they need to do next. They want to be able to build analytical models so they know how to target solutions and sell with the network intelligence. And, they want to be able to easily collaborate with colleagues and find and access information that can help them sell more to achieve their sales goals. Fulfilling these business needs is what the Sales Productivity Solution does well, and the power of the combination of CRM Online, Power BI, and Office 365, including Yammer, make it a very difficult solution to compete against.

image 

Partner opportunity

We believe there are about 300 million information workers in sales positions today who are using ad hoc solutions, without much structure or process. The partner opportunity to introduce a modern solution—the Sales Productivity Solution—is significant. Eligible partners can earn Online Services Advisor fees, and have the opportunity to make up to 5x revenue on a Sales Productivity Solution engagement. There is greater return because the customer conversation about SPS often includes a broader range of solutions. For example, Workflow Automation and Sales Process Management are typical, and some conversations will move toward business transformation and organizational change, which have higher ratios. Microsoft Dynamics Marketing and our cloud-based customer service solution, Parature, are two additional offerings around market automations.

Through June 30, customers save on the Sales Productivity Solution, and pay just $65 per user/month for CRM Online, Office 365, and Power BI. Learn more about the offer.

Microsoft Social Engagement

Microsoft Social Engagement was previously called Microsoft Social Listening, and its new name signals the evolution from just listening to an emphasis on customer engagement. MSE puts powerful social tools in the hands of sales, marketing, and service teams — helping them connect on social media their customers, prospects, and partners from within Microsoft Dynamics CRM or with a stand-alone app. With these tools, your customers can discover social insights about their brands, products, and services to gain a true understanding of sentiments about their businesses and shape their messaging and sales strategy.

Watch this video for an overview of Microsoft Social Engagement

image

Partner opportunity

The MSE experience is still evolving and Microsoft will continue to innovate and make investments. Your opportunities today are to help clients with the end to end social experience. For example, you could help leverage their CRM system to ingest tweets as cases or leads and build a business process with assignments, customizing workflow and coordinating group collaboration. Other services you can offer include extending analytics reporting to tailor it to clients’ needs or building out new reports to help community management teams understand the effectiveness of their interactions and engagement and help quantify the number of posts, response times, and reach.

There are also opportunities around content management and publishing, helping your clients to be  proactive by developing a solution to curate, manage, and syndicate content that can be pushed out to different channels by marketing and sales teams. Get training about Social Engagement to understand your opportunities.

How to get started as a Microsoft Dynamics CRM partner

Here are a few resources to get started if you’re interested in taking the next step to integrating CRM into your Office 365 practice:

If you’ve made the decision to add Microsoft Dynamics CRM Online to your Microsoft Office 365 practice, the US Dynamics CRM Online Partner Portfolio Recruitment team (Dynamics PPR) is your first connection to start your planning. Each Recruiter is geographically based, and has an Operations resource that is dedicated to helping partners through the onboarding process.

To connect with the Dynamics PPR team, email nominatepartner@microsoft.com. A Dynamics Partner Portfolio Recruiter will respond and follow up with you to discuss your interests as well as provide further details about becoming a successful Dynamics CRM Online partner.


101 COSAS QUE PUEDES HACER CON CLOUD OS–Cosa 53

$
0
0

COSA #53: DOCKER

Hola amigos, hoy les voy a hablar de Docker, que es una plataforma abierta que nos permite construir y distribuir aplicaciones de una manera muy rápida y eficiente.

Ustedes se preguntarán por qué estoy hablando de aplicaciones cuando este Blog está orientado a profesionales de IT. Pues bien con la nueva tendencia a integrar Desarrollo y Operaciones (DevOps) tecnologías como Docker nos ayudan a cerrar la brecha entre estas 2 áreas, que en un tiempo fueron consideradas muy disímiles y tenían muchos conflictos entre sí pero que hoy en día deben trabajar en equipo para desplegar aplicaciones y servicios en una compañía.

Docker no es una tecnología de Microsoft pero puede ser usada en nuestra plataforma sin inconvenientes.

Existe una distribución de Linux que denomina CoreOS (https://coreos.com/) que se encuentra disponible en la galería de imágenes de Microsoft Azure y que es una distribución de Linux lista para manejar “contenedores” Linux que en la práctica son pequeñas máquinas Linux con aplicaciones ejecutándose. En pocas palabras puedo tener una máquina con CoreOS y dentro de ella ejecutar pequeñas máquinas Linux por ejemplo con Ubuntu.

Recuerden que las máquinas de Azure son virtuales, de modo que dentro de una máquina virtual Linux (CoreOS) voy a tener en ejecución otras máquinas o contenedores Linux, por ejemplo Ubuntu. Este es un concepto nuevo y muy revolucionario que se basa en el hecho de que estas pequeñas máquinas –contenedores- tienen bastantes librerías en común, de modo que comparten de alguna manera estas librerías y sólo usan los componentes que requieren para su funcionamiento individual.

Bueno, con esa breve introducción ¡A lo que vinimos! para este ejercicio voy a usar una VM de Azure con CoreOS. Las opciones disponibles en la galería son las siguientes:

image

En este ejercicio voy a usar la versión estable (CoreOS Stable). Para crear una VM en Azure pueden referirse a este Post de la documentación de Azure, sólo deben cambiar la imagen Windows por una una imagen del tipo Linux CoreOS.

Una vez creada la máquina vamos a ver cómo trabajar con contenedores y usar la plataforma

image.

Ya estoy dentro de mi máquina CoreOS–me conecté con putty- con el usuario abarba y para hacer cualquier operación debo usar la siguiente estructura sudo <comando>

En el caso de Docker, vamos a ejecutarlo siempre con sudo y un comando o parámetro, es decir:

sudo docker <comando/parámetro>

Si quiero lanzar un contenedor basta con ejecutar el siguiente comando:

sudo docker run -t -i ubuntu /bin/bash

Y voy a ver algo similar a lo siguiente:

image

Observen que antes me encontraba en CoreOS con el usuario abarba y ahora me encuentro en un Linux Ubuntu que es un contenedor con el ID 8ce70e96e4c1 con el usuario root, de hecho tengo que abrir otra sesión de putty para conectarme a CoreOS puesto que ya no me encuentro en CoreOS sino en el contenedor de Ubuntu. En este contenedor puedo ejecutar comandos como los de cualquier LinuxUbuntu en este caso-:

image

Este contenedor es un contenedor denominado interactivo, por la manera en que fue invocado.

De nuevo en mi sesión, puedo preguntarle a Docker por el estado de mi contenedor usando el siguiente comando: sudo docker ps

image

Ahí se ve el contenedor en ejecución con el ID 8ce70e96e4c1 que previamente había lanzado. Si lanzo otros contenedores se verán ejecución con el mismo comando:

image 

Observen la cantidad de información valiosa que me arroja el comando sudo docker ps como por ejemplo el ID de cada contenedor, la versión y el momento de creación y el status de cada uno de ellos.

Yo también puedo ejecutar imágenes de otras distribuciones como CentOS usando

sudo docker run -i -t -d centos /bin/bash

Observen ahora cuántos contenedores están en ejecución luego de lanzar el contenedor de CentOS:

image

¿Y si quiero detener un contenedor? Es tan simple como ejecutar sudo docker stop <ID> como se ve en el siguiente gráfico:

image

También hay que decir que si quiero ejecutar un contenedor en background y no de modo interactivo puedo usar el parámetro –d  al lanzar el contenedor, por ejemplo:

sudo docker run -i -t -d centos /bin/bash

image

Y observen que me mantengo en el prompt de CoreOS a pesar de que lancé un nuevo contenedor.

Todo muy bien hasta ahora ¿Cierto? Ahora hablemos de la ejecución de aplicaciones en los contenedores.

Para este ejercicio vamos a usar una aplicación escrita en el lenguaje  Python y que se encuentra en el Docker Hub que es un repositorio de contenedores y aplicaciones que pueden ser reutilizados por otros usuarios. Es posible que yo como usuario  publique allí mis contenedores y/o aplicaciones y los haga públicos si así lo deseo.

Para este ejemplo voy a usar la imagen training/webapp que es una aplicación de ejemplo que contiene un Hola Mundo, como ya lo dije esta aplicación se encuentra en el Docker Hub y además usa Python Flask que es un mini-servidor web

Voy a ejecutarla con sudo docker run -d -P training/webapp python app.py

image

Si la aplicación no se encontraba descargada se descarga.

Ahora voy a verificar el estado de mis contenedores y aplicaciones (sudo docker ps)

image

O si uso –l con el comando puedo ver el último contenedor lanzado, que en efecto fue nuestra aplicación:

image

Observen que mi aplicación tiene su respectivo ID y además aparecen unos puertos. Pues bien, al publicar la aplicación fue necesario usar el parámetro –P para exponer los puertos que se van a usar al hacer la conexión a dicha aplicación para que muestre el “Hello world!” u “Hola mundo!”.

En este caso Docker expuso el puerto TCP 5000 (El puerto por defecto de Python Flask) en el contenedor, a través del puerto TCP 49153 en nuestro hostCoreOS.

También hubiese sido posible levantar la aplicación usando el mismo puerto 5000 tanto para el contenedor como para nuestro host local pero ello hubiera limitado el uso de otra aplicación con Python Flask puesto que el puerto TCP 5000 ya hubiera estado en uso en el host CoreOS. Para usar el mismo puerto hubiese bastado con usar el siguiente comando:

sudo docker run -d -p 5000:5000 training/webapp python app.py

Yo volví a lanzar otro contenedor de la aplicación usando:

sudo docker run -d -P training/webapp python app.py

image

Lo más seguro es que al preguntarle por la ejecución de este último contenedor use un puerto distinto en el host CoreOS pero el mismo TCP 5000 en el contenedor… Observen que en efecto el nuevo contenedor usa otro puerto.

image

Y si verifico los puertos que el host (nuestro CoreOS) está escuchando, aparecen los puertos de nuestros 2 contenedores, es decir los puertos 49153 y 49154

image

Si establezco conexión al puerto 49153 con un navegador puedo ver que aparece el “Hello world!” de la aplicación, aquí usé wget que en la práctica tiene el mismo efecto, pues guarda el index.html de la aplicación y si veo el contenido de este archivo veo “Hello world!”

image

O usando un navegador

image

image

Tanto el puerto 49153 como el 49154 funcionan para mostrar la aplicación web.

También pude haber usado el comando sudo docker port 675a24b4384c 5000 para ver el puerto que se está usando

image

O incluso pude haber usado sudo docker port nostalgic_wilson 5000 en donde nostalgic_wilson es el alias en el Docker Hub de alguien que publicó la aplicación.

Si quiero detener un contenedor en ejecución puedo usar en nuestro ejemplo:

sudo docker stop nostalgic_wilson

image

Y si quiero reiniciar un contenedor uso sudo docker start nostalgic_wilson

image

Observen que conserva el mismo ID que tenía antes. Si lo quiero eliminar de manera permanente debo usar sudo docker rm nostalgic_wilson

image

Debo haberlo detenido antes de eliminarlo

image

¡Espero que lo que han visto hasta ahora les haya abierto la mente a nuevas posibilidades y a toda la potencia de esta plataforma para un despliegue muy rápido de aplicaciones! Si se necesitan más contenedores se pueden crear o destruir según las necesidades, además es posible crear clusters o pods de contenedores para una mayor disponibilidad.

Y lo mejor de todo es que ¡Microsoft anunció que en la próxima versión de Windows Server 2016 va a incorporar tecnología de contenedores! (Más información Aquí) Así que debemos estar preparados para todo lo que se viene.

Espero que les haya gustado este contenido y los invito a que prueben Docker y estén listos para todo lo que se viene con Windows Server 2016.

¡Nos vemos en la próxima! un abrazo.

為運行在 Microsoft Azure 的 SQL Server 虛擬機器啟用自動備份及自動修補

$
0
0

Microsoft Azure 於 2015 年 1 月推出一項基於 SQL Server IaaS Agent 元件的新功能,為運行在 Microsoft Azure 上的 SQL Server 虛擬機器提供自動備份(Automated Backup)及自動修補(Automated Patching)的功能,有助於提升系統管理員或 DBA 在管理 SQL Server 虛擬機器時更有效率也更便利,使用這兩項功能可以在預覽版 Azure 管理入口網站做設定,若遇到需要大量設定的情境,也可以搭配 PowerShell 來進行自動化部署。

有關自動備份和自動修補的說明,請見下列的介紹。

本文索引:

自動備份

自動修補

SQL Server IaaS Agent

學習目標

使用預覽版 Azure 管理入口網站啟用自動備份

使用 PowerShell 啟用自動備份

使用預覽版 Azure 管理入口網站啟用自動修補

使用 PowerShell 啟用自動修補

管理SQL Server IaaS Agent

問題排除

參考資料
 


自動備份

目前自動備份支援的作業系統必須是 Windows Server 2012 或 Windows Server 2012 R2 ,搭配 SQL Server 2014 標準版或企業版。不論是現有的資料庫或是新建立的資料庫都可以在啟用自動備份功能後,依照設定自動為資料庫做備份,其背後是利用 SQL Server 2014 內建的受管理的備份(Managed Backup)來實現自動備份。

本項功能預設為停用,換言之您必須和過去在企業內部部署 SQL Server 一樣,擬訂資料庫備份計畫再以SQL Server Agent 來建立備份排程。當您啟用自動備份,就可以讓 SQL Server 自己做資料庫備份,需設定的項目如下:

  • 保留週期(Retention Period)

    設定備份媒體集(media set)要保留多久,可以設定1至30天。

  • 儲存體帳號(Storage Account)

    預設情況下,備份媒體集則是存放在和虛擬機器相同的儲存體帳戶中,名稱為【虛擬機器名稱- mssqlserver】的容器裡。

    若有災難復原的需求也支援將資料庫備份到不同地區的資料中心。
  • 啟用加密(Encryption)

    預設加密選項為停用。當您啟用加密,相關憑證及金鑰會存放在和虛擬機器相同的儲存體帳戶中名稱為 automaticbackup 的容器裡,啟用加密時必須指定用來加密的密碼。

自動修補

就像目前您所熟悉的做法一樣,在企業內部部署的伺服器中,使用 Windows Update 代理程式,來為伺服器安裝修補程式,差別在於您可以自訂維護視窗(maintenance window),並且不需要任何 Windows Update 的基礎設施(如 Windows Server Update Services),也不需強制要求加入網域,就可以為運行在 Microsoft Azure 上的 SQL Server 虛擬機器進行自動修補。

自動修補功能支援的作業系統有 Windows Server 2012 和 Windows Server 2012 R2 ,搭配 SQL Server 2012 或 SQL Server 2014 。啟用自動修補時,需設定下列的項目:

  • 星期幾(DayOfWeek)

    設定每一週的星期幾進行自動修補。

  • 維護視窗起始時間(MaintenanceWindowStartingHour)

    設定開始自動修補的時間,單位為小時。

  • 維護視窗期間(MaintenanceWindowsDuration)

    設定自動修補的持續時間,單位為分鐘,選項有 60、90、120、150 及 180 分鐘。

  • 修補類別(PatchCategory)

    只有以 PowerShell 設定自動修補時才能指定修補類別。目前自動修補只會安裝重要(Important)類別的修補程式。

SQL Server IaaS Agent

自動備份和自動修補是以基於 Azure 虛擬機器擴充功能(Azure VM Extension)的 SQL Server IaaS Agent 的新功能,可用來幫助系統管理員更有效率的管理 SQL Server 虛擬機器,並提供大量部署的機制(如搭配Azure PowerShell)來派送、設定及移除代理程式。

本文假設您已經具備 Microsoft Azure 訂用帳戶並熟悉如何利用虛擬機器映像建立 SQLServer 的虛擬機器,以及下載並安裝 Azure PowerShell 。

該如何實作上述功能,請見下一節的說明。

學習目標

當您看完本文的介紹,您應該會對下列的操作有一定的了解。

1. 使用預覽版 Azure 管理入口網站啟用自動備份。

2. 使用 PowerShell 啟用自動備份。

3. 使用預覽版 Azure 管理入口網站啟用自動修補。

4. 使用 PowerShell 啟用自動修補。

5. 管理 SQL Server IaaS Agent 。

使用預覽版 Azure 管理入口網站啟用自動備份

目前 SQL Server 虛擬機器的自動備份功能,只有預覽版 Azure 管理入口網站才有支援,請打開瀏覽器並於網址列輸入 http://portal.azure.com ,登入之後請點選【 瀏覽 > 虛擬機器 > 點選要設定的虛擬機器 】。

 

於虛擬機器刀鋒視窗下方點選 Auto backup,可以看到 Automated backup 目前的狀態的預設值為 Disable(停用)。

點選 Enable 來設定自動備份的保留天數,並且指定要放在哪一個儲存體帳戶,您也可以視情況選擇是否啟用加密,若啟用加密必須輸入加密所要使用的密碼,設定完成後按確定。

待設定生效後,就可以在下圖紅色框框處看到您設定自動備份的內容。

上述步驟適用於已經存在的 SQL Server 虛擬機器,您也可以在建立虛擬機器時點選 【 選擇性組態 > 自動備份 】 來設定自動備份,設定方式和設定現有的虛擬機器相同。

當您設定自動備份後,SQL Server IaaS Agent 幫我們做了哪些事情呢?首先它幫我們建立一張可以用來連接儲存體帳戶憑證(AutoBackup_Credential),接著將使用者資料庫加入受管理的備份,透過 smart_admin.fn_backup_db_config 系統函式找到 is_managed_backup_enabled 資料行為 1 的資料列,即可看出有哪些資料庫會被自動備份到儲存體帳戶。

另外在受管理的備份視窗當中,也可以看到和在預覽版 Azure 管理入口網站所設定的相同內容。

使用 PowerShell 啟用自動備份

當您有許多 SQL Server 虛擬機器需要設定自動備份,可以使用 Azure PowerShell 來做大量設定。

下列的 PowerShell 指令碼中,第 8-10 列利用 Get-AzureStorageKey 來取的儲存體帳戶的主要金鑰,接著使用 New-AzureStorageContext 建立自動備份設定所需要的 StorageContext 。第 13 列使用 ConvertTo-SecureString 來產生加密備份所需要的密碼。第 14 列使用 New-AzureVMSqlServerAutoBackupConfig 並傳入前面所建立的變數,來建立自動備份組態設定。第 21 列先用 Get-AzureVM 取得虛擬機器後,傳遞給 Set-AzureVMSqlServerExtension 並搭配 AutoBackupSettings 引數來導入自動備份的相關設定,最後搭配 Update-AzureVM 使設定生效。

使用預覽版 Azure 管理入口網站啟用自動修補

和自動備份相同,只有預覽版 Azure 管理入口網站才有支援 SQL Server 虛擬機器自動修補,請打開瀏覽器並於網址列輸入 http://portal.azure.com,登入之後請點選【瀏覽 > 虛擬機器 > 點選要設定的虛擬機器】。

於虛擬機器刀鋒視窗下方點選 Auto patching,可以看到 Automated patching 目前的狀態的預設值為 Disable(停用)。

點選 Enable 來設定自動修補的排程(Maintenance Schedule),您可以每天都讓 SQL Server IaaS Agent 自動為虛擬機器進行修補,也可以挑選每一週的特定一天來做自動修補;另外自動修補的時間(Maintenance Start hour)以及持續多久(Maintenance window duration),設定完畢後按確定。

等到通知刀鋒視窗出現成功更新自動修補設定時,就表示相關設定已經生效。

您就可以在虛擬機器刀鋒視窗看到自動修補的設定狀況。

上述步驟適用於已經存在的 SQL Server 虛擬機器,您也可以在建立虛擬機器時點選【選擇性組態 > 自動修補】來設定自動修補,設定方式和設定現有的虛擬機器相同,在此就不贅述。

  

使用 PowerShell 啟用自動修補

相較於自動備份所使用的 PowerShell 指令碼,自動修補只需使用下圖第 8-13 列的 New-AzureVMSqlServerAutoPatchingConfig cmdlet 來設定相關自動修補的參數,接著以第 16 列的 Get-AzureVM 取得虛擬機器後,傳遞給 Set-AzureVMSqlServerExtension 並搭配 AutoPatchingSettings 引數來導入自動修補的相關設定,最後搭配 Update-AzureVM 使設定生效。

管理SQL Server IaaS Agent

有關 SQL Server IaaS Agent 的停用、移除甚至是將擴充功能移除,可以分別利用 Set-AzureVMSqlServerExtension 搭配 Disable 引數、Set-AzureVMSqlServerExtension 搭配 Uninstall 引數及 Remove-AzureVMSqlServerExtension 等 cmdlet 來進行,如下列 PowerShell 指令碼。

問題排除

不論是啟用自動修補或自動備份之後,SQL Server 虛擬機器未能依照您所設定的參數來運作,可以嘗試在預覽版 Azure 管理入口網站的虛擬機器刀鋒視窗點選【All settings > 擴充功能】,查看 SqlIaaSAgent 的狀態。

如下圖可見,SqlIaaSAgent 的狀態顯示 Warning,其發生原因是由於虛擬機器有部分重要修補程式未安裝所導致。

因此,建議在啟用相關擴充功能前,可以先檢查虛擬機器是否安裝,以確保自動修補或自動備份功能可以正常運作。

若您使用 Azure PowerShell 將 SqlIaaSAgent 擴充功能移除,再次使用 Set-AzureVMSqlServerExtension cmdlet 設定自動備份,可能遇到下列的錯誤訊息:

解決這個問題比較快的做法是利用預覽版 Azure 管理入口網站重新設定自動備份,就可以把相關的擴充功能及代理程式都安裝完成,您可以在虛擬機器中看到 SQL Server IaaS Agent 已經正常執行。

以及在預覽版 Azure 管理入口網站看到相對應的擴充功能的狀態也呈現 Success。

參考資料

1. Automated Everything with SQL Server on IaaS VMs

2. Automated Backup and Automated Patching for SQL Server in Azure Portal and PowerShell

3. Azure VM Extensions and Features

4. VM Agent and Extensions – Part 1

5. VM Agent and Extensions – Part 2

6. Automated Backup and Patching for SQL Server in Azure Virtual Machines

7. SQL Automated Backup and Patching Support in Existing SQL Server Virtual Machines

Step-By-Step: Allowing or Preventing Domain Users From Joining Workstations to the Domain

$
0
0
By default, an Active Directory domain environment allows any authenticated domain user the ability to add workstations to said domain 10 times. With that being said, there may come a time and organization may require to increase or decrease this limit. An example of this would be an authenticated user bringing their personal Surface Pro into the office. Unless there is a block in place via NPS (network policy server) or network level port protection is enabled, the user easily connects the personal...(read more)

Zpětná vazba řídí vývoj Windows Server 2016

$
0
0
Společnost Microsoft dbá na zpětnou vazbu od uživatelů jejich produktů. Pro nás uživatele je ovšem u některých produktů problémem nalézt ten správný kanál, kudy zpětnou vazbu předat. Například pro právě připravovaný Windows Server 2016 můžete využít otevřené fórum na UserVoice. Zde můžete hlasovat pro připravované novinky, dávat náměty na vylepšení či nové...(read more)

Detection changes: search protection code

$
0
0

​In late 2014 we announced changes to our evaluation criteria regarding the way we detect programs that have search protection functionality.

Microsoft security products will detect programs with browser search protection functionality from June 1, 2015.

Non-compliant programs that exhibit such functionality will be detected by our software signatures that look for browser search protection code. Any program using code that can potentially perform search protection may be detected, regardless of whether the code is active.

To avoid detection, developers should remove any search protection code from their programs, regardless of whether it is functional or not.

We’ll be working with search protection developers and vendors who have completely disabled search protection functionality from their programs in alignment with our evaluation criteria. 

Developers and vendors can email mpcreply@microsoft.com to start this process. They should provide links to side-by-side downloadable samples of:

  • Any programs with fixed behavior that does not exhibit search protection functionality, but has inactive, dormant search protection code.
  • Any older programs that are non-compliant with our evaluation criteria.

Working with us can help reduce the risk of having programs with search protection functionality turned off, but still containing non-compliant code, being detected as developers work on completely removing the non-compliant code.

More information about how we detect malware and unwanted software is available in our evaluation criteria.  

MMPC

Viewing all 34890 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>