vagrant-windows-domain 1.3.2 → 1.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc9e56200816c6d1f4aa73806bedc10976d0471c643102f54e82c44bdb78432e
4
- data.tar.gz: 4186ece3f5539020fe90cdb3bb961f825101fd23167349bc7eee834b49f56005
3
+ metadata.gz: fbdaa30870420b7e0fc8c44c2716a0bf97f5067114f276f391a6147ef6d29c7a
4
+ data.tar.gz: 52db0ec2e6a68ef743f10720d0c03add6844c59e31f6a6e974db046d10c187cf
5
5
  SHA512:
6
- metadata.gz: 95f644aef3a5df4fbd5b5262cf30c5b6ed4e2aa266c99055b093d0978cda1055ff38cfea14cc6bb351f7107b0e2ba827a82843cc97bc2a7dc354271126da2855
7
- data.tar.gz: 7733d4aa00ff3e45779f1c66c3901e3fd7b431ae81e807701a3ce098db8e725f8ce88fcd4d1993dc05379326723277a5868a5fcb787fadff04fd8a301104a945
6
+ metadata.gz: 6915697baa4d5922ad0c33b17466e0d01f5dc92ab26fbe295aa6009bd50c4d3b3d79234460d3b3368f90a02b93db51c9b33c176967311e3a7087ec3b984f4a3c
7
+ data.tar.gz: b1dc722b9620aeeb3a03870c063351d79161af9931f603cfcf389c06e23685a5716ae71c3921f852debb772ad8006d4b72447b2d5b90f4ae6565c9ff7cbcdeb8
@@ -17,6 +17,179 @@ function Repair-OpenSSHPasswd(){
17
17
  $passwd | Set-Content $passwdPath -Encoding Ascii
18
18
  }
19
19
  }
20
+ function New-ADSIPrincipalContext
21
+ {
22
+ [CmdletBinding(SupportsShouldProcess = $true)]
23
+ [OutputType('System.DirectoryServices.AccountManagement.PrincipalContext')]
24
+ PARAM
25
+ (
26
+ [Alias("RunAs")]
27
+ [System.Management.Automation.PSCredential]
28
+ [System.Management.Automation.Credential()]
29
+ $Credential = [System.Management.Automation.PSCredential]::Empty,
30
+
31
+ [Parameter(Mandatory = $true)]
32
+ [System.DirectoryServices.AccountManagement.ContextType]$ContextType,
33
+
34
+ $DomainName = [System.DirectoryServices.ActiveDirectory.Domain]::Getcurrentdomain(),
35
+
36
+ $Container,
37
+
38
+ [System.DirectoryServices.AccountManagement.ContextOptions[]]$ContextOptions
39
+ )
40
+
41
+ BEGIN
42
+ {
43
+ $ScriptName = (Get-Variable -name MyInvocation -Scope 0 -ValueOnly).MyCommand
44
+ Write-Verbose -Message "[$ScriptName] Add Type System.DirectoryServices.AccountManagement"
45
+ Add-Type -AssemblyName System.DirectoryServices.AccountManagement
46
+ }
47
+ PROCESS
48
+ {
49
+ TRY
50
+ {
51
+ switch ($ContextType)
52
+ {
53
+ "Domain" { $ArgumentList = $ContextType, $DomainName }
54
+ "Machine" { $ArgumentList = $ContextType, $ComputerName }
55
+ "ApplicationDirectory" { $ArgumentList = $ContextType }
56
+ }
57
+
58
+ IF ($PSBoundParameters['Container'])
59
+ {
60
+ $ArgumentList += $Container
61
+ }
62
+
63
+ IF ($PSBoundParameters['ContextOptions'])
64
+ {
65
+ $ArgumentList += $($ContextOptions)
66
+ }
67
+
68
+ IF ($PSBoundParameters['Credential'])
69
+ {
70
+ # Query the specified domain or current if not entered, with the specified credentials
71
+ $ArgumentList += $($Credential.UserName), $($Credential.GetNetworkCredential().password)
72
+ }
73
+
74
+ IF ($PSCmdlet.ShouldProcess($DomainName, "Create Principal Context"))
75
+ {
76
+ # Query
77
+ New-Object -TypeName System.DirectoryServices.AccountManagement.PrincipalContext -ArgumentList $ArgumentList
78
+ }
79
+ } #TRY
80
+ CATCH
81
+ {
82
+ $PSCmdlet.ThrowTerminatingError($_)
83
+ }
84
+ } #PROCESS
85
+ }
86
+
87
+ function Get-ADSIComputer
88
+ {
89
+ [CmdletBinding(DefaultParameterSetName="All")]
90
+ param ([Parameter(Mandatory=$true,ParameterSetName="Identity")]
91
+ [string]$Identity,
92
+
93
+ [Alias("RunAs")]
94
+ [System.Management.Automation.PSCredential]
95
+ [System.Management.Automation.Credential()]
96
+ $Credential = [System.Management.Automation.PSCredential]::Empty,
97
+
98
+ [String]$DomainName
99
+ )
100
+ BEGIN
101
+ {
102
+ Add-Type -AssemblyName System.DirectoryServices.AccountManagement
103
+
104
+ # Create Context splatting
105
+ $ContextSplatting = @{ ContextType = "Domain" }
106
+
107
+ IF ($PSBoundParameters['Credential']) { $ContextSplatting.Credential = $Credential }
108
+ IF ($PSBoundParameters['DomainName']) { $ContextSplatting.DomainName = $DomainName }
109
+
110
+ $Context = New-ADSIPrincipalContext @ContextSplatting
111
+
112
+ }
113
+ PROCESS
114
+ {
115
+ TRY{
116
+ IF($Identity)
117
+ {
118
+ [System.DirectoryServices.AccountManagement.ComputerPrincipal]::FindByIdentity($Context, $Identity)
119
+ }
120
+ ELSE{
121
+ $ComputerPrincipal = New-object -TypeName System.DirectoryServices.AccountManagement.ComputerPrincipal -ArgumentList $Context
122
+ $Searcher = new-object System.DirectoryServices.AccountManagement.PrincipalSearcher
123
+ $Searcher.QueryFilter = $ComputerPrincipal
124
+
125
+ $Searcher.FindAll()
126
+ }
127
+ }
128
+ CATCH
129
+ {
130
+ $pscmdlet.ThrowTerminatingError($_)
131
+ }
132
+ }
133
+ }
134
+
135
+ function Remove-ADSIComputer
136
+ {
137
+ [CmdletBinding(SupportsShouldProcess = $true)]
138
+ PARAM (
139
+ [parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, ValueFromPipeline = $true)]
140
+ $Identity,
141
+
142
+ [Alias("RunAs")]
143
+ [System.Management.Automation.PSCredential]
144
+ [System.Management.Automation.Credential()]
145
+ $Credential = [System.Management.Automation.PSCredential]::Empty,
146
+
147
+ [String]$DomainName,
148
+
149
+ [Switch]$Recursive
150
+ )
151
+
152
+ BEGIN
153
+ {
154
+ Add-Type -AssemblyName System.DirectoryServices.AccountManagement
155
+
156
+ # Create Context splatting
157
+ $ContextSplatting = @{ }
158
+ IF ($PSBoundParameters['Credential']) { $ContextSplatting.Credential = $Credential }
159
+ IF ($PSBoundParameters['DomainName']) { $ContextSplatting.DomainName = $DomainName }
160
+
161
+ }
162
+ PROCESS
163
+ {
164
+ TRY
165
+ {
166
+ # Not Recursive
167
+ if (-not $PSBoundParameters['Recursive'])
168
+ {
169
+ if ($pscmdlet.ShouldProcess("$Identity", "Remove Account"))
170
+ {
171
+ $Account = Get-ADSIComputer -Identity $Identity @ContextSplatting
172
+ $Account.delete()
173
+ }
174
+ }
175
+
176
+ # Recursive (if the computer is the parent of one leaf or more)
177
+ if ($PSBoundParameters['Recursive'])
178
+ {
179
+ if ($pscmdlet.ShouldProcess("$Identity", "Remove Account and any child objects"))
180
+ {
181
+ $Account = Get-ADSIComputer -Identity $Identity @ContextSplatting
182
+ $Account.GetUnderlyingObject().deletetree()
183
+ }
184
+ }
185
+
186
+ }
187
+ CATCH
188
+ {
189
+ $pscmdlet.ThrowTerminatingError($_)
190
+ }
191
+ }
192
+ }
20
193
  <% if options[:computer_name] != nil %>
