@@ -1321,12 +1321,22 @@ function Request-SPNTicket {
1321
1321
. PARAMETER SPN
1322
1322
1323
1323
The service principal name to request the ticket for. Required.
1324
+
1325
+ . PARAMETER EncPart
1326
+
1327
+ Switch. Return the encrypted portion of the ticket (cipher).
1324
1328
1325
1329
. EXAMPLE
1326
1330
1327
1331
PS C:\> Request-SPNTicket -SPN "HTTP/web.testlab.local"
1328
1332
1329
1333
Request a kerberos service ticket for the specified SPN.
1334
+
1335
+ . EXAMPLE
1336
+
1337
+ PS C:\> Request-SPNTicket -SPN "HTTP/web.testlab.local" -EncPart
1338
+
1339
+ Request a kerberos service ticket for the specified SPN and return the encrypted portion of the ticket.
1330
1340
1331
1341
. EXAMPLE
1332
1342
@@ -1346,7 +1356,11 @@ function Request-SPNTicket {
1346
1356
[Parameter (Mandatory = $True , ValueFromPipelineByPropertyName = $True )]
1347
1357
[Alias (' ServicePrincipalName' )]
1348
1358
[String []]
1349
- $SPN
1359
+ $SPN ,
1360
+
1361
+ [Alias (' EncryptedPart' )]
1362
+ [Switch ]
1363
+ $EncPart
1350
1364
)
1351
1365
1352
1366
begin {
@@ -1356,7 +1370,20 @@ function Request-SPNTicket {
1356
1370
process {
1357
1371
ForEach ($UserSPN in $SPN ) {
1358
1372
Write-Verbose " Requesting ticket for: $UserSPN "
1359
- New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken - ArgumentList $UserSPN
1373
+ if (! $EncPart ) {
1374
+ New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken - ArgumentList $UserSPN
1375
+ }
1376
+ else {
1377
+ $Ticket = New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken - ArgumentList $UserSPN
1378
+ $TicketByteStream = $Ticket.GetRequest ()
1379
+ if ($TicketByteStream )
1380
+ {
1381
+ $TicketHexStream = [System.BitConverter ]::ToString($TicketByteStream ) -replace " -"
1382
+ [System.Collections.ArrayList ]$Parts = ($TicketHexStream -replace ' ^(.*?)04820...(.*)' , ' $2' ) -Split " A48201"
1383
+ $Parts.RemoveAt ($Parts.Count - 1 )
1384
+ $Parts -join " A48201"
1385
+ }
1386
+ }
1360
1387
}
1361
1388
}
1362
1389
}
0 commit comments