Wenn dieses Skript ausgeführt wird (ohne erhöhte Rechte), fragt es nach einem Kennwort und ordnet OneDrive zu. Anschließend startet es automatisch Powershell (mit erhöhten Rechten) und fragt erneut nach dem Kennwort für Bitlocker.
Wenn für OneDrive und Bitlocker ein einzelnes Passwort verwendet wird, wie kann man es so einrichten, dass nur einmal ein Passwort erforderlich ist? Oder ist es möglich, eine Variable (die das vom Benutzer eingegebene Passwort enthält) an eine neue Powershell mit erhöhten Rechten zu übergeben, die in einem Skript zum Entsperren von Bitlocker verwendet werden kann?
#
# (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"