Resources.ps1

$Version = New-xDscResourceProperty -Name Version -Type String -Attribute Key -Description 'The Vault version to download'
#Now create the resource
New-xDscResource -Name xDSCVault_Download -FriendlyName VaultDownload -Property $Version -Path 'C:\Users\Anthony\Documents\BitBucket\xDSCVault' -Force
Test-xDscSchema -Path 'C:\Users\Anthony\Documents\BitBucket\xDSCVault\DSCResources\xDSCVault_Download\xDSCVault_Download.schema.mof'


$WrappedToken = New-xDscResourceProperty -Name WrappedToken -Attribute Key -Type String -Description 'Value of the wrapped token'
$Method = New-xDscResourceProperty -Name VaultMethod -Attribute Required -Type String -Description 'Method to perform action. CLI or API' -ValueMap 'Api', 'Cli' -Values 'Api', 'Cli'
$VaultAddress = New-xDscResourceProperty -Name VaultAddress -Type String -Attribute Required -Description 'Address of the Vault server'
$cliPath = New-xDscResourceProperty -Name CliPath -Type String -Attribute Write -Description 'Path to the vault binary'
$ApiPrefix = New-xDscResourceProperty -Name ApiPrefix -Type String -Attribute Write -Description 'Version of the API to use'

#Now create the resource
New-xDscResource -Name xDSCVault_Unwrap -FriendlyName VaultUnwrap -Property $WrappedToken, $Method, $VaultAddress, $cliPath, $ApiPrefix -Path 'C:\Users\Anthony\Documents\BitBucket\xDSCVault' -Force
Test-xDscSchema -Path 'C:\Users\Anthony\Documents\BitBucket\xDSCVault\DSCResources\xDSCVault_Unwrap\xDSCVault_Unwrap.schema.mof'


$Method = New-xDscResourceProperty -Name VaultMethod -Attribute Required -Type String -Description 'Method to perform action. CLI or API' -ValueMap 'Api', 'Cli' -Values 'Api', 'Cli'
$VaultAddress = New-xDscResourceProperty -Name VaultAddress -Type String -Attribute Required -Description 'Address of the Vault server'
$cliPath = New-xDscResourceProperty -Name CliPath -Type String -Attribute Write -Description 'Path to the vault binary'
$ApiPrefix = New-xDscResourceProperty -Name ApiPrefix -Type String -Attribute Write -Description 'Version of the API to use'
$VaultPath = New-xDscResourceProperty -Name VaultPath -Type String -Attribute Key -Description 'Vault path to create the secret'
$VaultValue = New-xDscResourceProperty -Name VaultValue -Type String -Attribute Write -Description 'Value for the secret'
$ApiPath = New-xDscResourceProperty -Name ApiPath -Type String -Attribute Read -Description 'Complete API path'
$RandomSecret = New-xDscResourceProperty -Name RandomSecret -Type Boolean -Attribute Required -Description 'Generate a strong random secret'
$ForceUpdate = New-xDscResourceProperty -Name ForceUpdate -Type Boolean -Attribute Required -Description 'Force the secret to be updated'

#Now create the resource
New-xDscResource -Name xDSCVault_Write -FriendlyName VaultWrite -Property $Method, $VaultAddress, $VaultPath, $VaultValue, $cliPath, $ApiPrefix, $ApiPath, $RandomSecret, $ForceUpdate -Path 'C:\Users\Anthony\Documents\BitBucket\xDSCVault' -Force
Test-xDscSchema -Path 'C:\Users\Anthony\Documents\BitBucket\xDSCVault\DSCResources\xDSCVault_Write\xDSCVault_Write.schema.mof'

$UserName = New-xDscResourceProperty -Name UserName -Attribute Key -Type String -Description 'Indicates the account name for which you want to ensure a specific state'
$Description = New-xDscResourceProperty -Name Description -Attribute Write -Type String -Description 'Indicates the description you want to use for the user account'
$Disabled = New-xDscResourceProperty -Name Disabled -Type Boolean -Attribute Required -Description 'Value used to disable/enable a user account'
$Ensure = New-xDscResourceProperty -Name Ensure -Type String -Attribute Required -Description 'Ensures that the feature is present or absent' -ValueMap 'Present', 'Absent' -Values 'Present', 'Absent'
$FullName = New-xDscResourceProperty -Name FullName -Type String -Attribute Write -Description 'Value used to disable/enable a user account'
$PasswordChangeNotAllowed = New-xDscResourceProperty -Name PasswordChangeNotAllowed -Type Boolean -Attribute Required -Description 'Indicates if the user can change the password'
$PasswordChangeRequired = New-xDscResourceProperty -Name PasswordChangeRequired -Type Boolean -Attribute Required -Description 'Indicates if the user must change the password at the next sign in'
$PasswordNeverExpires = New-xDscResourceProperty -Name PasswordNeverExpires -Type Boolean -Attribute Required -Description 'Indicates if the password will expire'
$VaultPath = New-xDscResourceProperty -Name VaultPath -Type String -Attribute Key -Description 'Vault path to create the secret'
$VaultAddress = New-xDscResourceProperty -Name VaultAddress -Type String -Attribute Required -Description 'Address of the Vault server'
$Method = New-xDscResourceProperty -Name VaultMethod -Attribute Required -Type String -Description 'Method to perform action. CLI or API' -ValueMap 'Api', 'Cli' -Values 'Api', 'Cli'
$ApiPrefix = New-xDscResourceProperty -Name ApiPrefix -Type String -Attribute Write -Description 'Version of the API to use'
$ApiPath = New-xDscResourceProperty -Name ApiPath -Type String -Attribute Read -Description 'Complete API path'
$cliPath = New-xDscResourceProperty -Name CliPath -Type String -Attribute Write -Description 'Path to the vault binary'


