Назад | Перейти на главную страницу

Передача учетных данных разблокировки в сценарий PowerShell

У меня есть сценарий PowerShell, который запускается как запланированная задача и запускается для запуска «Разблокировка на рабочей станции». Сценарий запрограммирован на повторное подключение SSTP VPN-соединения, если соединение прерывается во время блокировки рабочей станции. Я хотел бы передать имя пользователя и пароль в сценарий, чтобы пользователю не предлагалось дважды ввести одну и ту же информацию (один раз для разблокировки рабочей станции, затем еще раз для подключения VPN). Имя пользователя домена и пароль такие же, как имя пользователя vpn и пройти. [System.Security.Principal.WindowsIdentity] :: GetCurrent () не позволит мне получить доступ к паролю текущего пользователя, вошедшего в систему. Есть другой способ ??

Спасибо

Я использую два сценария для сохранения и загрузки учетных данных. Только пользователь, сохранивший учетные данные, может их загрузить.

Конечно, пользователь должен ввести свои учетные данные один раз.

Сохранить-Credential.ps1

param(
    [Parameter(Mandatory=$True)]
    [string]$CredentialName
    )

$path = (([System.IO.Path]::GetDirectoryName($PROFILE.CurrentUserCurrentHost))+ '\Credentials\'+$CredentialName+'.xml')
$dir = ([System.IO.Path]::GetDirectoryName($path))
if((Test-Path ($dir)) -eq $false)
{
    New-Item -Path $dir -ItemType Directory
}

$cred = Get-Credential
$cred | Export-Clixml $path

Load-Credential.ps1

param(
    [Parameter(Mandatory=$True)]
    [string]$CredentialName
    )

$path = (([System.IO.Path]::GetDirectoryName($PROFILE.CurrentUserCurrentHost))+ '\Credentials\'+$CredentialName+'.xml')
if(Test-Path ($path ))
{
    Import-Clixml $path
}else
{
    Write-Host "File $path not found."
}

У объекта учетных данных есть свойство защищенной строки.

AFAIK, из стандартного процесса пользовательского режима (например, Powershell) нет способа получить открытый текстовый пароль текущего пользователя. И это хорошо. Если бы это было так, это была бы довольно большая уязвимость в системе безопасности.

Хотя можно было бы написать Поставщик учетных данных Windows которые могут подключаться к API WinLogon и в конечном итоге получать имя пользователя и пароль в виде открытого текста во время процесса разблокировки, это действительно не правильное решение для того, что вы пытаетесь выполнить. Это также, вероятно, выходит за рамки того уровня программирования, в который вы готовы вникнуть для этого решения.

Если ваше решение VPN действительно интегрировано с вашим доменом, я надеюсь, что оно поддерживает способ использования существующего билета Kerberos пользователя для установления соединения VPN без необходимости снова явно вводить учетные данные пользователя. Однако это будет полностью зависеть от вашего решения VPN. Также предполагается, что решение VPN действительно привязано к вашему домену, а не просто использует дублирующие удостоверения.