12

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

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

4

5 回答 5

19

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

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser

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

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

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

但是,如果您的域管理员使用“打开脚本执行”组策略,您将根本无法更改您的执行策略。组策略设置使Set-ExecutionPolicy cmdlet 无效。

于 2012-11-05T06:10:32.617 回答
17

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

powershell.exe -ExecutionPolicy 绕过

于 2012-11-03T20:01:49.290 回答
3

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

type myscript.ps1 | powershell -

如此简单,这让我想知道为什么你不能一开始就运行 ps1,但我们开始了。

提示用户输入以键入脚本名称的通用版本将是:

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

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

于 2017-10-19T17:39:35.103 回答
2

how about

$script = Get-Content .\test.ps1
Invoke-Expression $script
于 2012-11-04T16:32:52.913 回答
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/

于 2012-11-05T14:42:05.310 回答