10

I'm working on leveraging Microsoft's DSC Resource Kit (specifically, XWebAdministration, at least for starters). I'm relatively familiar with DSC, so no worries on the script's actual functionality... it does what it's supposed to, or at least I'm pretty sure it does.

The problem is that when I execute the script from my orchestration box, the servers I'm targeting return this error:

The PowerShell provider xWebAdministration does not exist at the PowerShell module 
path nor is it registered as a WMI provider.
    + CategoryInfo          : InvalidOperation: (root/Microsoft/...gurationManager 
   :String) [], CimException
    + FullyQualifiedErrorId : ModuleNameNotFound
    + PSComputerName        : [redacted]

The reason why it's happening is obvious: I didn't install the xWebAdministration module on those machines. The question is: What's the proper method for automatically distributing custom resources as part of a deployment? It's onerous to manually install custom resources on dozens or hundreds of boxes, so there has to be a way, I just don't see any documentation on the subject anywhere.

Daniel Mann
  • 57,011
  • 13
  • 100
  • 120
  • This is exactly what turned me away from DSC when I tried looking into using it. It seemed that the simple things for getting started are just not well supported or at least documented. To test out the technology one would want to manually push a configuration that depends on some custom resources to a target machine... How does one do this with DSC without having to manually copy the files into the powershell folder first? Use DSC to boostrap the resources themselves? If so some documentation or tutorial would go a long way on explaining this. – jpierson Jul 26 '16 at 03:34

4 Answers4

3

You could configure a centralized pull-server for DSC that clients can get configuration and resources from. Check out:

Frode F.
  • 52,376
  • 9
  • 98
  • 114
  • Is this the only way to accomplish this natively? For what I'm trying to accomplish, a pull server doesn't suit my needs. – Daniel Mann May 22 '14 at 17:34
  • AFAIK, Yes. Two alternatives: 1: Push (file copy / manual installation) 2: Pull (pull-server). – Frode F. May 23 '14 at 08:10
3

If you don't want to use a Pull Server, the only other option you have is to manually Push the resources out, either doing it by using the File Resource in your Configuration (and using Depends On) or copying them out manually somewhere else.

I highly recommend the PowerShell.org E-Book on DSC. It walks you through this scenario and many others. https://onedrive.live.com/?cid=7f868aa697b937fe&id=7F868AA697B937FE%21107

  • Correct me if I'm wrong, but then I still have to solve the problem of actually getting the files onto the target servers. This is in a no-domain environment, so I don't have the option to grab the files off of a SMB share. – Daniel Mann May 22 '14 at 20:24
  • Yet another reason to go with pull server, where you don't need smb shares. – BartekB May 22 '14 at 21:51
  • You can use SMB shares without a domain, you just have to specify the username(or have the same accountname and password on the remote computer), as long as they are on the same network and the firewalls are open. – Frode F. May 23 '14 at 06:13
2

Keep an eye on the following

http://www.powershellgallery.com/

PowerShellGet in powershell v5

https://github.com/OneGet/oneget

Also here's some info about these http://www.systemcentercentral.com/day-14-finding-installing-modules-dsc-resources-powershellget/ and Installing a PowerShell Module

TravisEz13
  • 2,263
  • 1
  • 20
  • 28
Wes
  • 711
  • 7
  • 6
  • Things have changed since 2014 -- installing pre-reqs via `Install-Module` is my preferred way of handling this scenario now. – Daniel Mann Feb 07 '17 at 04:45
1

Assuming you're using Windows Management Framework / PowerShell 5, you can use Install-Module to install the resource from a NuGet feed.

Daniel Mann
  • 57,011
  • 13
  • 100
  • 120