1
- function New-ADDomainJoin
2
- {
3
- <#
1
+ function New-ADDomainJoin {
2
+ <#
4
3
. Synopsis
5
4
Perform offline domain join in c#/PowerShell without djoin.exe
6
5
. Description
@@ -48,36 +47,36 @@ function New-ADDomainJoin
48
47
. link
49
48
https://github.com/lazywinadmin/PowerShell
50
49
#>
51
- [CmdletBinding ()]
52
- PARAM (
53
- [Parameter (Mandatory = $true )]
54
- $machinename ,
55
-
56
- [Parameter (Mandatory = $true )]
57
- $domain ,
58
-
59
- [Alias (" RunAs" )]
60
- [System.Management.Automation.PSCredential ]
61
- [System.Management.Automation.Credential ()]
62
- $Credential = [System.Management.Automation.PSCredential ]::Empty,
63
-
64
- $machineaccountou = $null ,
65
-
66
- $dcname
67
- )
68
- Try {
69
- $FunctionName = (Get-Variable - Name MyInvocation - Scope 0 - ValueOnly).MyCommand
70
-
71
- # Detect OS
72
- $OSVersion = [Environment ]::OSVersion
73
- $OSVersionMajorMinor = " $ ( $OSVersion.version.major ) .$ ( $OSVersion.version.minor ) "
74
- Write-Verbose - Message " [$FunctionName ] OS detected - $OSVersionMajorMinor "
75
- if ($OSVersionMajorMinor -lt 6.2 ){ $CodeToUse = ' W2008' }
76
- else { $CodeToUse = ' W2012' }
77
-
78
- # W2008
79
- Write-Verbose - Message " [$FunctionName ] Declare code for Windows Server 2008/Windows 7"
80
- $source2008 = @'
50
+ [CmdletBinding ()]
51
+ PARAM (
52
+ [Parameter (Mandatory = $true )]
53
+ $machinename ,
54
+
55
+ [Parameter (Mandatory = $true )]
56
+ $domain ,
57
+
58
+ [Alias (" RunAs" )]
59
+ [System.Management.Automation.PSCredential ]
60
+ [System.Management.Automation.Credential ()]
61
+ $Credential = [System.Management.Automation.PSCredential ]::Empty,
62
+
63
+ $machineaccountou = $null ,
64
+
65
+ $dcname
66
+ )
67
+ Try {
68
+ $FunctionName = (Get-Variable - Name MyInvocation - Scope 0 - ValueOnly).MyCommand
69
+
70
+ # Detect OS
71
+ $OSVersion = [Environment ]::OSVersion
72
+ $OSVersionMajorMinor = " $ ( $OSVersion.version.major ) .$ ( $OSVersion.version.minor ) "
73
+ Write-Verbose - Message " [$FunctionName ] OS detected - $OSVersionMajorMinor "
74
+ if ($OSVersionMajorMinor -lt 6.2 ) { $CodeToUse = ' W2008' }
75
+ else { $CodeToUse = ' W2012' }
76
+
77
+ # W2008
78
+ Write-Verbose - Message " [$FunctionName ] Declare code for Windows Server 2008/Windows 7"
79
+ $source2008 = @'
81
80
using System;
82
81
using System.Security.Principal;
83
82
using System.Runtime.InteropServices;
325
324
}
326
325
'@
327
326
328
- # W2012
329
- Write-Verbose - Message " [$FunctionName ] Declare code for Windows Server 2012/Windows 8"
330
- $source2012 = @'
327
+ # W2012
328
+ Write-Verbose - Message " [$FunctionName ] Declare code for Windows Server 2012/Windows 8"
329
+ $source2012 = @'
331
330
using System;
332
331
using System.Security.Principal;
333
332
using System.Runtime.InteropServices;
@@ -692,24 +691,26 @@ namespace Djoin
692
691
}
693
692
'@
694
693
695
- switch ($CodeToUse ) {
696
- ' W2008' {
697
- Write-Verbose - Message " [$FunctionName ] Importing code for Windows Server 2008/Windows 7"
698
- Add-Type - TypeDefinition $Source2008 - Language CSharp }
699
- default {
700
- Write-Verbose - Message " [$FunctionName ] Importing code for Windows Server 2012/Windows 8"
701
- Add-Type - TypeDefinition $Source2012 - Language CSharp}
702
- }
694
+ switch ($CodeToUse ) {
695
+ ' W2008' {
696
+ Write-Verbose - Message " [$FunctionName ] Importing code for Windows Server 2008/Windows 7"
697
+ Add-Type - TypeDefinition $Source2008 - Language CSharp
698
+ }
699
+ default {
700
+ Write-Verbose - Message " [$FunctionName ] Importing code for Windows Server 2012/Windows 8"
701
+ Add-Type - TypeDefinition $Source2012 - Language CSharp
702
+ }
703
+ }
703
704
704
- Write-Verbose - Message " [$FunctionName ] Performing offline domain join...."
705
+ Write-Verbose - Message " [$FunctionName ] Performing offline domain join...."
705
706
706
- $DomainJoinBlob = " "
707
- [void ]([Djoin.DomainJoin ]::GetDomainJoin($ ($Credential.username ), $ ($Credential.GetNetworkCredential ().password), $domain , $machinename , $machineaccountou , $dcname , [ref ]$DomainJoinBlob ))
707
+ $DomainJoinBlob = " "
708
+ [void ]([Djoin.DomainJoin ]::GetDomainJoin($ ($Credential.username ), $ ($Credential.GetNetworkCredential ().password), $domain , $machinename , $machineaccountou , $dcname , [ref ]$DomainJoinBlob ))
708
709
709
- # return the blob
710
- return $DomainJoinBlob
711
- }
712
- catch {
713
- throw $_
714
- }
710
+ # return the blob
711
+ return $DomainJoinBlob
712
+ }
713
+ catch {
714
+ throw $_
715
+ }
715
716
}
0 commit comments