Powershell DSC (Desired State Configuration)をWindows 8.1でとりあえず、何でもいいから動かしたかった。
サイトによくあるサンプルはIISのインストール・設定が多いがクライアントPCにIISを入れても全然うれしくないので他のサンプルを当たることに。以下はそのメモになります。
やってみたこと
① とりあえず以下のサンプルコードを作ってみたった
以下のスクリプトを"C:\PowershellScripts\PSS_DSC_zip.ps1"に保存。実行すると、"C:\PowershellScripts\test.zip"を解凍して"C:\Temp2"に展開します。
正直、まだ十分勉強していないので以下のスクリプトが正しい自信は無いです。
Configuration Filecopy
{
Node "localhost"
{
Archive ArchiveExample {
Ensure = "Present" # You can also set Ensure to "Absent"
Path = "C:\PowershellScripts\test.zip"
Destination = "C:\Temp2"
}
}
}
Filecopy -OutputPath .
Start-DscConfiguration -Path .\Filecopy -Wait -Verbose
② Powershell DSC を使うためには一度"Enable-PSRemoting"を実行しないといけないらしい。
早速、実行したらエラーになりました。
PS C:\PowershellScripts> C:\PowershellScripts\PSS_DSC_zip.ps1
ディレクトリ: C:\PowershellScripts\Filecopy
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2014/06/19 22:17 1280 localhost.mof
詳細: パラメーター ''methodName' = SendConfigurationApply,'className' = MSFT_DSCLocalConfigurationManager,'namespaceName' = root/Microsoft/Windows/DesiredStateConfiguration' を使用して操作 'CimMethod の呼び出し' を実行します。
クライアントは、要求で指定された接続先に接続できません。 接続先のサービスが実行されていて、要求を受け付けられる状態であることを確認してください。 接続先で実行されている WS-Management サービス (通常は IIS または WinRM) に関するログとドキュメントを参照してください。 接続先が WinRM サービスの場合は、リモート
ホスト上で次のコマンドを実行して、WinRM サービスを分析および構成してください: "winrm quickconfig"
+ CategoryInfo : 接続エラー: (root/Microsoft/...gurationManager: String) []、CimException
+ FullyQualifiedErrorId : HRESULT 0x80338012
+ PSComputerName : localhost
詳細: 操作 'CimMethod の呼び出し' が完了しました。
詳細: 構成ジョブが完了するまでにかかった時間は 6.058 秒です
|
ここで"Enable-PSRemoting -Force"を実行
PS C:\PowershellScripts> Enable-PSRemoting -Force
WinRM は要求を受信するように更新されました。
WinRM サービスの種類を正しく変更できました。
WinRM サービスが開始されました。
WinRM はリモート管理用に更新されました。
このコンピューター上のあらゆる IP への WS-Man 要求を受け付けるため、HTTP://* 上に WinRM リスナーを作成しました。
WinRM ファイアウォールの例外を有効にしました。
ローカル ユーザーにリモートで管理権限を付与するよう LocalAccountTokenFilterPolicy を構成しました。
|
これを実行したらうまくいくようになりました。
PS C:\PowershellScripts> C:\PowershellScripts\PSS_DSC_zip.ps1
ディレクトリ: C:\PowershellScripts\Filecopy
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2014/06/19 22:19 1280 localhost.mof
詳細: パラメーター ''methodName' = SendConfigurationApply,'className' = MSFT_DSCLocalConfigurationManager,'namespaceName' = root/Microsoft/Windows/DesiredStateConfiguration' を使用して操作 '
CimMethod の呼び出し' を実行します。
詳細: コンピューター URANUX-WIN8、ユーザー SID S-1-5-21-4205703447-7355389-1786604373-1001 から LCM メソッドが呼び出されました。
詳細: [URANUX-WIN8]: LCM: [ 開始 設定 ]
詳細: [URANUX-WIN8]: LCM: [ 開始 リソース ] [[Archive]ArchiveExample]
詳細: [URANUX-WIN8]: LCM: [ 開始 テスト ] [[Archive]ArchiveExample]
詳細: [URANUX-WIN8]: [[Archive]ArchiveExample] The destination file C:\Temp2\PowershellScripts\CompareAcl.ps1 was missing or was not a file
詳細: [URANUX-WIN8]: [[Archive]ArchiveExample] The destination file
詳細: [URANUX-WIN8]: LCM: [ 終了 テスト ] [[Archive]ArchiveExample] 5.7380 秒かかりました。
詳細: [URANUX-WIN8]: LCM: [ 開始 設定 ] [[Archive]ArchiveExample]
詳細: [URANUX-WIN8]: [[Archive]ArchiveExample] The configuration of MSFT_ArchiveResource is starting
詳細: [URANUX-WIN8]: [[Archive]ArchiveExample] The archive at C:\PowershellScripts\test.zip was unpacked to destination C:\Temp2
詳細: [URANUX-WIN8]: [[Archive]ArchiveExample] The configuration of MSFT_ArchiveResource has completed
詳細: [URANUX-WIN8]: LCM: [ 終了 設定 ] [[Archive]ArchiveExample] 0.2520 秒かかりました。
詳細: [URANUX-WIN8]: LCM: [ 終了 リソース ] [[Archive]ArchiveExample]
詳細: [URANUX-WIN8]: LCM: [ 終了 設定 ]
詳細: [URANUX-WIN8]: LCM: [ 終了 設定 ] (6.3300 秒)。
詳細: 操作 'CimMethod の呼び出し' が完了しました。
詳細: 構成ジョブが完了するまでにかかった時間は 6.393 秒です
|
とりあえず動いた。よかった。よかった。
解凍されるファイルの一覧が表示され、指定通りにファイルが解凍されたのが確認できました。