gpt4 book ai didi

c# - 如何启动一个新的 powershell 实例并在其中运行命令?

转载 作者:太空狗 更新时间:2023-10-30 00:52:38 24 4
gpt4 key购买 nike

这就是我想要完成的:

我需要用户在登录计算机时自动运行 powershell 脚本,让脚本启动提升的 Powershell 提示符(就像用户可以单击以管理员身份运行 Powershell 一样)然后让它运行一些命令在新的 Powershell 对象中,然后关闭新的 Powershell 对象。

此函数目前将在提升模式下创建并运行一个新的 Powershell 对象。

function Set-Elevation
{
# Create a new process object that starts PowerShell
$newProcess = New-Object System.Diagnostics.ProcessStartInfo "powershell";
# Indicate that the process should be elevated
$newProcess.Verb = "runas";
# Start the new process
[System.Diagnostics.Process]::Start($newProcess) | Out-Null
}

但是,我如何让它在其中运行新命令?之后我将如何关闭该对象?

如有任何关于语法的提示,我们将不胜感激。

最佳答案

您可以使用内置的 Start-Process 命令:

function IsAdministrator
{
$Identity = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$Principal = New-Object System.Security.Principal.WindowsPrincipal($Identity)
$Principal.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)
}

function IsUacEnabled
{
(Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System).EnableLua -ne 0
}

#
# Main script
#
if (!(IsAdministrator))
{
if (IsUacEnabled)
{
[string[]]$argList = @('-NoProfile', '-NoExit', '-File', $MyInvocation.MyCommand.Path)
$argList += $MyInvocation.BoundParameters.GetEnumerator() | Foreach {"-$($_.Key)", "$($_.Value)"}
$argList += $MyInvocation.UnboundArguments
Start-Process PowerShell.exe -Verb Runas -WorkingDirectory $pwd -ArgumentList $argList
return
}
else
{
# Log an error, do nothing or Start-Process -Credentials <admin_creds>
}
}

关于c# - 如何启动一个新的 powershell 实例并在其中运行命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20642502/

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