2012-11-03 116 views

回答

8

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

powershell.exe -ExecutionPolicy旁路

+0

在我看到的3种技术中,这是最简单的。在家工作,在办公室工作。 – MatthewMartin

2

怎么样

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

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

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser 

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

如果你不是想改变执行策略只是当前PowerShell会话,你可以使用这个命令:

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process 

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

+0

我不知道管理员在办公室设置了什么组策略。我想知道策略是否停止了Invoke-Expression技术和-EncodedCommand技术,它们都允许在不修改执行策略的情况下执行脚本文件的内容。 – MatthewMartin

+0

我想不会,但我还没有测试过。如果启用了PowerShell,只需在命令行中输入脚本,即可“运行”脚本。执行策略的目标并不是真正阻止确定的用户,而是防止意识不到的用户意外运行不受信任的脚本。 –

0

如果你想有一个简单的方法从windows shell运行脚本myscript.ps1那么所有你需要的是一个蝙蝠Runmyscript.bat具有以下内容:

type myscript.ps1 | powershell - 

如此简单,它使我不知道为什么你不能只是跑在首位的PS1,但是我们走。

,提示用户对userinput键入脚本名称的通用版本是:

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

我想,如果你愿意,你也可以写,使用打开任何文件在PowerShell中通用的VBScript脚本一个对话框使用这个http://todayguesswhat.blogspot.co.uk/2012/08/windows-7-replacement-for.html

相关问题