【问题标题】:New to Powershell: elevating a scriptPowershell 新手:提升脚本
【发布时间】:2022-10-25 03:38:33
【问题描述】:

我最近一直在使用 powershell 脚本来简化我的工作,并且到目前为止取得了巨大的成功,尽管经过了一些努力。我创建了一些脚本来打开 ADUC、Comp 管理和其他一些处于提升状态的东西,但我遇到了以下脚本的问题。

基本代码:

$Workstation = Read-Host "Workstation\IP Address"
$Username = Read-Host "Username"
$AdminGroup = [ADSI]"WinNT://$Workstation/Administrators,group"
$User = [ADSI]"WinNT://USA/$Username,user"
$AdminGroup.Add($User.Path)
pause

如果我右键单击并以管理员身份运行它,它可以工作,但是一旦我尝试添加任何内容以强制它在提升状态下运行,它似乎正在处理,但是当我检查管理员组时它不会出现工作过。我的代码可能完全偏离了这里,所以任何帮助表示赞赏,我对此很陌生。我一直在搜索谷歌和其他论坛,但没有找到任何有效的方法。我尝试过的其他代码:

runas /netonly /user:USA\adm$env:USERNAME "$AdminGroup.Add($User.Path)"

上面的代码将是首选方法,因为它允许用户使用自动填充的管理员帐户来提升它,因此他们只需要输入密码。当我这样做时,它会提示输入密码并具有正确的用户名,代码会处理并且我没有收到任何错误,但不会将用户添加到管理员组。

我也试过这个,但这里也没有成功。

$arg = "$AdminGroup.Add($User.Path)"
start-process powershell -Verb runas $arg
pause

在过去的几天里,我也尝试了其他一些事情,但我觉得我现在只是在兜圈子。我得到的最好的方法是创建脚本的快捷方式并将其设置为以管理员身份运行。但是,我希望能够删除在 UAC 中输入用户名的部分,并在出现提示时让它在 powershell 窗口中请求密码。我也尝试在这里搜索,但没有任何成功。也许这是我在寻找解决方案时使用的上下文?非常感谢对新手的任何帮助/建议!

【问题讨论】:

    标签: powershell-5.1


    【解决方案1】:

    我假设您的 PowerShell 已经在管理员中运行 - 如果没有,您将需要按照我的建议这样做。

    从 PowerShell 运行程序将始终使用您用于打开该 PowerShell 实例的凭据打开它,因此幸运的是不需要任何花哨的东西。只需输入启动器的名称(不确定如何调用 .exe 和 .msc 等文件)即可从 shell 启动应用程序。一个示例是 Active Directory - 如果您输入 dsa.msc,它将从 powershell 启动 - 如果您以管理员身份打开 powershell,它将在管理员中启动。

    考虑到这一点,您还可以将 aduc 或任何其他程序的 .exe 设置为从函数开始 - 然后为函数指定别名以缩短键入时间。

    这是我会做什么的例子:

    Set-Alias -Name dw -Value Start-Dameware
    Set-Alias -Name aduc -Value Start-ActiveDirectory
    Set-Alias -Name adm -Value Run-AdminInstance
    
    Function Start-Dameware{
        start "C:Program Files (x86)SolarWindsDameware Remote SupportDWRCC.exe"
    }
    
    Function Start-ActiveDirectory{
        start "C:windowssystem32dsa.msc"
    }
    

    如果你想从一个函数中运行它,你可以将它添加到脚本中:

    Function Run-AdminInstance{
        $Application = $(Read-Host "Please enter what you want to run")
            if($Application -eq "aduc"){
                Start-ActiveDirectory
            }
            if($Application -eq "dw"){
                Start-Dameware
            }
    
    }
    

    等等

    这只是我对构建类似您所要求的东西的看法-我不确定有多少其他人会走这条路。

    我希望这是有帮助的!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多