') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); GitHub - msftrubengu/PSDesiredStateConfiguration: Source for https://www.powershellgallery.com/packages/PSDesiredStateConfiguration module · GitHub
Skip to content

Repository files navigation

PSDesiredStateConfiguration module

NOTE: We are currently NOT accepting PRs for this project

PSDesiredStateConfiguration (DSC) is the PowerShell module that enables writing configuration as code.

The DSC platform was originally built on top of WMI for Windows. Starting in PowerShell 7.1 and working with internal partner teams Azure Guest Configuration and Automanage, we started making DSC cross-platform by enabling Invoke-DSCResource to directly use resources without going through the Local Configuration Manager (LCM).

Our initial cross-platform work to enable partner teams:

  • Separated out the DSC parts in the PowerShell engine and moved them as a subsystem into the PSDesiredStateConfiguration module
  • Remove PSDesiredStateConfiguration module from the PowerShell 7 package. This allows the PSDesiredStateConfiguration module to be developed independently of PowerShell and users can mix and match versions of PowerShell and PSDesiredStateConfiguration for their environment.
  • Removing the dependency on MOF: Initially, only support DSC Resources written as PowerShell classes. This includes tooling to convert existing script based DSC Resources to be wrapped as PowerShell classes.

Documentation and resources

The documentation for PSDesiredStateConfiguration 3.0.0-beta1 is a work-in-progress. We invite the community to review the documentation and assist us as we work on new documentation during the platform development.

For more information about DSC v3, see PowerShell Desired State Configuration Overview

To download the latest release from the PowerShell Gallery, see PSDesiredStateConfiguration 3.0.0-beta1

Community Feedback

As we continue this journey to make DSC a cross-platform technology, we invite the community to share your ideas and open issues. During the PowerShell 7.3 timeframe, we remain focused on enabling partner teams and will not be accepting public pull requests.

Build

Requirements

Build Process

  • Run build.ps1 -Build -Clean
  • Compiled module will be in ./out/PSDesiredStateConfiguration

CI - Continuous Integration

CI pipeline definition is in .vsts-ci\azure-pipelines-ci.yml and running Compliance and Pester tests in test\PSDesiredStateConfiguration.Tests.ps1 on Windows, Linux and Mac. CI builds are not signed.

Publishing Releases

The module is released on Powershell Gallery. For a release the code of this repo is mirrored into an internal repo and .vsts-ci\azure-pipelines-release.yml pipeline is run. Release builds are signed.

Releases

Packages

Contributors

Languages