21
194
  $computerName='<%= options[:computer_name] %>'
22
195
  <% else %>
@@ -87,26 +260,15 @@ if (Test-PartOfDomain -computerName $computerName -domain $domain){
87
260
  <% end %>
88
261
 
89
262
  Repair-OpenSSHPasswd
90
-
91
- # Fix vagrant-windows GH-129, if there's an existing scheduled
92
- # reboot cancel it so shutdown succeeds
93
- #&shutdown /a
94
-
95
- # Force shutdown the machine now
96
- #&shutdown /r /t 0 /c "Vagrant Halt" /f /d p:4:1
97
263
  }
98
264
  <% else %>
99
265
  if (!(Test-JoinedToADomain)) {
100
266
  Throw "$computerName not part of any domain"
101
267
  } else {
102
- Remove-Computer <%= options[:parameters] %> -Workgroup 'WORKGROUP' -Verbose -Force -PassThru
268
+ #When destroying the vagrant machine, the goal is not as much to have the virtual machine disjoin from the domain, but to remove the computer object associated with the
269
+ #machine so that future runs of vagrant up will succeed (especially when the vagrantfile explicitly defines a computer name. That being the case, the remove-computer
270
+ #command has been replaced with a custom function which is able to remove the computer object associated with the vagrant machine in active directory.
271
+ Remove-ADSIComputer -Identity $env:COMPUTERNAME -DomainName $domain -Credential $credentials -Verbose
103
272
  Repair-OpenSSHPasswd
104
- #removed the shutdown of the vm when disjoining it from the domain since, as the vm is about to be destroyed anyway, so there is no use for it.
105
- # Fix vagrant-windows GH-129, if there's an existing scheduled
106
- # reboot cancel it so shutdown succeeds
107
- #&shutdown /a
108
-
109
- # Force shutdown the machine now
110
- #&shutdown /r /t 0 /c "Vagrant Halt" /f /d p:4:1
111
273
  }
112
274
  <% end %>
@@ -1,5 +1,5 @@
1
1
  module Vagrant
2
2
  module WindowsDomain
3
- VERSION = "1.3.2"
3
+ VERSION = "1.3.4"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-windows-domain
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Fellows
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-24 00:00:00.000000000 Z
11
+ date: 2018-10-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake