如果我尝试更改执行策略,我收到一条消息,说我无法修改注册表,因为我不是管理员。如何在没有管理员权限的情况下运行powershell脚本?
这似乎应该是可能的,因为我可以运行批处理文件和其他.exe和.com程序。
如果我尝试更改执行策略,我收到一条消息,说我无法修改注册表,因为我不是管理员。如何在没有管理员权限的情况下运行powershell脚本?
这似乎应该是可能的,因为我可以运行批处理文件和其他.exe和.com程序。
您可以尝试设置过程本身的策略。
powershell.exe -ExecutionPolicy旁路
怎么样
$script = Get-Content .\test.ps1
Invoke-Expression $script
如果您的域管理员没有禁止它,你可以这样做:
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser
这更改在当前用户下运行的PowerShell会话的默认执行策略,而不是为机器上的所有用户进行设置。
如果你不是想改变执行策略只是当前PowerShell会话,你可以使用这个命令:
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
但是,如果您的域管理员使用“Turn on Script Execution”组策略,你会根本不能改变你的执行策略。组策略设置使Set-ExecutionPolicy cmdlet无效。
我不知道管理员在办公室设置了什么组策略。我想知道策略是否停止了Invoke-Expression技术和-EncodedCommand技术,它们都允许在不修改执行策略的情况下执行脚本文件的内容。 – MatthewMartin
我想不会,但我还没有测试过。如果启用了PowerShell,只需在命令行中输入脚本,即可“运行”脚本。执行策略的目标并不是真正阻止确定的用户,而是防止意识不到的用户意外运行不受信任的脚本。 –
第三种方法,我在别处找到在互联网上是使用
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/
如果你想有一个简单的方法从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
在我看到的3种技术中,这是最简单的。在家工作,在办公室工作。 – MatthewMartin