gpt4 book ai didi

powershell - 如何在自己的代码中提升已经运行的 session

转载 作者:行者123 更新时间:2023-12-04 16:45:19 24 4
gpt4 key购买 nike

我正在编写一个 PowerShell 脚本来配置 Active Directory 中的一些内容。

我需要以特定用户身份运行它,以便获得进程的正确权限,目前我正在通过 .bat 文件运行 .ps1 文件,因此我可以选择“以不同用户身份运行”或“以管理员身份运行”。

我想要实现的是,在脚本中我会要求用户提供正确的凭据,然后提升 session 以使用输入的用户凭据运行。

我试过在我的代码中使用它:

Start-Process powershell.exe -Credential "TestDomain\Me"

但它只是打开一个空的 PS session ,而当前 session 继续运行。

我想使用这段代码从用户那里获取信用:

$msg = "Enter your Domain Admin Credentials"; 
$creds = $Host.UI.PromptForCredential($caption,$msg,"","")
$rstusername = $creds.username;
$rstpassword = $creds.GetNetworkCredential().password

然后使用 $rstusername$rstpassword 来更改运行脚本的凭据。

这可能吗?

最佳答案

当 cmdlet 允许提供显式凭据(参数 -Credential)时,您可以在其他用户的上下文中运行它们,或者通过 Invoke-Command(具有 -Credential 参数)。

例子:

$cred = Get-Credential
Invoke-Command -Computer $env:COMPUTERNAME -ScriptBlock {
# commands here
} -Credential $cred

或者您可以使用类似这样的方法以不同的凭据重新运行整个脚本:

if (-not $env:USERNAME -eq 'Me') {
$cred = Get-Credential
$param = '-NoLogo', '-File', $MyInvocation.MyCommand.Path
Start-Process "powershell.exe" -ArgumentList $param -Credential $cred
exit $LASTEXITCODE
}

# other code here

提升当前 session (或将其“移动”到不同的上下文)是不可能的。

关于powershell - 如何在自己的代码中提升已经运行的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32370223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com