2015/12/24 追記
WMF 5.0 RTMのインストールによって、環境変数のPSModulePath
がデフォルト設定にリセットされるバグが見つかったため、現在ダウンロードセンターから外されています。
修正が確認できしだい再度公開される予定とのことですので、少しお待ちください。なお、もし既にWMF5.0 RTMをインストールしていた場合、この問題に該当しています。また、WMF 5.0 RCやProduction Previewではこの問題は生じていません。
Windows Management Framework (WMF) 5.0 currently removed from Download Center
本文
ついにPowerShell v5 RTMがリリースされました。
そう、RTMということは完全な製品版です。多くの機能がありますが、リリースノートをさくっと見ていきましょう。
サクッとみたのに長いです。
過去の記事はこちら
https://tech.guitarrapc.com/entry/2014/09/05/065912
https://tech.guitarrapc.com/entry/2014/09/08/042747
https://tech.guitarrapc.com/entry/2014/09/08/050311
https://tech.guitarrapc.com/entry/2014/09/08/062313
- 2015/12/24 追記
- 本文
- リリースノート
- サポートOS環境
- ダウンロード
- インストール
- 既知の問題
- 破壊的変更 : 証明書による暗号化が失敗する
- Start-DscConfiguration など一部 Cmdlet がエラー
- WMF 5.0 Production Preview に上書きして WMF 5.0 RTM をインストール
- Get-DscConfiguration -Debug するとLCM状態が不安定になる
- Stop-DscConfiguration -Debug するとハング
- DSCResource の Verbose メッセージがLCMをDebugModeにしていると見えない
- Invoke-DscResource の実行がGet-DscConfigurationStatus cmdletで取得できない
- Get-DscConfigurationStatus が Pull実行結果を Consistency として返す
- Invoke-DscResource が呼び出し先のメッセージを返さない。
- Invoke-DscResource を使うと DSC Resource がデバッグしにくい
- 一つのノードに対して様々な Partial Configuration を適用するとどのリソースなのか判別できない
- Start-DscConfiguration –UseExisting が -Credential パラメータを受け付けない
- ノード名に IPv6 Addresses
- Class-Based DSC Resources のデバッグ
- DSC Class-Based Resource で$scriptスコープで定義した変数が他のDSCResource で利用できない
- PSDscRunAsCredential 使用時のデバッグ
- DSC Composite Resources で PsDscRunAsCredential が利用できない
- Get-DscResource -Syntax が PsDscRunAsCredential を正しく反映しない
- Windows 7 で WindowsOptionalFeature がサポートされていない
- Set-DscLocalConfigurationManager を WMF4.0 や WMF5.0 PP に実行しても失敗する
- 機能一覧
- リモートセッション先のファイルの編集をISEで可能に
- デバッグ強化
- ノード間の協調動作
- MOF がデフォルトで暗号化されます。
- Configuration のヘルプサポート
- DSC のISE インテリセンスサポート向上
- DSC のコンフィグレーション競合検知
- Import-DscResource がバージョンサポート
- 32bit 環境での Configuration キーワードサポート
- クラス構文による DSC リソースの記述サポート
- DSC リソーススクリプトのデバック
- PsDscRunAsCredential の自動サポート
- DSCリソースのサイドバイサイドサポート
- 標準リソースの追加
- Partial Configuration のサポート
- Support for Mixed RefreshModes
- LCM 定義の新属性追加
- LCM 状態の詳細化
- RefreshFrequencyMins と ConfigurationModeFrequencyMins が倍数である必要がなくなりました
- RefreshModeへの新規追加
- Configuration状態
- Test-DscConfigurationでの詳細情報取得
- DSCリソースメソッドへの直接アクセス
- MOF の転送のみCmdletの追加
- DSC Document (MOF) の削除
- あるべき状態の表現が適正化
- Set-DscLocalConfigurationManager の -Force サポート
- 任意でのDSC Configuration の適用
- ノードとConfigurationId の分離 - AgentId
- Configuration名
- レジストレーション
- Configuration と Resource と Report Repository の分離
- 中央へのConfiguartionのレポート
- Transcription オプション
- Script Tracing とロギング
- Cryptographic Message Syntax (CMS) cmdlets
- シンボリックリンクサポート
- Archive cmdlets
- Clipboard cmdlets
- Convert-String Cmdlet
- ConvertFrom-String Cmdlet による文字列からの構造化オブジェクトの抽出と解析
- Format-Hex Cmdlet
- 既存 Cmdlet への NoNewLine パラメータの追加
- New-TemporaryFile Cmdldt
- New-Guid Cmdlet
- Get-ChildItem に -Depth パラメータ追加
- FileInfoオブジェクトへの更新
- モジュールへのバージョン範囲指定(1.*, etc)
- リリースノートにない機能
- まとめ
リリースノート
https://msdn.microsoft.com/en-us/powershell/wmf/releasenotes?f=255&MSPPError=-2147217396
サポートOS環境
気になるサポートOS環境ですが、WMFv5 Production Previewから大きく変わりました。サポートがサーバー系OSのみに変わりました。これには色々あったようですが、多くは語りません。まずはサーバー系OSでお試しください。
記事を書き終えた瞬間に、Windows 8.1 / 7 SP1もサポートされました。従来のWMF PPなどと同様のOSサポートになりました。
Operating System | サービスパック | エディション | 前提条件 |
---|---|---|---|
Windows Server 2012 R2 | All, except IA64 | .NET 4.5以上 | |
Windows Server 2012 | All, except IA64 | .NET 4.5以上 | |
Windows Server 2008 R2 | SP1 | All, except IA64 | WMF 4.0 is installed / .NET 4.5以上 |
Windows 8.1 | Pro, Enterprise | ||
Windows 7 | SP1 | All | WMF 4.0 is installed / .NET 4.5以上 |
WMF5.0 RTM のインストールが可能になった環境
以前のWMF5.0 Production Previewでは以下のサーバーアプリケーションを入れているシステムでのインストールは対応していませんでした。が、 WMF5.0 RTMのインストールは可能になりました。
- System Center 2012 Configuration Manager
WFM5.0 RTM をいれてはいけないソフトウェア環境
現時点では、以下のサーバーアプリケーションをいれているシステムではWMF5.0をインストールしないでください。
- Microsoft Exchange Server 2013
- Microsoft Exchange Server 2010 SP3
- Microsoft SharePoint Server 2013
- Microsoft SharePoint Server 2010
- System Center 2012 Virtual Machine Manager
ダウンロード
Microsoft Download Centerからどうぞ
https://www.microsoft.com/en-us/download/details.aspx?id=50395
OS環境ごとのインストールパッケージは以下の通りです。
Operating System | アーキテクチャ | インストールパッケージ名 |
---|---|---|
Windows Server 2012 R2 | x64 | W2K12R2-KB3094174-x64.msu |
Windows Server 2012 | x64 | W2K12-KB3094175-x64.msu |
Windows Server 2008 R2 | x64 | W2K8R2-KB3094176-x64.msu |
Windows 8.1 | x64 | W2K12R2-KB3094174-x64.msu |
Windows 8.1 | x86 | Win8.1-KB3094174-x86.msu |
Windows 7 SP1 | x64 | W2K8R2-KB3094176-x64.msu |
Windows 7 SP1 | x86 | Win7-KB3094176-x86.msu |
インストール
少し注意が必要です。
Windows Server 2012 R2 と Windows Server 2012
まずは以下を確認してください。
- Windows PowerShell 2.0 (該当する場合) が有効であること
- Windows Server 2012 R2 Server CoreではWindows Server 2.0が無効になっています。その場合は以下のコマンドで有効化できます
dism /online /enable-feature:MicrosoftWindowsPowerShellV2 dism /online /enable-feature:MicrosoftWindowsPowerShellV2-WOW64
バージョン
Windows 10 TH2 (Build 10586) と同じバージョンです。
$PSVersionTable
# WMF 5 RTM Name Value ---- ----- PSVersion 5.0.10586.56 PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} BuildVersion 10.0.10586.56 CLRVersion 4.0.30319.42000 WSManStackVersion 3.0 PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1
が、 Windows 10 TH2とWMF 5 RTMは、マイナーバージョンが実は違ったりします。
# Windows 10 TH2 Name Value ---- ----- PSVersion 5.0.10586.0 PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} BuildVersion 10.0.10586.0 CLRVersion 4.0.30319.42000 WSManStackVersion 3.0 PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1
PSReadLine
Windows 10のPowerShell 5.0とは違い、PSReadLineはPoweShell.Coreに入ってきていません。
PowerShellコンソールの強化のためにも、ご自分でいれてください。
アンインストール
以下のコマンドを実行することでアンインストールできます。
Windows Server 2012 R2
wusa /uninstall /kb:3094174
Windows Server 2012
wusa /uninstall /kb:3094175
Windows Server 2008 R2 SP1
wusa /uninstall /kb:3094176
既知の問題
初回のみPoweShell ショートカットが動作しない
以下のどちらかを行うと直ります。
- PowerShellショートカットを右クリック -> Windows PowerShell
- PowerShellショートカットを右クリック -> Windows PowerShell -> Run As Administrator
DSC
破壊的変更に伴い、いくつかあります。
破壊的変更 : 証明書による暗号化が失敗する
WMF5 RTMで別方式になったためです。対処は、証明書を「EnciphermentかKey Encipherment Key利用」と「Document Encryption Enhanced Key利用 (1.3.6.1.4.1.311.80.1)]で再生成してください。
詳細はここで。
https://technet.microsoft.com/en-us/library/dn807171.aspx
Start-DscConfiguration など一部 Cmdlet がエラー
LCM failed to retrieve the property PendingJobStep from the object of class dscInternalCache . + CategoryInfo : ObjectNotFound: (root/Microsoft/...gurationManager:String) \[\], CimException + FullyQualifiedErrorId : MI RESULT 6 + PSComputerName : localhost
管理者として、DSCEngineCache.mof
を削除します。
Remove-Item -Path $env:SystemRoot\\system32\\Configuration\\DSCEngineCache.mof
WMF 5.0 Production Preview に上書きして WMF 5.0 RTM をインストール
管理者で以下のコマンド実行します。
mofcomp $env:windir\\system32\\wbem\\DscCoreConfProv.mof
Get-DscConfiguration -Debug するとLCM状態が不安定になる
Get-DscConfiguration cmdletのDebug中に、CTRL+Cで中断しないこと。
Stop-DscConfiguration -Debug するとハング
Get-DscConfiguration -Debug するとLCM状態が不安定になる
で示した方法を実行します。
DSCResource の Verbose メッセージがLCMをDebugModeにしていると見えない
LCMのデバッグモードを無効にします。
Invoke-DscResource の実行がGet-DscConfigurationStatus cmdletで取得できない
対処なし
Get-DscConfigurationStatus が Pull実行結果を Consistency として返す
Pull実行されたノードは、InitialではなくConsistencyとして返します。
Invoke-DscResource が呼び出し先のメッセージを返さない。
LCMやDSC Resource生成されたverbose, warning, error messagesは出力されません。
Invoke-DscResource を使うと DSC Resource がデバッグしにくい
LCMがDebugモードになっているとInvoke-DscResourceはRunspaceIdを返さないため、リモートデバッグが困難です。
Get-PSHostProcessInfo, Enter-PSHostProcess , Get-Runspace, Debug-RunspaceでRunSpaceIdを特定して利用しましょう。
一つのノードに対して様々な Partial Configuration を適用するとどのリソースなのか判別できない
Partial Configurationが異なる場合、別のリソース名を利用します。
Start-DscConfiguration –UseExisting が -Credential パラメータを受け付けない
CIMセッションを利用します。
ノード名に IPv6 Addresses
サポートしていません。
Class-Based DSC Resources のデバッグ
サポートしていません。
DSC Class-Based Resource で$scriptスコープで定義した変数が他のDSCResource で利用できない
クラス構文の仕様です。各DSC Class自体に関数や変数をそれぞれ設定してください。
PSDscRunAsCredential 使用時のデバッグ
サポートしていません。
DSC Composite Resources で PsDscRunAsCredential が利用できない
Credentialを代わりに使ってください。
Get-DscResource -Syntax が PsDscRunAsCredential を正しく反映しない
サポートしていません。が、ISEでの編集中のみ正しいメタデータがインテリセンスにでます。
Windows 7 で WindowsOptionalFeature がサポートされていない
DISM moduleを必要とするため、Windows 8以上である必要があります。
Set-DscLocalConfigurationManager を WMF4.0 や WMF5.0 PP に実行しても失敗する
直接Invoke-CimMethodで設定してください。WMF 5.0 RTM入れましょう。
$computerName = "WIN-3B576EM3669" $mofPath = "C:\\$computerName.meta.mof" $configurationData = \[Byte\[\]\]\[System.IO.File\]::ReadAllBytes($mofPath) $totalSize = \[System.BitConverter\]::GetBytes($configurationData.Length + 4 ) $configurationData = $totalSize + $configurationData Invoke-CimMethod -Namespace root/microsoft/windows/desiredstateconfiguration -class MSFT\_DSCLocalConfigurationManager -name SendMetaConfigurationApply -arguments @{ConfigurationData = \[Byte\[\]\]$configurationData} -Verbose -ComputerName $computerName
機能一覧
さくっとピックアップです。
Just Enough Administration (JEA)
詳細はここで。
https://gallery.technet.microsoft.com/Just-Enough-Administration-6b5ad370
これまでWindowsにおいてユーザーが管理者権限がほしい場合、昇格していましたがこれではすべてのコマンドが管理者扱いでした。つまりAzureのサブスクリプションにおける共同管理者状態です。 これに対してJEAでは、リモートエンドポイントを作成して、そこにつないだユーザーを「指定したコマンド、スクリプト、実行ファイルに限定して」管理者昇格することが可能になります。これをRole base Administrationと呼びます。つまりAzureのRole Base Account Controlのようなイメージです。
必要な操作のエンドポイントにつないで必要な操作をやることで、必要な分だけの実行制御を行う。大事です。
クラス構文を用いたユーザー定義型の作成
PowerShell 4.0におけるDSCに続いて、v5でも言語デザインに大きな更新が入りました。クラス構文の導入です。
他のオブジェクト指向プログラミング言語 (OOP) と同じような、シンタックスやセマンティックがクラス構文で提供されます。目標としているのは、開発者とIT Proがお互いに必要なシーンでもっとPowerShellを活用できるようにすることです。PowerShellでの成果物 (DSCリソースなど) の生成を高速化することを目指しています。
サポートされているシナリオは以下の通りです。
- DSCリソースの定義とそれに伴う型をPowerShell言語機能で提供すること
- OOPの一般的な構文(Class / Propery / Method他) を用いて、ユーザー定義型を提供すること
- クラス継承をPowerShellやクラスベースのDSCリソースでサポート
- 型のデバッグをPowerShell言語機能として提供
- 例外の生成と発生をきっちりしたメカニズムで正しい権限で扱うこと
若干変わっている部分がありますが、Previewの時点では以下のように使えました。
モジュールやスクリプト外部では定義した型が利用できなかったり、Enumのベースタイプにはintのみ指定可能*1など、まだまだいくつか制限があります。それでも、DSCリソースなど動作をきっちり制御したい場合は、クラス構文がレキシカルスコープだったり、型の初期化から呼び出しまできっちり制御できるのはいいでしょう。*2
実行中PowerShellスクリプトのデバッグ
実行中のスクリプトに対して、デバッガーをブレーク挿入可能になりました。VSのリモートデバッグのようなイメージです。ローカルでもリモートでも動作するのでぜひぜひ!
- Enter-PSHostProcess
- Exit-PSHostProcess
リモートセッション先のファイルの編集をISEで可能に
ようはssh先のドキュメントをVimで操作、保存できるように、PowerShell ISEもPS Remortingでつないだリモートセッションにあるファイルの編集保存が可能になりました。
ローカルからリモートを対話形式で編集できるの、やっと実装です。やったね!
デバッグ強化
RunSpaceに対するデバッグが可能になりました。valentiaもそうですが、PowerShellでの非同期操作はコールバックメインなので、コールバック実行中のセッションをデバッグできるのはうれしのです。
- Get-Runspace
- Debug-Runspace
- Enable-RunspaceDebug
- Disable-RunspaceDebug
- Get-RunspaceDebug
DSC の Configuration にかかわる更新
PSDesiredStateConfigurationモジュールが1.1に更新されました。
ノード間の協調動作
以下のリソースを利用して、指定ノード完了をまってから続行したりなど協調動作が可能になりました。
- WaitForAll
- WaitForAny
- WaitForSome
MOF がデフォルトで暗号化されます。
WMF v4のDSCで屑かったのが、MOFがデフォルトプレーンテキストだったことです。暗号化には証明書が必要と大変クズでした。まじサイテー。
WMF v5ではデフォルト暗号化されます。証明書もいりません、やったね。暗号化は、Windows Data Protectionで行われます。
次の図の通り、DSCサーバーで作ったMOFはこれまで通り暗号化されません、がノードに転送されたMOFは暗号化されます。
Configuration のヘルプサポート
読み込んだConfigurationに対してhelp Configurationname
でヘルプが出ます!
例えば以下のようなConfigurationを実行してから、
configuration HelpSample1 { param([string]$computername,[string]$filePath) File f { Contents="Hello World" DestinationPath = "c:\Destination.txt" } }
ヘルプを見ようとしてもでませんでした。
man HelpSample1
これが、WMF5からヘルプがでます。
<# .SYNOPSIS The synopsis for the configuration goes here. This can be one line, or many. .DESCRIPTION The description for the configuration is usually a longer, more detailed explanation of what the script or function does. Use as many lines as you need. .PARAMETER computername Here, the dotted keyword is followed by a single parameter name. Don't precede that with a hyphen. The following lines describe the purpose of the parameter: .PARAMETER filePath Provide a PARAMETER section for each parameter that your script or function accepts. .EXAMPLE There's no need to number your examples. .EXAMPLE Windows PowerShell will number them for you when it displays your help text to a user. #> configuration HelpSample1 { param([string]$computername,[string]$filePath) File f { Contents="Hello World" DestinationPath = "c:\Destination.txt" } }
こんな感じですね。
HelpSample1 -? NAME HelpSample1 SYNOPSIS The synopsis for the configuration goes here. This can be one line, or many. SYNTAX HelpSample1 [[-InstanceName] <String>] [[-DependsOn] <String[]>] [[-OutputPath] <String>] [[-ConfigurationData] <Hashtable>] [[-computername] <String>] [[-filePath] <String>] [<CommonParameters>] DESCRIPTION The description for the configuration is usually a longer, more detailed explanation of what the script or function does. Take as many lines as you need. RELATED LINKS REMARKS To see the examples, type: "get-help HelpSample1 -examples". For more information, type: "get-help HelpSample1 -detailed". For technical information, type: "get-help HelpSample1 -full".
DSC のISE インテリセンスサポート向上
どれもやっとです。だいぶん楽になります。
- Ctrl + Spaceでコンフィグレーション名の列挙がサポートされました
- リソースのプロパティが列挙型の場合自動補完されるようになりました
- DependsOnを使っているときに、他リソースの補完がきくようになりました
- リソースのプロパティのタブ補完が強化されました
DSC のコンフィグレーション競合検知
以下のWeb-Serverのインストールのように、同一コンフィグレーションでプロパティが一致している定義が複数あった場合、今後検知されます。
もしプロパティが違う値の場合は検知されないのでお気を付けを。
Configuration IIS_FrontEnd { WindowsFeature FE_IIS #Identical resource { Ensure = 'Present' Name = 'Web-Server' } WindowsFeature FTP { Ensure = 'Present' Name = 'Web-FTP-Server' } } Configuration IIS_Worker { WindowsFeature Worker_IIS #Identical resource { Ensure = 'Present' Name = 'Web-Server' } WindowsFeature ASP { Ensure = 'Present' Name = 'Web-ASP-Net45' } } Configuration WebApplication { IIS_Frontend Web {} IIS_Worker ASP {} }
Import-DscResource がバージョンサポート
バージョンの指定が可能になりました。
PowerShell v5で複数バージョンのモジュールサイドロードが可能になったことを受けて、Import-DscResource
もモジュールバージョンを指定可能になりました。
大事大事。
32bit 環境での Configuration キーワードサポート
これまでDSCは64bit環境でのみサポートされてましたが、32bitでもサポートされました。
DSC の Resource にかかわる更新
クラス構文による DSC リソースの記述サポート
いくつかの特殊な属性[DscProperty(Mandatory)]
や[DscProperty(Mandatory)]
などを含めて、PowerShellのクラス構文でDSCリソース記述がサポートされました。
DSC リソーススクリプトのデバック
以下のCmdletでデバッグすることが可能になりました。
- Enable-DscDebug
- Disable-DscDebug
やっとですよ。こんな感じですね。 WMF5のデバッグ機能の強化はここに目標が集約されています。
Enter-PSSession -ComputerName MGMT-10001-827 Enter-PSHostProcess -Id 2640 -AppDomainName DscPsPluginWkr\_AppDomain Debug-Runspace -Id 3
PsDscRunAsCredential の自動サポート
DSCを指定ユーザーで実行したいことありませんでしたか? わたしめちゃめちゃいつも思ってました。
別ユーザーのコンテキストで実行しようと思ったら、タスクスケジューラを使うなど迂回措置をとる必要があったためとてもうれしいサポートです。
例えば以下のような感じで、DependsOnプロパティ同様に自動的にPsDscRunAsCredentialプロパティがサポートされました。
Configuration ChangeCmdBackGroundColor { Node ("localhost") { Registry CmdPath { Key = "HKEY\_CURRENT\_USER\\\\Software\\Microsoft\\\\Command Processor" ValueName = "DefaultColor" ValueData = '1F' ValueType = "DWORD" Ensure = "Present" Force = $true Hex = $true PsDscRunAsCredential = get-credential } } } $configData = { AllNodes = ( { NodeName="localhost"; CertificateFile = "C:\publicKeys\targetNode.cer" }) } ChangeCmdBackGroundColor -ConfigurationData $configData
DSCリソースのサイドバイサイドサポート
先述の通りです。同一コンフィグレーションで別バージョンのリソースを並列利用はできません。
標準リソースの追加
- Windowsfeatureset
WindowsFeatureのまとめて版ですね。中身はこれです。
- WindowsOptionalFeatureSet
WindowsOptionalFeatureのまとめて版です。中身はこれです。
- ServiceSet
Serviceのまとめて版です。中身はこれです。
DSC のLocal Configuration Manager (LCM) にかかわる更新
Partial Configuration のサポート
Configurationを複数DSCサーバーで分割することがサポートされました。
Partial Configurationのルールは、コンフィグレーションはLCMで指定した対象と一致させることです。
この場合なら、OSConfigとSQLConfigですね。
Support for Mixed RefreshModes
PULLとPUSHを混ぜることが可能になりました。やったね!
LCM 定義の新属性追加
圧倒的に書きやすくなりました。
属性は以下の通りです。
Resource Name | Description |
---|---|
LocalConfigurationManager | DSCエンジンの実行にかかわる定義が可能になります。 |
PartialConfiguration | Partial configuration 設定です。 |
ConfigurationRepositoryWeb | Web-based configuration リポジトリの定義です。(HTTP/HTTPS ってことです) |
ConfigurationRepositoryShare | File share-based configuration リポジトリの定義です。(SMBってことです) |
ResourceRepositoryWeb | Web-based resource リポジトリの定義です。 |
ResourceRepositoryShare | File-based resource リポジトリの定義です。 |
ReportServerWeb | PULLシナリオにおける、Webベースでのレポートエンドポイントの定義です。 |
LCM 状態の詳細化
いままでGet-DscLocalConfigurationManager
でやってもLCMはBusy / idleなどわずかな状態しかわかりませんでした。が、細かくわかるようになりました。
- Idle
- Busy
- PendingReboot
- PendingConfiguration
LCMStateDetailプロパティで詳細がわかるようになっています。
RefreshFrequencyMins と ConfigurationModeFrequencyMins が倍数である必要がなくなりました
WMFv4の屑かったポイントがまた治りました!
PULLでの挙動はこんな感じになります。
LCM Meta 設定 | Meta Configuration の値 | Meta Configuration適用後の値 | pull発生頻度[mins] | Configuration の適用頻度 [mins] |
---|---|---|---|---|
ConfigurationModeFrequencyMins | 70 | 70 | 40 | 70 |
RefreshFrequencyMins | 40 | 40 |
PUSHでの挙動はこんな感じになります。
LCM Meta 設定 | Meta Configuration の値 | Meta Configuration適用後の値 | Configuration の適用頻度 [mins] |
---|---|---|---|
ConfigurationModeFrequencyMins | 70 | 70 | 70 |
RefreshFrequencyMins | 40 | 40 |
RefreshModeへの新規追加
これまでのPULLとPUSH以外に Disabled が追加されました。LCMがこの設定にされると、MOFなどの管理を行わなくなります。Invoke-DscResource
でDSCに適用はするけど、DSCの代わりに3rdパーティのCM利用時など、DSCを意図的に止めたいときにどうぞ。
DSC の Cmdlet にかかわる更新
Configuration状態
今後、Get-DscConfigurationStatus
でConfiguration適用状態がわかりました。この更新では、より高度な情報を提供して、コンフィグレーションの適用状態がわかるようになります。
- 全リソースの適用が失敗したか
- 何かリソースで再起動がもとめられているのか
- Configuration適用時のMeta-Configuration設定
- 他
これで、Get-DscConfigurationStatus
の実行でこのような出力が確認できます。
DurationInSeconds : 0 Error : The SendConfigurationApply function did not succeed. HostName : WINDOW10PRO IPV4Addresses : {169.254.54.128, 169.254.145.119, 169.254.40.31, 192.168.11.111...} IPV6Addresses : {fe80::2c05:b3b:8fb:281f%9, ::2000:0:0:0, ::1, ::2000:0:0:0...} JobID : {4902A626-A5C8-11E5-9BDD-E0CB4EA477F0} LCMVersion : 2.0 Locale : ja-JP MACAddresses : {E0-CB-4E-A4-71-CD, E0-CB-4E-A4-77-F0, 10-66-82-18-4D-F6, 10-66-82-18-4D-F6...} MetaConfiguration : MSFT_DSCMetaConfiguration MetaData : Author: admin; Name: Hoge; Version: 2.0.0; GenerationDate: 12/19/2015 05:45:35; GenerationHost: WINDOW10PRO; Mode : PUSH NumberOfResources : 2 RebootRequested : False ResourcesInDesiredState : {[File]Hoge} ResourcesNotInDesiredState : {[File]Fuga} StartDate : 12/19/2015 5:45:35 AM Status : Failure Type : Initial PSComputerName : 127.0.0.1 CimClass : root/Microsoft/Windows/DesiredStateConfiguration:MSFT_DSCConfigurationStatus CimInstanceProperties : {DurationInSeconds, Error, HostName, IPV4Addresses...} CimSystemProperties : Microsoft.Management.Infrastructure.CimSystemProperties
あるべき状態じゃないリソースの詳細もわかります。
ConfigurationName : Hoge DependsOn : ModuleName : PSDesiredStateConfiguration ModuleVersion : 1.1 PsDscRunAsCredential : ResourceId : [File]Fuga SourceInfo : ::14::9::File DurationInSeconds : 0.027 Error : The system cannot find the path specified. The related file/directory is: x:\fuga. The related ResourceID is [File]Fuga. FinalState : InDesiredState : False InitialState : InstanceName : Fuga RebootRequested : False ResourceName : File StartDate : 12/19/2015 5:45:35 AM PSComputerName : 127.0.0.1
これですよ、ほしかったのは!
Test-DscConfigurationでの詳細情報取得
これですよ、ほしかったのは (再
いずれもこのように表示されます。
InDesiredState : False ResourcesInDesiredState : {[File]Hoge} ResourcesNotInDesiredState : {[File]Fuga} ReturnValue : 0 PSComputerName : 127.0.0.1
もちろん詳細もみれます。
ConfigurationName : Hoge DependsOn : ModuleName : PSDesiredStateConfiguration ModuleVersion : 1.1 PsDscRunAsCredential : ResourceId : [File]Fuga SourceInfo : ::14::9::File DurationInSeconds : 0.012 Error : FinalState : InDesiredState : False InitialState : InstanceName : Fuga RebootRequested : False ResourceName : File StartDate : 12/19/2015 5:56:20 AM PSComputerName : 127.0.0.1
ようやくPesterの組み込みテストが楽になります。
DSCリソースメソッドへの直接アクセス
DSCリソースには、Set/Get/Testがあります。これを直接叩くCmdletが追加されました。例えばこう。
Setの実行結果です。
WARNING: LCM state is changed by non-DSC operations. If you wish to change the state of LCM, please use Remove-DscConfigurationDocument cmdlet. RebootRequired -------------- False
Getしてみましょう。
ConfigurationName : DependsOn : ModuleName : PSDesiredStateConfiguration ModuleVersion : 1.1 PsDscRunAsCredential : ResourceId : SourceInfo : Attributes : {archive} Checksum : Contents : CreatedDate : 12/19/2015 5:59:13 AM Credential : DestinationPath : d:\hoge\DirectAccess.txt Ensure : present Force : MatchSource : ModifiedDate : 12/19/2015 5:59:13 AM Recurse : Size : 44 SourcePath : SubItems : Type : file PSComputerName :
Testしてみましょう。
InDesiredState -------------- True
MOF の転送のみCmdletの追加
MOFを転送したいけど、適用はしたくない。そんなときに使えるCmdletとしてPublish-DscConfiguration
が追加されました。
PULLでの次タイミングでの適用や、Update-DscConfiguration
での任意実行まで実行が遅延されるので便利でしょう。
DSC Document (MOF) の削除
MOFは場合によっては壊れます。そんなときはRemove-DscConfigurationDocument
で削除できます。正確にはこれはWMF v4の2014年10月にWindows Updateで配布されたKB3000850で追加されたCmdletです。
あるべき状態の表現が適正化
これまでと異なり、Get-DscConfigurationStatus
とGet-DscConfigurationStatus
で、LCMとDSCの状態を適切に返せるようになりました。
そのルールは以下の通りです。
- 実行されてないリソースは、LCM状態やDSC状態に影響しません
- LCMはResourceが再起動を求めた時点で実行を停止します
- 再起動を求めたリソースは、再起動完了までDesired Stateと自身の状態を返しません
- リソース適用が失敗した場合、LCMは失敗リソースに依存していない残りリソースの適用を試みます
Get-DscConfigurationStatus
cmdletで返す状態は、全リソースの状態の総括です。個別ではありませんPendingReboot
状態は、PendingReboot
状態の総括です
いくつかのシナリオでの状態をテーブルで示すとこうです。
Scenario | LCMState | Status | RebootRequested | ResourcesInDesiredState | ResourcesNotInDesiredState |
---|---|---|---|---|---|
Idle | Success | $false | S | $null | |
PendingConfiguration | Failure | $false | $null | F | S,F |
PendingConfiguration | Failure | $false | S | F | F,S |
PendingConfiguration | Failure | $false | S | F | S1, F, S2 |
PendingConfiguration | Failure | $false | S1, S2 | F | F1, S, F2 |
PendingConfiguration | Failure | $false | S | F1, F2 | S, r |
PendingReboot | Success | $true | S | r | F, r |
PendingReboot | Failure | $true | $null | F, r | r, S |
PendingReboot | Success | $true | $null | r | r, F |
PendingReboot | Success | $true | $null | r |
- Si: A series of resources that applied successfully
- Fi: A series of resources that applied unsuccessfully
- r: A resource that requires reboot
各状態は以下で求められます。
これと併せて、Get-DscConfigurationStatus
のStartDateがstring型からDateTime型に変わるなどの変更もしています。
Set-DscLocalConfigurationManager の -Force サポート
これまで、整合性確認などが走っているとSet-LocalConfigurationManager
の実行が止められてました。これは、Set-LocalConfigurationManager
cmdletがLCM操作を停止するためでしたが、今回 -Forceスイッチを提供することで、強制実行が可能になります。
例えば、-Force無しで実行すると
Set-DscLocalConfigurationManager -Path .\MetaTest1\ -Verbose
エラーとなることがありました。
VERBOSE: Performing the operation "Start-DscConfiguration: SendMetaConfigurationApply" on target "MSFT_DSCLocalConfigurationManager". VERBOSE: Perform operation 'Invoke CimMethod' with following parameters, ''methodName' = SendMetaConfigurationApply,'className' = MSFT_DSCLocalConfigurationManager,'n amespaceName' = root/Microsoft/Windows/DesiredStateConfiguration'. VERBOSE: An LCM method call arrived from computer DEV-10586-465 with user sid S-1-5-21-2127521184-1604012920-1887927527-5557045. Cannot invoke the Set-DscLocalConfigurationManager cmdlet. The Consistency Check or Pull cmdlet is in progress and must return before Set-DscLocalConfigurationManager can be invoked. Use -Force option if that is available to cancel the current operation. CategoryInfo : NotSpecified: (root/Microsoft/...gurationManager:String) [], CimException FullyQualifiedErrorId : MI RESULT 1 PSComputerName : localhost VERBOSE: Operation 'Invoke CimMethod' complete. VERBOSE: Set-DscLocalConfigurationManager finished in 0.046 seconds.
このような場合でも、-Forceを使うことで実行できます。
VERBOSE: Performing the operation "Start-DscConfiguration: SendMetaConfigurationApply" on target "MSFT_DSCLocalConfigurationManager". VERBOSE: Perform operation 'Invoke CimMethod' with following parameters, ''methodName' = SendMetaConfigurationApply,'className' = MSFT_DSCLocalConfigurationManager,'n amespaceName' = root/Microsoft/Windows/DesiredStateConfiguration'. VERBOSE: An LCM method call arrived from computer DEV-10586-465 with user sid S-1-5-21-2127521184-1604012920-1887927527-5557045. VERBOSE: The -Force option was specified with the Stop operation. The current configuration has been successfully cancelled. VERBOSE: An LCM method call arrived from computer DEV-10586-465 with user sid S-1-5-21-2127521184-1604012920-1887927527-5557045. VERBOSE: [DEV-10586-465]: LCM: [ Start Set ] VERBOSE: [DEV-10586-465]: LCM: [ Start Resource ] [MSFT_DSCMetaConfiguration] VERBOSE: [DEV-10586-465]: LCM: [ Start Set ] [MSFT_DSCMetaConfiguration] VERBOSE: [DEV-10586-465]: LCM: [ End Set ] [MSFT_DSCMetaConfiguration] in 0.0310 seconds. VERBOSE: [DEV-10586-465]: LCM: [ End Resource ] [MSFT_DSCMetaConfiguration] VERBOSE: [DEV-10586-465]: LCM: [ End Set ] VERBOSE: [DEV-10586-465]: LCM: [ End Set ] in 0.1410 seconds. VERBOSE: Operation 'Invoke CimMethod' complete. VERBOSE: Set-DscLocalConfigurationManager finished in 0.421 seconds.
DSC の PULLにかかわる更新
任意でのDSC Configuration の適用
PULLでも任意のタイミングに適用したいでしょう。そんなときはUpdate-DscConfiguration
で適用できます。正確にはこれはWMF v4の2014年10月にWindows Updateで配布されたKB3000850で追加されたCmdletです。
以下の挙動を示します。
- 現在とPULL Server側のChecksumが違うか検証します
- 同じ場合は、SucessとしてConfigurationを適用せず完了します
- 違う場合は、PULLからConfigurationをダウンロードして適用します
ノードとConfigurationId の分離 - AgentId
これまで、LCM Meta情報で、ConfigurationIdとしてホストを識別するGUIDを設定してから、PULLサーバーにつなぐ処理が必要でした。しかし、もしコンフィグレーションを複数ホストで共有したい場合、DSCサーバーが自動的にAgentIdとして採番して同じConfigurationを適用できるようになりました。
Configuration名
- フレンドリー名 : これまでGUIDで定義していたConfigurationIdの代わりに、好きな文字列 (例 : "SQL_Server")で適用するConfiguration名を指定できるようになりました
- アサイン : 対象ノードにアサインするConfigurationはPULLサーバーで中央管理されます。このConfiguration名はLCM Meta Configurationの適用時にのみレジスターされます。レジスタ後は、サーバーがノードにどのConfigurationを適用するか通知します
- 複数/パーシャルConfiguration : 対象ノードに複数のConfigurationが適用された場合、それらはPartial Configurationとして扱われます。これが動作するために、対象ノードのLCM Meta ConfigurationはPartial Configurationを受け入れるようにしておく必要があります。Azure AutomationではPartial Configurationをサポートしません
レジストレーション
ノードとのConfigurationの連携は、これまでのGuidからConfiguration名に変わりフレンドリーになりました。が、逆に推測可能になった側面もあります。そこでこのようなセキュリティに対応するため、DSCサーバーへのリクエスト時にRegistrationを求めることができるようになりました。
NodeはDSCサーバーに自身を登録するときに、両者が知っているShared Secretを利用し、オプショナルにConfiguration名も利用します。このShared Secretはマシンごとに一意であることが求められ、推測困難なGuidなどであることが推奨されます。
Shared Secredは、 LCM Meta-Configurationで RegistrationKey として設定します。
まぁ、これまでのConfigurationIdを使えばいいでしょう。
DSCサーバーは、このRegistrationKey をPullサーバーの特定パスにおいて、それをweb.configに設定します。デフォルトは、C:\Program Files\WindowsPowerShell\DscService
です。
<add key="ConfigurationPath" value="C:\Program Files\WindowsPowerShell\DscService\Configuration"> <add key="ModulePath" value="C:\\Program Files\\WindowsPowerShell\\DscService\\Modules"> <add key="RegistrationKeyPath" value="C:\\Program Files\\WindowsPowerShell\\DscService">
最新の、xDSCWebServiceリソースを使って構成してください。
Configuration と Resource と Report Repository の分離
WMF5.0から、より柔軟に構成できるように複数のPULLサーバーを指定可能になりました。各エンドポイントは個別に設定する必要があります。これにより、ResourceとConfigurationの読み込みサーバーを分離し、レポートサーバーも分離可能になりました。
これらは、LCM Meta Configurationで設定します。
これを利用すると、PULLサーバーではないDSCサーバーからResourceのダウンロードを行い、また別のReportサーバーに報告するようにもできます。
中央へのConfiguartionのレポート
DSC Configurationの詳細情報は、DSC Serviceが稼働しているサーバーに送信可能です。これは、Get-DscConfigurationStatus
Cmdletと同じ情報です。Configurationの適用完了時やエラー時にReportサーバーに報告されます。また、PULL / PUSHにかかわらず送信されるようになりました。この情報はDSC Service Databaseに保持されます。
新ODataエンドポイントは、DSC Serviceで作られステータス情報を公開します。Configuration IdやAgentId {$Guid}をエンドポイントになげることで、情報は保持、解析されます。
以下で、Reportサーバーから情報を収集できます。
PowerShell 監査
Transcription オプション
Transcriptionコマンドが強化されて、PoweShell.exe以外のISEなどのホストプロセスでもStart-Transcription
を実行可能になりました。
併せて、Transcription機能も強化され、Transcriptionヘッダーへの情報追加、Nested ScriptBlockの補足、出力ディレクトリの指定なども可能になりました。
また、グループポリシーの Administrative Templates -> Windows Components -> Windows PowerShell -> Turn on PowerShell Transcription やレジストリで設定可能です。
Script Tracing とロギング
Microsoft-Windows-PowerShell/Operationalへのさらなる自動ロギングが強化されました。
これもグループポリシー Administrative Templates -> Windows Components -> Windows PowerShell -> Turn on PowerShell Script Block Logging やレジストリで設定可能です。
Cryptographic Message Syntax (CMS) cmdlets
証明書暗号を利用したイベントロギングのCMS暗号化が実装されました。これは、イベントログへのロギング強化に伴い、実行したScript Blockなどを見られるセキュリティリスクの回避のためです。
PackageManagement Cmdlets
aka. OneGetですね! ソフトウェア検索、インストールとインベントリ(SDII) が可能になりました。以下のCmdletで可能です。
- Find-Package
- Find-PackageProvider
- Get-Package
- Get-PackageProvider
- Get-PackageSource
- Import-PackageProvider
- Install-Package
- Install-PackageProvider
- Register-PackageSource
- Save-Package
- Set-PackageSource
- Uninstall-Package
- Unregister-PackageSource
この辺はまぁ過去にもいろいろ書いてるので飛ばします。
https://tech.guitarrapc.com/entry/2015/09/03/045447
PowerShellGet による PowerShell Moduleの検索、インストール
PowerShellGetによりPowerShell Moduleの展開が圧倒的に楽になります。
- Find-Moduleで、-Tagを使ってモジュールメタデータのフィルタが可能です
- Find-Moduleで、-Filterを使ってリポジトリ指定での検索が可能です
- Find-Moduleで、-Command / - DscREsourceと -Includeパラメータを使って、モジュールをフィルタできます
- Find-DscResourceで、DSC Resourceを検索できます
- NuGetを利用してのインストール、公開が可能です
また、以下がサポートされます。
- サイドバイサイドのバージョンインストールが可能です
- Moduleに依存関係を持たせてインストールが可能です
- 3つの新Cmdletが追加されています
- Get-InstalledModule
- Uninstall-Module
- Save-Module
PowerShellGet による PowerShell Script の検索、インストール
PowerShellGetからは、モジュールだけではなく、スクリプトの検索も可能です。
Find-ScriptなどのCmdletを利用可能です。
新Cmdlet と既存Cmdlet の更新
シンボリックリンクサポート
Removeも一応サポートされてます。
が、SimbolicLink対象のファイル/フォルダがないと作成できないなど制約も多いです。
PS> New-Item -Type SymbolicLink -Path d:\hogemoge -Value d:\hogemogehogmoe New-Item : Cannot find path 'D:\hogemogehogmoe' because it does not exist. At line:1 char:1 + New-Item -Type SymbolicLink -Path d:\hogemoge -Value d:\hogemogehogmo ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (D:\hogemogehogmoe:String) [New-Item], ItemNotFoundException + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.NewItemCommand
以前C# で実装した、シンボリックリンクを使ったほうが融通きくのでどうぞ。
Archive cmdlets
Zip圧縮、解凍Cmdletがサポートされました。が、微妙にまだバグってて、Compress-Archive
がかなり微妙な挙動をしています。
Clipboard cmdlets
これは便利で、クリップボードの中身を取り出せます。エクスプローラでファイルを複数選んでコピーしてから、Get-Clipboard -Format FileDropList
とやるとその一覧が出力されます。
Convert-String Cmdlet
パターンマッチによる、ストリングのリプレース処理です。RegExでは大変なことも、このCmdletを使うと直感的に書けます。
Holmes, L. Lee, S. Snover, J.
ConvertFrom-String Cmdlet による文字列からの構造化オブジェクトの抽出と解析
パターンマッチングによる、自動解析Cmdletです。詳しくは@mutaguchiさんのブログで。
Format-Hex Cmdlet
めちゃめちゃ便利です。PowerShell Cmdletでバイナリが見えます。
Path: C:\WINDOWS\system.ini 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000000 0D 0A 0D 0A 5B 6D 63 69 5D 0D 0A 72 2E 64 72 76 ....[mci]..r.drv 00000010 0D 0A 0D 0A 5B 6D 63 69 5D 0D 0A 72 2E 64 72 76 ....[mci]..r.drv 00000020 0D 0A 0D 0A 5B 6D 63 69 5D 0D 0A 72 2E 64 72 76 ....[mci]..r.drv 00000030 0D 0A 0D 0A 5B 6D 63 69 5D 0D 0A 72 2E 64 72 76 ....[mci]..r.drv 00000040 0D 0A 0D 0A 5B 6D 63 69 5D 0D 0A 72 2E 64 72 76 ....[mci]..r.drv 00000050 0D 0A 0D 0A 5B 6D 63 69 5D 0D 0A 72 2E 64 72 76 ....[mci]..r.drv 00000060 0D 0A 0D 0A 5B 6D 63 69 5D 0D 0A 72 2E 64 72 76 ....[mci]..r.drv 00000070 0D 0A 0D 0A 5B 6D 63 69 5D 0D 0A 72 2E 64 72 76 ....[mci]..r.drv 00000080 0D 0A 0D 0A 5B 6D 63 69 5D 0D 0A 72 2E 64 72 76 ....[mci]..r.drv 00000090 0D 0A 0D 0A 5B 6D 63 69 5D 0D 0A 72 2E 64 72 76 ....[mci]..r.drv 000000A0 0D 0A 0D 0A 5B 6D 63 69 5D 0D 0A 72 2E 64 72 76 ....[mci]..r.drv 000000B0 0D 0A 0D 0A 5B 6D 63 69 5D 0D 0A 72 2E 64 72 76 ....[mci]..r.drv 000000C0 0D 0A 0D 0A 5B 6D 63 69 5D 0D 0A 72 2E 64 72 76 ....[mci]..r.drv 000000D0 0D 0A 0D 0A 5B 6D 63 69 5D 0D 0A 72 2E 64 72 76 ....[mci]..r.drv
既存 Cmdlet への NoNewLine パラメータの追加
既存Cmdletに新パラメータ–NoNewline
が追加されました。対象は、–NoNewline
、–NoNewline
、–NoNewline
This is a single sentence.
便利ですね。
New-TemporaryFile Cmdldt
Tmpフォルダ$env:Tmp
に一時ファイルを生成します。
New-TemporaryFile
で、
Directory: C:\Users\admin\AppData\Local\Temp Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 12/19/2015 7:53 AM 0 tmp78E9.tmp
New-Guid Cmdlet
ただのラッパーです。
[Guid]::NewGuid();
Guid ---- 0f1e0d76-14e8-4e1f-8bee-f146f97fea69
New-Guid
Guid ---- b31f817b-30b5-47e0-8cff-753ff37fb337
Get-ChildItem に -Depth パラメータ追加
-Recurseで再帰的に検索したときの深度を設定可能になりました。ようやく!
Get-ChildItem -Recurse -Depth 0
FileInfoオブジェクトへの更新
2つのScriptPropertyが追加されています。
- FileVersionRaw : ファイルバージョンの表示
- ProductVersionRaw : プロダクトバージョンの表示
OriginalFilename : PowerShell.EXE.MUI FileDescription : Windows PowerShell ProductName : Microsoft® Windows® Operating System Comments : CompanyName : Microsoft Corporation FileName : C:\WINDOWS\system32\WindowsPowerShell\v1.0\PowerShell.exe FileVersion : 10.0.10586.0 (th2_release.151029-1700) ProductVersion : 10.0.10586.0 IsDebug : False IsPatched : False IsPreRelease : False IsPrivateBuild : False IsSpecialBuild : False Language : English (United States) LegalCopyright : © Microsoft Corporation. All rights reserved. LegalTrademarks : PrivateBuild : SpecialBuild : FileVersionRaw : 10.0.10586.0 ProductVersionRaw : 10.0.10586.0
モジュールへのバージョン範囲指定(1.*, etc)
2つのパラメータを用いて、バージョン範囲を指定できます。 -MinimumVersion, -MaximumVersion
Import-Module psreadline -verbose -MinimumVersion 1.0 -MaximumVersion 1.2.*
Information Stream Cmdlets
Standardoutput, Error, Verbose. Warning, Debugに続く新しい出力ストリームとしてInformationがサポートされました。
普段は見えませんが、InfomrationAction Continue
を指定することでユーザーに表示させることができます。
Generate PowerShell Cmdlets based on OData Endpoint
興味ないのでスキップ
Network Switch Management with PowerShell
Windows Server 2012 R2ロゴ認証のネットワークスイッチに対して、スイッチの操作が可能になりました。
使う人はどうぞ!
Software Inventory Logging (SIL)
ここだけ注意で!
IMPORTANT: When installing WMF 5.0 on a Windows Server 2012 R2 Server that is already running SIL, it is necessary to run the Start-SilLogging cmdlet once after the WMF install, as the installation process will errantly stop the Software Inventory Logging feature.
リリースノートにない機能
いくつか紹介しておきます。なんでリリースノートにないんでしょうね..。
Remote-Copy
これは、同一PSSession間において、Copy-Itemで -ToSettionと -FromSessionでコピーがマシン間を超えれるものです。
$session = New-PSSession -ComputerName RemoteMachine # Local Machine -> Remote Machine のコピー Copy-Item -Path C:\Hoge.ps1 -Destination C:\Source\test.csv -ToSession $session # Remote Machine -> Local Machine のコピー Copy-Item -Path C:\Hoge.ps1 -Destination C:\Source\srv.csv -FromSession $session
using namespace シンタックス
複数バージョン Module のサイドローディング
これまでPowerShell Moduleは、Modules直下にモジュールが並び、中には1つのバージョンだけが存在できました。
PowerShell v5からは、同一Moduleであっても複数バージョンを同時にサイドローディング可能です。
自己証明書 Cmdlet の強化
自己証明書は従来mkcertが定番でしたが、 PowerShell 4.0からNew-SelfSignedCertificate
Cmdletが追加されて限定的に作れるようになりました。
PowerShell 5.0では更に強化されており、自在に証明書を作れるようになっています。
ゴミ箱のクリア
ゴミ箱をきれいにすることもPowerShellで可能になりました。それがClear-RecycleBin
Cmdletです。
New-ScheduledTaskTrigger の -Weekly サポート
PowerShell 4.0までは-Weekly
がないため週1回の実行などが面倒でした。しかしPowerShell v5では-Weekly
スイッチがサポートされました。-Monthlyはない模様。
New-ScheduledTaskTrigger -Weekly
なお、実行するとNewTriggerByWeekly
メソッドがないというエラーが表示されますが、環境依存のようです。
Windows 10 TH2 (build 1511)でも再現するのですが、これはScheduledTaskモジュールが壊れてるので修正待ちですねぇ。
まとめ
WFMv5は、コミュニティからのフィードバックがもっとも反映されたリリースになりました。
かなり紆余曲折があり、実装があっちにいったりこっちにいたっりしましたが、とりあえず使えるレベルでリリースされてよかったですね!
Windows 10や2016などOS依存系のCmdletは、WMFv5をいれるだけでは入りません。
まずはぜひぜひお試しください。