Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/LATER.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
# ProcessorArchitecture = ''

# Modules that must be imported into the global environment prior to importing this module
RequiredModules = @('AdmPwd.PS', 'dbatools')
RequiredModules = @('AdmPwd.PS')

# Assemblies that must be loaded prior to importing this module
# RequiredAssemblies = @()
Expand Down
57 changes: 52 additions & 5 deletions src/Public/Get-CurrentComputerLATER.ps1
Original file line number Diff line number Diff line change
@@ -1,3 +1,38 @@
function Invoke-SQL {
<#
.SYNOPSIS
Used to query a database using ADO .Net

.DESCRIPTION
Used to query a database using ADO .Net

.EXAMPLE
Invoke-SQL -dataSource $SqlInstance -Database $Database -sqlCommand $PolicySQLQuery

#>
param(
[string] $dataSource = ".\SQLEXPRESS",
[string] $database = "MasterData",
[string] $sqlCommand = $(throw "Please specify a query.")
)

$connectionString = "Data Source=$dataSource; " +
"Integrated Security=SSPI; " +
"Initial Catalog=$database"

$connection = new-object system.data.SqlClient.SQLConnection($connectionString)
$command = new-object system.data.sqlclient.sqlcommand($sqlCommand,$connection)
$connection.Open()

$adapter = New-Object System.Data.sqlclient.sqlDataAdapter $command
$dataset = New-Object System.Data.DataSet
$adapter.Fill($dataSet) | Out-Null

$connection.Close()
$dataSet.Tables

}

