如何自动响应powershell.exe不受信任的发布者提示

时间:2017-08-23 22:28:14

标签: powershell

我有自己的本地自定义证书我创建并签署了PowerShell脚本。当我在另一个Windows系统上执行自签名的ps1脚本时,将执行策略设置为" Allsigned"在批处理文件中运行powershell.exe行时,我会得到以下提示..

powershell.exe -nologo -file" C:\ Users \ admin \ Desktop \ test \ test.ps1"

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:26.+'
compile 'com.android.support:preference-v7:23.4.0'
compile 'com.android.support:design:26.+'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.afollestad.material-dialogs:core:0.9.4.7'
compile 'com.afollestad.material-dialogs:commons:0.9.4.7'
compile 'com.android.support:support-v4:26.+'
testCompile 'junit:junit:4.12'
}

我无法为powershell.exe运行-bypass模式,所以这是不可能的。所以我试图找到一种方法用R自动响应这个提示。看起来好像提示是在powershell本身内而不是来自windows cmd行。我尝试在批处理文件中回显R

Do you want to run software from this untrusted publisher?

File C:\Users\admin\Desktop\test\test.ps1 is published by CN=get_test PowerShell and is not trusted on your system. Only run scripts
from trusted publishers.

[V] Never run  [D] Do not run  [R] Run once  [A] Always run  [?] Help

(default is "D"):

但仍然没有奏效。我查看了powershell.exe选项,并没有看到通过参数响应的方法,而不是设置-bypass模式,这是我在环境中无法做到的。

是否有任何已知的方法来编码从powershell.exe响应此提示?或者除非你能用-bypass模式执行,否则它是不可能的?感谢

2 个答案:

答案 0 :(得分:1)

尝试在目标计算机上运行以下脚本:

powershell.exe -ExecutionPolicy bypass -c " . 'path_to_script.ps1';"

如果您无法继续运行,那么正如john所评论的那样,您的组织已制定严格的策略来阻止Powershell脚本执行。

http://www.techrepublic.com/blog/the-enterprise-cloud/set-the-powershell-execution-policy-via-group-policy/

中描述了组策略示例

在这种情况下,您需要签署涉及以下内容的代码:

  1. 请求具有扩展密钥用法的证书,名为codeSigning(1.3.6.1.5.5.7.3.3)
  2. 将已颁发的证书导入目标计算机上的受信任发布者
  3. 您可以先阅读https://www.darkoperator.com/blog/2013/3/5/powershell-basics-execution-policy-part-1.html

答案 1 :(得分:0)

如果您需要在脚本/CI 管道中禁用该安全提示,您还可以在运行脚本之前执行以下操作:

Set-ExecutionPolicy Bypass -Scope Process -Force
# and then, for example:
venv\Scripts\Activate.ps1
# or
C:\Users\admin\Desktop\test\test.ps1