如何在没有管理员权限的情况下运行powershell脚本?

时间:2012-11-03 19:30:24

标签: powershell

如果我尝试更改执行策略,我会收到一条消息,说我无法修改注册表,因为我不是管理员。

似乎这应该是可能的,因为我可以运行批处理文件和其他.exe和.com程序。

5 个答案:

答案 0 :(得分:13)

如果您的域管理员没有禁止它,您可以这样做:

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser

这会更改在当前用户下运行的PowerShell会话的默认执行策略,而不是为计算机上的所有用户设置它。

如果您只想更改当前PowerShell会话的执行策略,则可以使用此命令:

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

但是,如果您的域管理员使用“Turn on Script Execution”组策略,则根本无法更改执行策略。组策略设置使Set-ExecutionPolicy cmdlet无效。

答案 1 :(得分:10)

您可以尝试设置流程本身的策略。

  

powershell.exe -ExecutionPolicy bypass

答案 2 :(得分:2)

怎么样

$script = Get-Content .\test.ps1
Invoke-Expression $script

答案 3 :(得分:2)

如果您希望有一种简单的方法从Windows shell运行脚本myscript.ps1,那么您只需要一个具有以下内容的bat Runmyscript.bat

type myscript.ps1 | powershell -

这么简单,让我想知道你为什么不能首先运行ps1,但我们去了。

提示userinput键入脚本名称的通用版本为:

set /p filename="Type name of script here: "
type %filename% | powershell -

我想如果你愿意的话,你也可以编写一个通用的vbscript脚本,使用这个http://todayguesswhat.blogspot.co.uk/2012/08/windows-7-replacement-for.html

的对话框在powershell中打开任何文件

答案 4 :(得分:0)

我在互联网上其他地方找到的第三种技术是使用

powershell.exe -EncodedCommand XXXXXXX

其中XXXXXXX是

的结果
$code = {
     #powershell script goes here.
    }
}

[convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($code))

价: http://dmitrysotnikov.wordpress.com/2008/06/27/powershell-script-in-a-bat-file/