
PowerShell Desired State Configuration (DSC) แแแแจแแแแแแแแแ แแแแ แขแแแแแก แแแแ แแชแแฃแแ แกแแกแขแแแแก, แกแแ แแแ แแก แ แแแแแแก แแ แแแแแแแชแแแแแก แแแงแแแแแแกแ แแ แแแแคแแแฃแ แแชแแแก, แ แแแแกแแช แแกแแแแ แกแแ แแแ แ แแแฅแแ.
แแแแ แแ DSC-แแก แจแแแแแ แแแแแงแแแแแแกแแก, แ.แ. แแ แ MS Azure-แจแ, แแ แแก แ แแแแแแแแ แแแฃแแแกแ. แแกแแแ แแแแกแแแฃแแ แแแแ แจแแกแแแฉแแแแแ, แแฃ แแ แแแแแแแชแแ แแแแแ (300 แกแแแฃแจแแ แกแแแแฃแ แแแแ แแ แกแแ แแแ แแแแ) แแ แฏแแ แแ แแฆแแแฃแฉแแแแ แแแแขแแแแแ แแแแก แกแแแงแแ แ:
- แแ แแ แกแแแแแก แกแ แฃแแ แแแแแ แแจแแแ แกแแกแขแแแแก แแแแแแแ แแแแแก แจแแกแแฎแแ. แแฃ แกแแญแแ แ แแแแคแแแฃแ แแชแแ แแ แแฅแแ แแแแแงแแแแแฃแแ แแแแแแ แ แกแแ แแแ แแ, แแแจแแ แแ แแแฎแกแแแแแแแแก แแแ แแจแ แฉแแแ แแแแก แจแแกแแฎแแ แแ แแแชแแ. แฉแแจแแแแแฃแแ แกแแแแแแ แแจแ แกแแ แแแ แแแแ แแแคแแ แแแชแแแก แแแแแแแแ แกแแแแแแ แ แแฃแแแ แแ แฐแแกแขแแแแก แแแแ แ แแแแแแแแแ แแแแก แแกแแแ แจแแแซแแแแ แแแแ แแ แ แแแกแญแแ แแแก.
- แแ แแแแฉแแแ แแแกแจแขแแแฃแ แแแ แแ แฎแแ แแแแแแแก แขแแแแ แแแขแแแ. แจแแฃแซแแแแแแแ DSC pull แแแ แกแแ แแแ แแแแก แแแฃแ แแแแแแก แแจแแแแแ, แ แแแแแกแแช แแฅแแแแ แแ แแ แจแแชแแแแแก แขแแแแ แแแขแฃแแ แแแแแชแแแแ แแแแ แแ แกแแแ แแ แกแแชแแแ mof แคแแแแแแแก แแแแคแแแฃแ แแชแแแกแแแแก, แแแแฃแแแแแกแ แแ แ แแแแกแขแ แแชแแแก แแแกแแฆแแแแแแกแแแแก.
แแฆแแก แแ แแแขแงแแแ, แแฃ แ แแแแ แจแแแแซแแแแ แแแแแแแ แแ แแแ แแแแ แแ แแแแแแ แแ แแแแฆแแ แแแแแชแแแแแ แแแแแ แแจแแกแแแแก. แงแแแแแคแแ แ แฃแคแ แ แแแ แขแแแ แแฅแแแแแแ, แแฃ SQL แแแแแแงแแแแแแแ แ แแแแ แช แแแแแชแแแแ แแแแ. แฒฅแฒแฒแฒแฒแฒขแฒแฒแฒ แแฎแแแแ แฉแแจแแแแแฃแแ แแฎแแ แแแญแแ แ Windows Server 2019 แแ แแฌแงแแแแก แแ แแชแแกแจแแ Windows server 1803. แแแแแชแแแแแแก แจแแแ แแแแแ OleDB แแ แแแแแแแ แแก แแแแแงแแแแแแแแช แ แแแแแ DSC แกแแ แแแ แ แแงแแแแแก แแแกแแฎแแแแแฃแ แแแ แแแแขแ แก, แ แแแแแแช แกแ แฃแแแ แแ แแ แแก แแฎแแ แแแญแแ แแแ OleDbCommand-แแก แแแแ .
แแ แแก แแแ แแแแแแ: แแแแแแแก, แแแแช แแงแแแแแก Windows Server 2012 แแ 2016 แฌแแแแจแ, แแ แแแแแงแแแแแแ SQL แแแแแชแแแแ แแแแ, แ แแแแ แช backend for DSC แจแแแแแฎแแแก แกแแ แแแ แแ. แแแแกแแแแแก แฉแแแ แจแแแฅแแแแ โแแ แแฅแกแโ .mdb แคแแแแแก แกแแฎแแ แแกแแชแแ แแแฃแแ แชแฎแ แแแแแแ, แ แแแแแแช แแแแแแแกแแแแ แแแแก แแแแแแขแแก แแแแแ แแจแแแแแแ แแแฆแแแฃแ แแแแแชแแแแแก SQL แกแแ แแแ แแก แแแแแชแแแแ แแแแแจแ.
แจแแแแจแแแ: แแแแกแแแแก Windows Server 2016 แฌแแแ แแฃแชแแแแแแแ แฃแแแ แแฅแแแก แแแแแงแแแแแฃแแ แ แแแแแ Microsoft.Jet.OLEDB.4.0 แแฆแแ แแ แแก แแฎแแ แแแญแแ แแแ.
แแ แแ แแแแแแฎแแแแ แแแขแแแแแก DSC pull แกแแ แแแ แแก แแแแแแแแแแก แแ แแชแแกแแก แจแแกแแฎแแ, แแก แซแแแแแ แแแ แแแ แแ แแก แแฆแฌแแ แแแ . แแ แแฎแแแแ แ แแแแแแแแ แแฃแแฅแขแก แแฆแแแแจแแแ. แแฃ แฉแแแ แแแแแแแแแกแแแ DSC puller-แก แแแแแ แแแ แกแแ แแแ แแ WSUS แแ Kaspersky Security Center-แแ, แแแจแแ แแแแคแแแฃแ แแชแแแก แจแแฅแแแแก แกแแ แแแขแจแ แฃแแแ แจแแแชแแแแแ แจแแแแแแ แแแ แแแแขแ แแแ:
UseSecurityBestPractices = $falseแฌแแแแแฆแแแแ แจแแแแฎแแแแแจแ, TLS 1.0 แแแแแแจแแแ แแ แแแ แจแแซแแแแ SQL แแแแแชแแแแ แแแแแกแแแ แแแแแแจแแ แแแแก. แแแกแแแ แกแแแก แฃแกแแคแ แแฎแแแแแก แชแแแขแ แ แแกแแแ แแ แแแฃแจแแแแแก (แแ แแแแแแ แฃแแแ แแแแแแ แแแก Kaspersky Security Center v11-แจแ).
Enable32BitAppOnWin64 = $trueแแฃ แแ แชแแแแแแแแก แแ แแแแแฎแแ แชแแแแแแ, แแแ แจแแซแแแแ AppPool DSC แกแแ แแแ แแก แแแจแแแแแก IIS-แแ WSUS-แแ.
- WSUS-แแ DSC แกแแ แแแ แแก แแแงแแแแแแกแแก แแแแแ แแแ แกแขแแขแแแฃแ แ แแ แแแแแแแฃแ แ แฅแแจแแ แแแ DSC แกแแแขแแกแแแแก.
แแแแแ แแแแแแแแแ DSC แกแแ แแแ แแก แแแงแแแแแแแ SQL แแแแแชแแแแ แแแแแก แแแแแกแแงแแแแแแแ.
SQL แแแแแชแแแแ แแแแแก แจแแฅแแแ
- แแแแแ แจแแแฅแแแแ แชแแ แแแแ SQL แแแแแชแแแแ แแแแ แกแแฎแแแแ DSC.