#Now create the resource
New-xDscResource -Name xDSCVault_LocalUser -FriendlyName VaultLocalUser -Property $Method, $VaultAddress, $VaultPath, $cliPath, $ApiPrefix, $ApiPath, `
$UserName, $Description, $Disabled, $Ensure, $FullName, $PasswordChangeNotAllowed, $PasswordChangeRequired, $PasswordNeverExpires -Path 'C:\Users\Anthony\Documents\BitBucket\xDSCVault' -Force
Test-xDscSchema -Path 'C:\Users\Anthony\Documents\BitBucket\xDSCVault\DSCResources\xDSCVault_LocalUser\xDSCVault_LocalUser.schema.mof'

$VaultAddress = New-xDscResourceProperty -Name VaultAddress -Type String -Attribute Required -Description 'Address of the Vault server'
$Method = New-xDscResourceProperty -Name VaultMethod -Attribute Required -Type String -Description 'Method to perform action. CLI or API' -ValueMap 'Api', 'Cli' -Values 'Api', 'Cli'
$ApiPrefix = New-xDscResourceProperty -Name ApiPrefix -Type String -Attribute Write -Description 'Version of the API to use'
$ApiPath = New-xDscResourceProperty -Name ApiPath -Type String -Attribute Read -Description 'Complete API path'
$cliPath = New-xDscResourceProperty -Name CliPath -Type String -Attribute Write -Description 'Path to the vault binary'
$DomainName = New-xDscResourceProperty -Name DomainName -Type String -Attribute Key -Description 'Name of the domain'
$ParentDomainName = New-xDscResourceProperty -Name ParentDomainName -Type String -Attribute Write -Description 'Fully qualified name of the parent domain'
$DomainNetBIOSName = New-xDscResourceProperty -Name DomainNetBIOSName -Type String -Attribute Write -Description 'Specifies the NetBIOS name for the new domain'
$DatabasePath = New-xDscResourceProperty -Name DatabasePath -Type String -Attribute Write -Description 'Specifies the fully qualified, non-Universal Naming Convention (UNC) path to a directory on a fixed disk of the local computer that contains the domain database'
$LogPath = New-xDscResourceProperty -Name LogPath -Type String -Attribute Write -Description 'Specifies the fully qualified, non-UNC path to a directory on a fixed disk of the local computer where the log file for this operation will be written'
$SysvolPath = New-xDscResourceProperty -Name SysvolPath -Type String -Attribute Write -Description 'Specifies the fully qualified, non-UNC path to a directory on a fixed disk of the local computer where the Sysvol file will be written'
$DnsDelegationUserName = New-xDscResourceProperty -Name DnsDelegationUserName -Type String -Attribute Write -Description 'Username to for DNS delegation'
$DnsDelegationVaultPath = New-xDscResourceProperty -Name DnsDelegationVaultPath -Type String -Attribute Write -Description 'Vault path to get the secret'
$SafemodeAdministratorPasswordVaultPath = New-xDscResourceProperty -Name SafemodeAdministratorPasswordVaultPath -Type String -Attribute Required -Description 'Vault path to get the secret'
$DomainAdministratorUsername = New-xDscResourceProperty -Name DomainAdministratorUsername -Type String -Attribute Required -Description 'Domain Administrator username'
$DomainAdministratorVaultPath = New-xDscResourceProperty -Name DomainAdministratorVaultPath -Type String -Attribute Required -Description 'Vault path to get the secret'

New-xDscResource -Name xDSCVault_ADDomain -FriendlyName VaultADDomain -Property $Method, $VaultAddress, $cliPath, $ApiPrefix, $ApiPath, `
$DomainName, $ParentDomainName, $DomainNetBIOSName, $DatabasePath, $LogPath, $SysvolPath, $DnsDelegationUserName, $DnsDelegationVaultPath, $SafemodeAdministratorPasswordVaultPath, `
$DomainAdministratorUsername, $DomainAdministratorVaultPath -Path 'C:\Users\Anthony\Documents\BitBucket\xDSCVault' -Force
Test-xDscSchema -Path 'C:\Users\Anthony\Documents\BitBucket\xDSCVault\DSCResources\xDSCVault_ADDomain\xDSCVault_ADDomain.schema.mof'