是否可以提升powershell脚本的权限,以便没有管理员权限的用户可以运行脚本?我们的网络管理员正在尝试找到更多时间有效的方法来完成某些任务,现在他们必须使用远程桌面...使用PS脚本自动化它们会有所帮助,但用户没有管理员权限。
答案 0 :(得分:8)
任务更像是setuid而不是sudo ...谢天谢地,setuid 可能:你可以简单地创建一个计划任务(没有设定计划),以及将其设置为运行提升。然后,授予用户执行该任务的权限。我前面概述了过程in a blog post以及PowerShell脚本,以帮助创建运行它们的任务和快捷方式。
问题(正如JaredPar所建议的)是你必须确保你计划运行的应用程序升级或“以管理员身份”受到保护,如果你要运行一个脚本,尤其如此。确保没有人,但管理员可以编辑或替换该脚本,或者您正在向王国赠送众所周知的密钥。
答案 1 :(得分:6)
如果您使用的是V2,则可以使用the PowerShell Team Blog
上的以下内容Start-Process "$psHome\powershell.exe" -Verb Runas -ArgumentList '-command "Get-Process"'
这将以管理员身份运行“Get-Process”。
如果您没有V2,可以创建一个StartInfo对象并将Verb设置为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)
}
I have a blog post更多地讨论了使用System.Diagnostics.ProcessStartInfo对象。
答案 2 :(得分:4)
Powershell社区扩展包含一个cmdlet,别名为'su'。 http://www.codeplex.com/Pscx
答案 3 :(得分:1)
听起来你正在寻找Windows中的sudo等价物。 Sudo不是Windows所固有的,因为它适用于大多数Unix风格的环境。但是有几种可用的工具非常接近。
在使用这些类型的工具时要小心。未加硬化的脚本+ sudo是一种安全风险。
答案 4 :(得分:1)
首先choco install pscx
通过http://chocolatey.org/(您可能需要重新启动shell环境)
然后启用psxc
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser #allows scripts to run from the interwebs, such as pcsx
然后使用Invoke-Elevated
Invoke-Elevated {Add-PathVariable $args[0] -Target Machine} -ArgumentList $MY_NEW_DIR