- แแแแแ แจแแแฅแแแแ แแแแแ แแจแ แแ แแแแแชแแแแ แแแแแกแแแ แแแกแแแแแจแแ แแแแแ. แแแ แแแ แ แแแจแ, แจแแแแแฌแแแ, แ แแ SQL แกแแ แแแ แ แแแแแ แแจแแก แแแแแแขแแคแแแแชแแแก แแซแแแแ, แ แแแแ แช Windows, แแกแแแ SQL-แก.


- แแแแแแแ แแแแฎแแแ แแแแแก แ แฃแแแแแก แแแแงแแคแแแแแแจแ. แแแ แฉแแแ แแแแแชแแแแ แแแแ, แแ แจแแแแฎแแแแแจแ DSC. แฉแแแ แแแซแแแแ แแแแแชแแแแ แแแแแก แแคแแแแแแแก แฃแคแแแแแแก.

- แจแแกแ แฃแแแแฃแแแ.

แกแฅแแแแก แจแแฅแแแ DSC แแแแแชแแแแ แแแแแกแแแแก
DSC แแแแแชแแแแ แแแแแกแแแแก แกแฅแแแแก แจแแกแแฅแแแแแแ แแ แ แแแ แแ แกแแแแแก:
- แแแแแฃแแแแแแแแ, TSQL แกแแ แแแขแแก แกแแจแฃแแแแแแ
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Devices]( [TargetName] [nvarchar](255) NOT NULL, [ConfigurationID] [nvarchar](255) NOT NULL, [ServerCheckSum] [nvarchar](255) NOT NULL, [TargetCheckSum] [nvarchar](255) NOT NULL, [NodeCompliant] [bit] NOT NULL, [LastComplianceTime] [datetime] NULL, [LastHeartbeatTime] [datetime] NULL, [Dirty] [bit] NOT NULL, [StatusCode] [int] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[RegistrationData]( [AgentId] [nvarchar](255) NOT NULL, [LCMVersion] [nvarchar](255) NULL, [NodeName] [nvarchar](255) NULL, [IPAddress] [nvarchar](255) NULL, [ConfigurationNames] [nvarchar](max) NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[StatusReport]( [JobId] [nvarchar](50) NOT NULL, [Id] [nvarchar](50) NOT NULL, [OperationType] [nvarchar](255) NULL, [RefreshMode] [nvarchar](255) NULL, [Status] [nvarchar](255) NULL, [LCMVersion] [nvarchar](50) NULL, [ReportFormatVersion] [nvarchar](255) NULL, [ConfigurationVersion] [nvarchar](255) NULL, [NodeName] [nvarchar](255) NULL, [IPAddress] [nvarchar](255) NULL, [StartTime] [datetime] NULL, [EndTime] [datetime] NULL, [Errors] [nvarchar](max) NULL, [StatusData] [nvarchar](max) NULL, [RebootRequested] [nvarchar](255) NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO - แแแแแชแแแแ แแแแแ แขแ แชแแ แแแแ แแแฌแงแแแแแแแแแแแแ.mdb, แ แแแแ แช PS แแแแฃแแแก PSDesiredStateConfiguration-แแก แแแฌแแแ SQL Data Import Wizard-แแก แแแจแแแแแแ.
devices.mdb แคแแแแ, แ แแแแแแแแแช แแแแฃแจแแแแแ, แแแแแแ แแแแก C แคแแแแจแ:WindowssysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.
- แแแแแชแแแแแแก แแแแแ แขแแกแแแแก แแแฃแจแแแ SQL Server Import and Export Wizard.

- แฉแแแ แแแ แฉแแแ, แกแแแแแ แแแแแฆแแแ แแแแแชแแแแแก - แฉแแแแก แจแแแแฎแแแแแจแ แแก แแ แแก Microsoft Access แแแแแชแแแแ แแแแ. แแแแฌแแแแฃแแแ แจแแแแแแ.

- แจแแแ แฉแแแ แคแแแแ, แกแแแแแแแช แฉแแแ แแแแแ แขแแ แแแ แแแแแ แแแแก.

- แฉแแแ แแแแฃแแแแแแ แกแแ แแแแแ แขแ - แฉแแแแแแแก แแก แแ แแก SQL แแแแแชแแแแ แแแแ.

- แแแ แฉแแแ SQL แกแแ แแแ แ (Server Name) แแ แแแแแชแแแแ แแแแ, แ แแแแแจแแช แฉแแแ แจแแแแฅแแ แแแแแชแแแแแแก แแแแแ แขแ (DataBase).

- แแแ แฉแแแ แแคแชแแ แแแแแชแแแแ แแแแแ แแแ แแ แแ แแ แแแขแ แชแฎแ แแแแแแ แแ แฎแแแแแแ (แแแแแชแแแแแแก แแแแแ แแแ แชแฎแ แแแแแแแแ แแ แฎแแแแแแแแ).

- แแแ แฉแแแ แชแฎแ แแแแแก, แ แแแแแแแแแช แแแแแฎแแแแ แแแแแชแแแแ แแแแแก แกแฅแแแแก.

- แแแแแจแแแ Run Immediate checkbox แแ แแแแญแแ แแ Finish.

- แจแแกแ แฃแแแแฃแแแ.

- แจแแแแแแ, แชแฎแ แแแแแ แฃแแแ แแแแแฉแแแแก DSC แแแแแชแแแแ แแแแแจแ.

.mdb โแแ แแฅแกแโ แคแแแแแก แแแงแแแแแ
ODBC แแแแจแแ แแก แจแแฅแแแ SQL แกแแ แแแ แแแ. แแแ แแฃแแแแแ, แ แแ MS Access แแ แแ แแก แแแแแกแขแแแแ แแแฃแแ แกแแ แแแ แแ, แ แแแแแแช แแฃแจแแแแก DSC, แแแแขแแ databases.mdb-แแก แแแงแแแแแ แฎแแแแ แจแฃแแแแแฃแ แฐแแกแขแแ แแแแแกแขแแแแ แแแฃแแ MS Access.
แแแแแ แจแแแฅแแแแ แกแแกแขแแแแก ODBC แแแแจแแ แ SQL แกแแ แแแ แแแ (แแแแจแแ แแก แแแขแ แฃแแแ แแแแฎแแแแแแก MS Access-แแก แแแขแก - 64 แแ 32). แแก แจแแแซแแแแ แจแแแฅแแแแก แแแแแงแแแแแแ:
- Powershell cmdlet:
Add-OdbcDsn โName DSC โDriverName 'SQL Server' โPlatform '<64-bit or 32-bit>' โDsnType System โSetPropertyValue @('Description=DSC Pull Server',"Server=<Name of your SQL Server>",'Trusted_Connection=yes','Database=DSC') โPassThruโ แแ แฎแแแแ, แแแแจแแ แแก แแกแขแแขแแก แแแแแงแแแแแแ:
- แแแฎแกแแแแ แแแแแแแกแขแ แแชแแฃแแ แแแกแขแ แฃแแแแขแแแ. แฉแแแ แแแ แฉแแแ ODBC แแแแแชแแแแ แฌแงแแ แแแแก แแแงแแแแแฃแแ MS Access-แแก แแแ แกแแแก แแแฎแแแแแ. แแแแแแแ System DSN แฉแแแแ แแแ แแ แจแแฅแแแแแ แกแแกแขแแแฃแ แ แแแแจแแ แ (แแแแแขแแแ).

- แฉแแแ แแฆแแแแจแแแแ, แ แแ แฉแแแ แแแแฃแแแแจแแ แแแแแ SQL แกแแ แแแ แก. แแแแฌแแแแฃแแแ Finish.

- แแแฃแแแแแ แกแแฎแแแ แแ แกแแ แแแ แ แแแกแแแแแจแแ แแแแแ. แจแแแแแ แแแแแ แแแ แแแแขแ แแแแแ แแแแจแแ แแก แจแแฅแแแ แแแแญแแ แแแแแ DSC แกแแ แแแ แแ.

- แฉแแแ แแแแฃแแแแแแ, แ แแ SQL แกแแ แแแ แแแ แแแกแแแแแจแแ แแแแแ แแแงแแแแแ แแแ แ แจแแฅแแแแ แจแแกแแแแก แกแแฎแแแฌแแแแแแ DSC.

- แฉแแแ แแแแฃแกแขแแแ แแแแแชแแแแ แแแแแก DSC แแแแจแแ แแก แแแ แแแแขแ แแแจแ.

- แแแแฌแแแแฃแแแ Finish.

- แแแงแแแแแแก แแแกแ แฃแแแแแแแ แแแแแฌแแแแ, แ แแ แแแแจแแ แ แแฃแจแแแแก (แขแแกแขแ แแแแแชแแแแ แฌแงแแ แ).

- แจแแกแ แฃแแแแฃแแแ.

MS Access-แจแ devices.mdb แแแแแชแแแแ แแแแแก แจแแฅแแแ. แแแฃแจแแแ MS Access แแ แจแแฅแแแแแ แชแแ แแแแ แแแแแชแแแแ แแแแ แกแแฎแแแฌแแแแแแ devices.mdb.

- แแแแแแแ แแแ แ แแแแแชแแแแแแก แฉแแแแ แแแ แแ แแแแญแแ แแ ODBC แแแแแชแแแแ แแแแแก. แคแแแฏแแ แแจแ, แ แแแแแแช แแแแแฉแแแแแ, แแแ แฉแแแ แแแแแแจแแ แแแฃแแ แชแฎแ แแแแก แจแแฅแแแ แแแแแชแแแแ แฌแงแแ แแกแแแ แแแกแแแแแจแแ แแแแแ.

- แแฎแแ แคแแแฏแแ แแจแ แแแ แฉแแแ แฉแแแแ แแ Machine Data Source แแ แแแแฌแแแแฃแแแ OK. แแฎแแ แคแแแฏแแ แแจแ แจแแแงแแแแแ แ แฌแแฃแแแแแแ แกแแแแแแแ SQL แกแแ แแแ แแแ แแแกแแแแแจแแ แแแแแ.

- แแแ แฉแแแ แชแฎแ แแแแแ, แ แแแแแแแช แฃแแแ แแงแแก แแแแแแจแแ แแแฃแแ. แจแแแแแฌแแแ แแแ แแแแก แจแแแแฎแแ แงแฃแแ แแ แแแแญแแ แแ OK. แจแแแแแฎแแ แแแ แแแ แงแแแแ แฏแแ แแ แกแแแแแ แชแฎแ แแแแกแแแแก.

- แแแแแฅแกแแแจแ แแฅแแแ แฃแแแ แแแ แฉแแแ แจแแแแแแ:
โ TargetName dbo_Devices แชแฎแ แแแแกแแแแก;
โ NodeName แแ IPAddress dbo_RegistrationData-แกแแแแก;
โ NodeName แแ IPAddress dbo_StatusReport-แแกแแแแก.
- แแแแแ แแแแแแแ แฅแแแ แชแฎแ แแแแแแก แกแแฎแแแ MS Access-แจแ, แแแ แซแแ: แแแแแฆแแ dbo_ แแ แแคแแฅแกแ, แ แแแ DSC-แ แจแแซแแแก แแแแ แแแแแงแแแแแ.

- แจแแกแ แฃแแแแฃแแแ.

- แจแแแแแฎแแ แคแแแแ แแ แแแฎแฃแ แแ MS Access. แแฎแแ แแแแแแแแ แแ แจแแแแแแ แแแฆแแแฃแแ devices.mdb DSC แกแแ แแแ แแ (แแแแฃแแแกแฎแแแแแ, C:\Program Files-แจแ).WindowsPowershellDSCService) แแ แจแแชแแแแแ แแ แกแแแฃแแ แแแกแแ (แแกแแแแก แแ แกแแแแแแก แจแแแแฎแแแแแจแ).
แแแแแแแแ แแแแก DSC แกแแ แแแ แแก แแแแคแแแฃแ แแชแแ SQL-แแก แแแแแกแแงแแแแแแแ
- แฉแแแ แแฃแแ แฃแแแแแแ DSC แกแแ แแแ แก. SQL แกแแ แแแ แแแ แฉแแแแ แแ แแฅแกแ แคแแแแแ แแแกแแแแแจแแ แแแแแ, แแแแแ แจแแแฅแแแแ แแฎแแแ ODBC แแแแจแแ แ DSC แกแแ แแแ แแ. แกแแฎแแแ, แแแขแแก แกแแฆแ แแ แแ แแแแจแแ แแก แแแ แแแแขแ แแแ แฃแแแ แแงแแก แแแแแ, แ แแช MDB แคแแแแแก แจแแฅแแแแกแแก. แแฅแแแ แจแแแแซแแแแ แแแแแแแแ แแ แฃแแแ แแแแคแแแฃแ แแ แแแฃแแ แชแแ แแแแ แแแฌแงแแแแแแแแแ.mdb แแฅแแแแ.
- แแแฌแงแแแแแแแแแแก แแแแแกแแงแแแแแแแ, แแฅแแแ แฃแแแ แจแแแขแแแแ แชแแแแแแแแแ DSC pull แกแแ แแแ แแก web.config-แจแ (แแแแฃแแแกแฎแแแแ แแ แแก C:inetpubPSDSCPullServerweb.config):
- แแแแกแแแแก Windows Server 2012
<add key="dbprovider" value="System.Data.OleDb">
<add key="dbconnectionstr" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:Program FilesWindowsPowerShellDscServiceDevices.mdb;">- แแแแกแแแแก Windows Server 2016
<add key="dbprovider" value="System.Data.OleDb">
<add key="dbconnectionstr" value="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:Program FilesWindowsPowerShellDscServiceDevices.mdb;">แแก แแกแ แฃแแแแก DSC แกแแ แแแ แแก แแแงแแแแแแก.
DSC แกแแ แแแ แแก แคแฃแแฅแชแแแแแ แแแแก แจแแแแฌแแแแ
- แแแแแ แจแแแแแแฌแแแ, แ แแ DSC แกแแ แแแ แ แฎแแแแแกแแฌแแแแแแ แแแ แแ แแฃแแแ แแก แกแแจแฃแแแแแแ.

- แแฎแแ แแแแแ แจแแแแแแฌแแแ, แแฃแจแแแแก แแฃ แแ แ DSC pull แกแแ แแแ แ แกแฌแแ แแ. แแแแกแแแแแก xPSDesiredStateConfiguration แแแแฃแแ แจแแแชแแแก pullserversetuptests.ps1 แกแแ แแแขแก. แแ แกแแ แแแขแแก แแแจแแแแแแแ, แแฅแแแ แฃแแแ แแแแแแกแขแแแแ แแ Powershell แแแแฃแแ แกแแฎแแแแ Pester. แแแแแแกแขแแแแ แแ Install-Module -Name Pester.
- แแแฎแกแแแแ C:\Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<แแแแฃแแแก แแแ แกแแ>DSCPullServerSetupPullServerDeploymentVerificationTest (แแแแแแแแจแ, แแแ แกแแ 8.0.0.0.0).

- แแแฎแกแแแแ PullServerSetupTests.ps1 แแ แจแแแแแฌแแแ แแแ DSC แกแแ แแแ แแก web.config. แแแ web.config, แ แแแแแแช แจแแแแแฌแแแแก แกแแ แแแขแก, แแแแแจแแฃแแแ แฌแแแแแ. แกแแญแแ แแแแแก แจแแแแฎแแแแแจแ, แฉแแแ แแชแแแแ แแ แแแแก.

- แแแฃแจแแแ pullserversetuptests.ps1
Invoke-Pester.PullServerSetupTests.ps1
แงแแแแแคแแ แ แแฃแจแแแแก.
- SQL Management Studio-แจแ แฉแแแ แแฎแแแแแ, แ แแ แแแแแแแกแขแ แแ แแแฃแแ แฐแแกแขแแแ แแแแแแแแแ แแแแแ แแจแแแก DSC แกแแแแแแ แแจแ แกแแ แแแ แแ แแ แแแแแชแแแแแ แแแแแ แแแแ DSC แแแแแชแแแแ แแแแแจแ SQL แกแแ แแแ แแ.

แฒกแฃแ แแก แแ แแก. แจแแแแแ แกแขแแขแแแแจแ แแแแแ แแ แแแแฎแ แแ, แแฃ แ แแแแ แฃแแแ แแแแจแแแแ แแแฎแกแแแแแแแ แแแฆแแแฃแ แแแแแชแแแแแแ แแ แจแแแแฎแแแ แฎแแ แแแแแแแก แขแแแแ แแแขแแแแกแ แแ แแแกแจแขแแแฃแ แแแแก แกแแแแแฎแแแก.
แฌแงแแ แ: www.habr.com





































