ASP. NET Сценарии PowerShell не запускаются - PullRequest
0 голосов
/ 02 мая 2020

Я пишу скрипт напрямую. (Import-Module ActiveDirectory). Это не работает.

Сообщение об ошибке:

(Failed to generate proxies for remote module 'ActiveDirectory'. Files cannot be loaded because running scripts is disabled on this system. Provide a valid certificate with which to sign the files).

Пожалуйста, сообщите мне решение.

Также я попытался выполнить команду Set-ExecutionPolicy Unrestricted в cmd 32 и cmd 64 .

var shell = PowerShell.Create();
shell.Commands.AddScript("New-Item -Path 'C:\\Distrib\\file.txt' -ItemType 'File'"); 

Этот скрипт работает:

(PowerShell powerShellInstance = PowerShell.Create())
{powerShellInstance.AddCommand(AppDomain.CurrentDomain.BaseDirectory + \\Powershell\\test.ps1");

test.ps1 не работает:

(New-Item -Path 'C:\\Distrib\\file.txt' -ItemType 'File')

1 Ответ

0 голосов
/ 03 мая 2020

Это не проблема кода PowerShell. Это настройка среды.

Если вы делаете это на предприятии, значит, ваша организация установила политику на вашем компьютере по определенной причине.

Хотя то, что JPBlan c будет работать, если у вас нет возможности изменить этот параметр администраторами org на уровне компьютера, вы все равно не сможете его изменить. Вы можете изменить его для своего уровня пользователя или процесса. Есть несколько уровней для EP, и это хорошо задокументировано.

Set-ExecutionPolicy

Set-ExecutionPolicy
   [-ExecutionPolicy] <ExecutionPolicy>
   [[-Scope] <ExecutionPolicyScope>]
   [-Force]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
Get-ExecutionPolicy -List

Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser    RemoteSigned
 LocalMachine    RemoteSigned

Нет практически никаких причин, чтобы когда-либо использовать неограниченное для повседневного использования PowerShell, особенно в уровень машины. Я всегда рекомендую CurrentUser или Process.

Итак, создайте новый ярлык Powershell для запуска, используя область CurrentUser или Proces, используя RemoteSigned (который является текущим значением по умолчанию в Windows 10 даже на уровне компьютера).

Даже при вызове этого кода используйте область действия CurrentUser или Process и RemoteSigned.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...