function Get-CurrentComputerLATER {
<#
.SYNOPSIS
Expand Down Expand Up @@ -41,6 +76,15 @@ SELECT TOP 1000 [UserId]
,[Timestamp]
FROM [$Database].[$Schema].[$TableRequests] WHERE UserId = 'REPLACESID' Order By TimeStamp Desc
"@
$InsertTableRequests = @"
INSERT INTO [$Database].[$Schema].[$TableRequests](UserId,ComputerName,ComputerNameByAddress,ComputerIPAddress,ComputerNameMatchAddress,Timestamp)
VALUES ('{0}','{1}','{2}','{3}','{4}','{5}')
"@

$InsertTableFailedRequests = @"
INSERT INTO [$Database].[$Schema].[$TableFailedRequests](UserId,ComputerName,ComputerNameByAddress,ComputerIPAddress,ComputerNameMatchAddress,Error,Timestamp)
VALUES ('{0}','{1}','{2}','{3}','{4}','{5}','{6}')
"@
}
process {
if ($PSCmdlet.ShouldProcess($ComputerName)) {
Expand All @@ -49,7 +93,7 @@ FROM [$Database].[$Schema].[$TableRequests] WHERE UserId = 'REPLACESID' Order By

$PolicySQLQuery = $BasePolicyQuery -replace 'REPLACESID', ("'{0}'" -f ($Request.UserPolicyGroups -join "', '"))
try {
[Object[]]$Policies = Invoke-DbaQuery -SqlInstance $SqlInstance -Database $Database -Query $PolicySQLQuery -ErrorAction Stop | Sort-Object -Property Computers
[Object[]]$Policies = Invoke-SQL -dataSource $SqlInstance -Database $Database -sqlCommand $PolicySQLQuery -ErrorAction Stop | Sort-Object -Property Computers
$Policy = $Policies[0]
# Preferably log that the user has more than one policy if ($Policies.Count -gt 1)
}
Expand All @@ -58,7 +102,7 @@ FROM [$Database].[$Schema].[$TableRequests] WHERE UserId = 'REPLACESID' Order By
}

$PastLaterSQLQuery = $BasePastLaterQuery -replace 'REPLACESID', $Request.UserId
[Object[]]$PastLater = Invoke-DbaQuery -SqlInstance $SqlInstance -Database $Database -Query $PastLaterSQLQuery -ErrorAction Stop
[Object[]]$PastLater = Invoke-SQL -dataSource $SqlInstance -Database $Database -sqlCommand $PastLaterSQLQuery -ErrorAction Stop

$Request.psobject.Properties.Remove('UserPolicyGroups')
$Now = [datetime]::Now
Expand Down Expand Up @@ -95,18 +139,21 @@ FROM [$Database].[$Schema].[$TableRequests] WHERE UserId = 'REPLACESID' Order By
}
if ($ThrottleReached) {
$Request | Add-Member -MemberType NoteProperty -Name Error -Value $ErrorNotification -ErrorAction Stop
$Request | Write-DbaDbTableData -SqlInstance $SqlInstance -Database $Database -Table $TableFailedRequests -ErrorAction Stop
$InsertTableFailedRequestsValues = $InsertTableFailedRequests -f $Request.UserId,$Request.ComputerName,$Request.ComputerNameByAddress,$Request.ComputerIPAddress,$Request.ComputerNameMatchAddress,$Request.Error,$Now
Invoke-SQL -dataSource $SqlInstance -Database $Database -sqlCommand $InsertTableFailedRequestsValues -ErrorAction Stop
throw [System.AccessViolationException]::New($ErrorNotification -replace ($Request.UserId, ($PSSenderInfo.ConnectedUser -replace '^(?:.+\\)')))
}
}
try {
Get-AdmPwdPassword -ComputerName $ComputerName -ErrorAction Stop
$Request | Write-DbaDbTableData -SqlInstance $SqlInstance -Database $Database -Table $TableRequests -ErrorAction Stop
$InsertTableRequestsValues = $InsertTableRequests -f $Request.UserId,$Request.ComputerName,$Request.ComputerNameByAddress,$Request.ComputerIPAddress,$Request.ComputerNameMatchAddress,$Now
Invoke-SQL -dataSource $SqlInstance -Database $Database -sqlCommand $InsertTableRequestsValues -ErrorAction Stop
}
catch {
$ErrorNotification = 'Unknown error: {0}' -f $_.Exception.Message
$Request | Add-Member -MemberType NoteProperty -Name Error -Value $ErrorNotification -ErrorAction Stop
$Request | Write-DbaDbTableData -SqlInstance $SqlInstance -Database $Database -Table $TableFailedRequests -ErrorAction Stop
$InsertTableFailedRequestsValues = $InsertTableFailedRequests -f $Request.UserId,$Request.ComputerName,$Request.ComputerNameByAddress,$Request.ComputerIPAddress,$Request.ComputerNameMatchAddress,$Request.Error,$Now
Invoke-SQL -dataSource $SqlInstance -Database $Database -sqlCommand $InsertTableFailedRequestsValues -ErrorAction Stop
throw [System.SystemException]::New($ErrorNotification)
}
}
Expand Down
45 changes: 43 additions & 2 deletions src/Public/Reset-CurrentComputerLATER.ps1
Original file line number Diff line number Diff line change
@@ -1,4 +1,39 @@
function Reset-CurrentComputerLATER {
function Invoke-SQL {
<#
.SYNOPSIS
Used to query a database using ADO .Net

.DESCRIPTION
Used to query a database using ADO .Net

.EXAMPLE
Invoke-SQL -dataSource $SqlInstance -Database $Database -sqlCommand $PolicySQLQuery

#>
param(
[string] $dataSource = ".\SQLEXPRESS",
[string] $database = "MasterData",
[string] $sqlCommand = $(throw "Please specify a query.")
)

$connectionString = "Data Source=$dataSource; " +
"Integrated Security=SSPI; " +
"Initial Catalog=$database"

$connection = new-object system.data.SqlClient.SQLConnection($connectionString)
$command = new-object system.data.sqlclient.sqlcommand($sqlCommand,$connection)
$connection.Open()

$adapter = New-Object System.Data.sqlclient.sqlDataAdapter $command
$dataset = New-Object System.Data.DataSet
$adapter.Fill($dataSet) | Out-Null

$connection.Close()
$dataSet.Tables

}

function Reset-CurrentComputerLATER {
<#
.SYNOPSIS
Reset admin password for given computer
Expand Down Expand Up @@ -27,14 +62,20 @@
[string]$TablePasswordResets = 'PasswordResets'
}
process {
$InsertTablePasswordResets = @"
INSERT INTO [$Database].[$Schema].[$TablePasswordResets](UserId,Status,ComputerName,ComputerNameByAddress,ComputerIPAddress,ComputerNameMatchAddress,Timestamp)
VALUES ('{0}','{1}','{2}','{3}','{4}','{5}','{6}')
"@
if ($PSCmdlet.ShouldProcess($ComputerName)) {
try {
$Request = Get-LaterRequesterInfo -ComputerName $ComputerName -ErrorAction Stop
$Request.psobject.Properties.Remove('UserPolicyGroups')

$Now = [datetime]::Now
$Reset = Reset-AdmPwdPassword -ComputerName $ComputerName -ErrorAction Stop
$Request | Add-Member -MemberType NoteProperty -Name Status -Value $Reset.Status -ErrorAction Stop
$Request | Write-DbaDbTableData -SqlInstance $SqlInstance -Database $Database -Table $TablePasswordResets -ErrorAction Stop
$InsertTablePasswordResetsValues = $InsertTablePasswordResets -f $Request.UserId,$Request.Status,$Request.ComputerName,$Request.ComputerNameByAddress,$Request.ComputerIPAddress,$Request.ComputerNameMatchAddress,$Now
Invoke-SQL -dataSource $SqlInstance -Database $Database -sqlCommand $InsertTablePasswordResetsValues -ErrorAction Stop
}
catch {
$PSCmdlet.ThrowTerminatingError($_)
Expand Down