При запуске этого скрипта (без повышенных привилегий) он запрашивает пароль и подключает один диск, а затем автоматически запускает PowerShell (с повышенными привилегиями) и снова запрашивает пароль для BitLocker.
Если для onedrive и bitlocker используется один пароль, как сделать так, чтобы он требовал пароль один раз? Или можно передать переменную (содержащую пароль, введенный пользователем) в новый повышенный powershell для использования в скрипте для разблокировки bitlocker?
#
# (FIRST SET EXECUTION POLICY WITH ELEVATED POWERSHELL) Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
#
param([switch]$Elevated)
function Test-Admin {
$currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
$currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}
if ((Test-Admin) -eq $false) {
if ($elevated) {
'tried to elevate, did not work'
} else {
### START - CODE FOR "NON-ELEVATED POWERSHELL"
$pwd = Read-Host 'Enter PW:' -AsSecureString
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pwd)
$UnsecurePassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
net use O: "https://d.docs.live.net/EXAMPLE-CID" /user:[email protected] $UnsecurePassword /p:no
### END - CODE FOR "NON-ELEVATED POWERSHELL"
# RUN "ELEVATED POWERSHELL"
Start-Process powershell.exe -Verb RunAs -ArgumentList ('-noprofile -noexit -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition))
}
exit
}
### START - CODE FOR "ELEVATED POWERSHELL"
$pwd = Read-Host 'Enter PW:' -AsSecureString
Unlock-BitLocker -MountPoint "D:" -Password $pwd
exit
### END - CODE FOR "ELEVATED POWERSHELL"