提升Powershell脚本

提升Powershell脚本,powershell,permissions,scripting,Powershell,Permissions,Scripting,是否可以提升powershell脚本的权限,以便没有管理员权限的用户可以运行该脚本?我们的网络管理员正试图找到更省时的方法来完成某些任务,这些任务现在必须使用远程桌面来完成……使用PS脚本将其自动化会有所帮助,但用户没有管理员权限。听起来您在windows中寻找一个类似的工具。Sudo并不像大多数Unix风格的环境那样是Windows固有的。但是,有几种工具是完全等效的 不过,在使用这些类型的工具时要小心。未硬化的脚本+sudo是一种安全风险。如果您使用的是V2,您可以使用下面的 这将以

是否可以提升powershell脚本的权限,以便没有管理员权限的用户可以运行该脚本?我们的网络管理员正试图找到更省时的方法来完成某些任务,这些任务现在必须使用远程桌面来完成……使用PS脚本将其自动化会有所帮助,但用户没有管理员权限。

听起来您在windows中寻找一个类似的工具。Sudo并不像大多数Unix风格的环境那样是Windows固有的。但是,有几种工具是完全等效的


不过,在使用这些类型的工具时要小心。未硬化的脚本+sudo是一种安全风险。

如果您使用的是V2,您可以使用下面的

这将以管理员身份运行“获取进程”

如果没有V2,可以创建StartInfo对象,并将动词设置为如下所示的Runas

function Start-Proc  {   
     param ([string]$exe = $(Throw "An executable must be specified"),[string]$arguments)       

     # Build Startinfo and set options according to parameters  
     $startinfo = new-object System.Diagnostics.ProcessStartInfo   
     $startinfo.FileName = $exe  
     $startinfo.Arguments = $arguments  
     $startinfo.verb = "RunAs"  
     $process = [System.Diagnostics.Process]::Start($startinfo)  

}

我将详细介绍如何使用System.Diagnostics.ProcessStartInfo对象。

该任务更像setuid而不是sudo。。。谢天谢地,setuid可能的:您只需创建一个计划任务(无需设置计划),并将其设置为运行提升的。然后,授予用户执行该任务的权限。我不久前概述了这个过程,并使用PowerShell脚本帮助创建任务和运行任务的快捷方式


问题是(正如JaredPar所建议的那样),您必须确保计划以提升或“管理员身份”运行的应用程序受到保护,如果您要运行脚本,这一点尤其重要。确保除管理员外,没有人可以编辑或替换该脚本,或者您正在向王国分发众所周知的密钥。

Powershell社区扩展为此提供了一个cmdlet,别名为“su”

首先
choco安装pscx
via(您可能需要重新启动shell环境)

然后启用psxc

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser #allows scripts to run from the interwebs, such as pcsx
然后使用
调用提升的

Invoke-Elevated {Add-PathVariable $args[0] -Target Machine} -ArgumentList $MY_NEW_DIR

属于服务器故障。请参阅SF@yea,如果您查看发布该问题的用户…您将看到是我。我把它贴在那里是因为你试图在这里引导我的问题……如果用户不是管理员,那就没用了;)很公平。我把这个问题看得太快了一点。看起来它可能会起作用,你知道它是否也适用于XP吗?死链接。互联网档案激活!
Invoke-Elevated {Add-PathVariable $args[0] -Target Machine} -ArgumentList $MY_NEW_DIR