PowerShell Desired State Configuration (DSC) ืืคืฉื ืืืื ืืช ืขืืืืช ืืคืจืืกื ืืืืืืจื ืฉื ืืขืจืืช ืืืคืขืื, ืชืคืงืืื ืืฉืจืช ืืืืืฉืืืื ืืืฉืจ ืืฉ ืื ืืืืช ืฉืจืชืื.
ืืื ืืขืช ืฉืืืืฉ ื-DSC ืืงืืื, ืืืืืจ. ืื ื-MS Azure, ืืฉ ืืื ื ืืืื ืกืื. ืื ืืืืืื ืืืืืื ืื ืืืจืืื ืืืื (ื-300 ืชืื ืืช ืขืืืื ืืฉืจืชืื) ืืขืืืื ืื ืืืื ืืช ืขืืื ืืงืื ืืืื ืจืื:
- ืืื ืืืืืืื ืืืืื ืขื ืืฆื ืืืขืจืืืช. ืื ืืชืฆืืจื ืื ืืจืฉืช ืื ืืืฉืื ืืฉืจืชืื ืืกืืืืื, ืื ืืื ืืืืืช ืืื ืื ื ืืข ืขื ืื. ืื ืงืฉื ืืืฉืื ืืืืข ืืฉืจืช ืืืืืื ืืืืื ื, ืืขืืืจ ืืกืคืจ ืจื ืฉื ืืืจืืื ืื ืืืื ืืงืืช ืื ืืจืื ืืื.
- ืืกืจ ืืืจืืืืช ืืกืืืื ืืช ืืชืงืืืช. ืื ืืืชื ืืคืฉืจื ืืื ืืช ืืืืช ืฉื ืฉืจืชื ืืฉืืื ืฉื DSC ืฉืืืื ืืื ืืกื ื ืชืื ืื ืืืื ืกืืืื ื ืชืงืืืช ืืืืกืื ื ืคืืฅ ืฉื ืงืืฆื MOF ืขืืืจ ืชืฆืืจืืช, ืืืืืืื ืืืคืชืืืช ืจืืฉืื.
ืืืื ืืกืคืจ ืืื ืืืฆื ืชืืืื ืืคืชืืจ ืืช ืืืขืื ืืจืืฉืื ื ืืืงืื ื ืชืื ืื ืืืืืื. ืืื ืืืื ืคืฉืื ืืืชืจ ืื SQL ืืืื ืืฉืืฉ ืืืกืืก ื ืชืื ืื. ืืืจืช
ืืฆืืชื ืืช ืืฉืืื ืืื: ืืื ืฉืืฉืชืืฉ ื-Windows Server 2012 ื-2016, ืืชื ืืืื
ืืขืจื: ืขืืืจ Windows Server 2016 ืขืืื ืืืฉืชืืฉ
ืื ืืคืจื ืขื ืชืืืื ืคืจืืกืช ืฉืจืช DSC pull, ืืื ืืชืืืจ ืืืื
-
UseSecurityBestPractices = $false
ืืืจืช, TLS 1.0 ืืืฉืืช ืืื ืชืืื ืืืชืืืจ ืืืกื ืื ืชืื ืื ืฉื SQL. Kaspersky Security Center ืื ืื ืืขืืื (ืฆืจืื ืืคืชืืจ ืืช ืืืขืื ื- Kaspersky Security Center v11).
-
Enable32BitAppOnWin64 = $true
ืื ืื ืชืืฆืข ืืช ืืฉืื ืื ืืื, ืื ืชืืื ืืืคืขืื ืืช ืฉืจืช AppPool DSC ื-IIS ืขื WSUS.
- ืืขืช ืืชืงื ืช ืฉืจืช DSC ืขื WSUS, ืืฉืืช ืืืืื ืกืืื ืืืื ืืื ืขืืืจ ืืชืจ 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.
ื-Devices.mdb ืืืชื ื ืขืืื ื ืืฆื ื-C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.
- ืืื ืืืืื ื ืชืื ืื, ืืคืขื ืืช ืืฉืฃ ืืืืืื โโืืืืืฆืื ืฉื SQL Server.
- ืื ื ืืืืจืื ืืืืคื ื ืฉืื ืืช ืื ืชืื ืื โ ืืืงืจื ืฉืื ื ืืืืืจ ืืืกื ื ืชืื ืื ืฉื Microsoft Access. ืืงืฉ "ืืื.
- ืืืจ ืืช ืืงืืืฅ ืืื ื ืื ื ืืืืืืื ืืช ืืืืืืจืื.
- ืื ื ืืฆืืื ืื ืืืื ืืืืื - ืขืืืจื ื ืืืืืจ ืืืกื ื ืชืื ืื ืฉื SQL.
- ืืืจื ืืช ืฉืจืช ื-SQL (ืฉื ืฉืจืช) ืืืช ืืกื ืื ืชืื ืื ืืืื ื ืืืื ื ืชืื ืื (DataBase).
- ืืืจ ืืืคืฉืจืืช ืืขืชืง ื ืชืื ืื ืืืืื ืื ืชืฆืืืืช ืืืช ืื ืืืชืจ (ืืขืชืงืช ื ืชืื ืื ืืืืืืืช ืื ืชืฆืืืืช).
- ื ืืืจ ืืช ืืืืืืืช ืฉืืื ื ืืืื ืืช ืกืืืืช ืืกื ืื ืชืื ืื.
- ืกืื ืืช ืชืืืช ืืกืืืื ืืคืขื ืืื ืืืืฅ ืขื ืกืืื.
- ืกืืืืชื.
- ืืชืืฆืื ืืื, ืืืืืืช ืฆืจืืืืช ืืืืคืืข ืืืกื ืื ืชืื ืื ืฉื DSC.
ืืืืจืช ืงืืืฅ "proxy" ืืกืื .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. ืืืฅ ืขื ืกืืื.
- ืฆืืื ืืช ืืฉื ืืืฉืจืช ืฉืืืื ืืฉ ืืืชืืืจ. ืื ืืืื ืฆืืจื ืืืฆืืจ ืืืืืจ ืขื ืืืชื ืคืจืืืจืื ืืฉืจืช DSC.
- ืื ื ืืฆืืื ืื ืฉืืื ืืืชืืืจ ืืฉืจืช SQL, ืื ื ืืฉืชืืฉืื ืืื ืืกื ืฉื ืืฆืจื ืืขืืจ ืืฉื DSC.
- ืื ื ืืฆืืื ืื ืืช ืืกื ืื ืชืื ืื ืืืืืจืืช ืืืืืืจ ืฉื DSC.
- ืืืฅ ืขื ืกืืื.
- ืืคื ื ืืฉืืืช ืืืืืจื, ืื ื ืืืืงืื ืฉืืืืืืจ ืคืืขื (Test Data Source).
- ืกืืืืชื.
ืืฆืืจืช ืืกื ื ืชืื ืื devices.mdb ื-MS Access. ืืคืขื ืืช MS Access ืืฆืืจ ืืกื ื ืชืื ืื ืจืืง ืืฉื devices.mdb.
- ืขืืืจ ืืืฉืื ืืช ื ืชืื ืื ืืืฆืื ืืื ืืืืฅ ืขื ืืกื ื ืชืื ืื ODBC. ืืืืื ืฉืืืคืืข, ืืืจ ืฆืืจ ืืืื ืืงืืฉืจืช ืืื ืืืชืืืจ ืืืงืืจ ืื ืชืื ืื.
- ืืืืื ืืืืฉ, ืืืจ ืืช ืืืจืืืกืืื Machine Data Source ืืืืฅ ืขื ืืืฉืืจ. ืืืืื ืืืืฉ, ืืื ืืช ืืืืฉืืจืื ืืื ืืืชืืืจ ืืฉืจืช SQL.
- ืืืจ ืืช ืืืืืืืช ืฉืฆืจืื ืืงืฉืจ. ืกืื ืืช ืืชืืื ืฉืืืจ ืกืืกืื ืืืืฅ ืขื ืืืฉืืจ. ืฉืืืจ ืืช ืืกืืกืื ืืื ืคืขื ืขืืืจ ืื ืฉืืืฉืช ืืืืืืืช.
- ืืืื ืืงืกืื ืขืืื ืืืืืจ ืืช ืืืคืฉืจืืืืช ืืืืืช:
โ TargetName ืขืืืจ ืืืืื dbo_Devices;
โ NodeName ืื IPAddress ืขืืืจ dbo_RegistrationData;
โ NodeName ืื IPAddress ืขืืืจ dbo_StatusReport. - ืืืื ื ืฉื ื ืืช ืฉืืืช ืืืืืืืช ื-MS Access, ืืืืืจ: ืืกืจ ืืช ืืงืืืืืช dbo_ ืืื ืฉ-DSC ืืืื ืืืฉืชืืฉ ืืื.
- ืกืืืืชื.
- ืฉืืืจ ืืช ืืงืืืฅ ืืกืืืจ ืืช MS Access. ืืขืช ืื ื ืืขืชืืงืื ืืช devices.mdb ืืืชืงืื ืืฉืจืช DSC (ืืืจืืจืช ืืืื ื-C: Program FilesWindowsPowershellDSCService) ืืืืืืคืื ืื ืืช ืืงืืื (ืื ืืื ืงืืื).
ืืืืจืช ืฉืจืช DSC ืืฉืืืืฉ ื-SQL
- ืื ืื ื ืืืืจืื ืืฉืจืช DSC. ืืื ืืืชืืืจ ืืฉืจืช SQL ืขื ืงืืืฅ ื-proxy ืฉืื ื, ืืืื ื ืืฆืืจ ืืืืืจ ODBC ืืืฉ ืืฉืจืช DSC. ืืฉื, ืขืืืง ืืกืืืืืช ืืืืืจืืช ืืืืืืจ ืืืืืื ืืืืืช ืืืื ืืืื ืืขืช ืืฆืืจืช ืงืืืฅ ื-MDB. ืืชื ืืืื ืืืขืชืืง ืืช ื-devices.mdb ืืจืืง ืฉืืืืืจ ืืืจ ืืืื.
- ืืื ืืืฉืชืืฉ ื-devices.mdb, ืขืืื ืืืฆืข ืฉืื ืืืื ื-web.config ืฉื ืฉืจืช ืืืฉืืื ืฉื DSC (ืืจืืจืช ืืืืื ืืื 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 ืคืืขื ืืืืื. ืืฉื ืื, ืืืืื xPSDesiredStateConfiguration ืืืื ืืช ืืกืงืจืืคื pullserversetuptests.ps1. ืืคื ื ืืคืขืืช ืกืงืจืืคื ืื, ืขืืื ืืืชืงืื ืืืืื Powershell ืืฉื Pester. ืืชืงื ืืืชื Install-Module -ืฉื Pester.
- ืคืชื ืืช C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<ืืจืกืช ืืืืื>DSCPullServerSetupPullServerDeploymentVerificationTest (ืืืจืกื ืืืืืื 8.0.0.0.0).
- ืคืชื ืืช PullServerSetupTests.ps1 ืืืืืง ืืช ืื ืชืื ื-web.config ืฉื ืฉืจืช DSC. ืื ืชืื ืื web.config, ืฉืืืืืง ืืช ืืกืงืจืืคื, ืืกืืื ืืืืื. ืืืืืช ืืฆืืจื, ื ืฉื ื ืืช ืืืจื ืืื.
- ืืคืขื pullserversetuptests.ps1
Invoke-Pester.PullServerSetupTests.ps1
ะัะต ัะฐะฑะพัะฐะตั. - ื-SQL Management Studio ืื ื ืจืืืื ืฉืืืจืืื ืื ืืืืื ืฉืืืืื ืืืืืช ืืฉืจืช ืืืืืื ืฉื DSC ืืื ืชืื ืื ืืืืขืื ืืืกื ืื ืชืื ืื ืฉื DSC ืืฉืจืช SQL.
ืื ืืื. ืืืืืจืื ืืืืื ืื ื ืืชืื ื ืืกืคืจ ืืื ืืืฆื ืืื ืืช ืืืืืช ืขื ืื ืชืื ืื ืฉืืชืงืืื, ืืืืข ืื ืืฉืืื ืื ืืืขืื ืืกืืืื ืืช ืชืงืืืช ืืืืจืืืืช.
ืืงืืจ: www.habr.com