Ich versuche, das powershell
Skript von c # aus auszuführen .
Zuerst setze ich das ExecutionPolicy
auf Unrestricted
und das Skript läuft jetzt von PowerShell ISE
.
Das ist mein Code:
class Program
{
private static PowerShell ps;
static void Main(string[] args)
{
ps = PowerShell.Create();
string ps1File = Path.Combine(Environment.CurrentDirectory, "script.ps1");
ExecuteScript(ps1File);
Console.ReadLine();
}
static void ExecuteScript(string script)
{
try
{
ps.AddScript(script);
Collection<PSObject> results = ps.Invoke();
Console.WriteLine("Output:");
foreach (var psObject in results)
{
Console.WriteLine(psObject);
}
Console.WriteLine("Non-terminating errors:");
foreach (ErrorRecord err in ps.Streams.Error)
{
Console.WriteLine(err.ToString());
}
}
catch (RuntimeException ex)
{
Console.WriteLine("Terminating error:");
Console.WriteLine(ex.Message);
}
}
}
Und die Ausgabe ist:
ps1 kann nicht geladen werden, da das Ausführen von Skripten auf diesem System deaktiviert ist. Weitere Informationen finden Sie unter about_Execution_Policies unter http://go.microsoft.com/fwlink/?LinkID=135170 .
c#
powershell
user979033
quelle
quelle
Get-ExecutionPolicy -List
Ihre Frage mit den Ergebnissen aus und bearbeiten Sie sie. Dieser Befehl zeigt Ihnen die verschiedenen Bereiche und ihre ExecutionPolicy-Einstellung.Antworten:
Dies kann daran liegen, dass der aktuelle Benutzer eine undefinierte hat
ExecutionPolicy
.Sie könnten Folgendes versuchen:
quelle
Powershell
Windows Cmd ausgeführt werden.Unrestricted
bedeutet, dass Sie alle Skripte ausführen können. Eine andere Möglichkeit hierfür wäre, die Ausführungsrichtlinie so einzustellen,RemoteSigned
wie dies zulässig ist.Allow local scripts and remote signed scripts
Abhängig von der Anwendung und ihren Aktionen kann dies jedoch immer noch den gleichen Fehler auslösen. Ich denke, Ihr Ansatz ist in Bezug auf die Sicherheit gültig und Sie können jederzeit lesen, was die Richtlinie ist, bevor Sie sie verwendenGet-ExecutionPloicy
. Obwohl dies gesagt wird, ist der Umfang der aktuelle Benutzer, so dass das Risiko meiner Meinung nach gering ist. Ich hoffe das hilft.Öffnen Sie Powershell im Verwaltungsmodus und führen Sie den folgenden Befehl aus
quelle
Führen Sie diesen Code in Ihrer Powershell oder Cmd aus
quelle
Wenn Sie Visual Studio-Code verwenden:
Dies hängt mit der Ausführung von Winkelmessertestskripten zusammen, und ich hatte das gleiche Problem und es wurde auf diese Weise behoben.
quelle
Die folgenden drei Schritte werden verwendet, um zu beheben, dass das Ausführen von Skripten bei diesem Systemfehler deaktiviert ist
Schritt 1: Um dieses Problem zu beheben, müssen Sie die Power Shell im Administratormodus starten.
Schritt 2: Geben Sie den folgenden Befehlssatz ein: ExecutionPolicy RemoteSigned Schritt 3: Drücken Sie Y für Ihre Bestätigung.
Weitere Informationen finden Sie unter https://youtu.be/J_596H-sWsk
quelle
Die PowerShell-Ausführungsrichtlinie ist standardmäßig auf "Eingeschränkt" eingestellt. Sie können die PowerShell-Ausführungsrichtlinien mit dem Cmdlet Set-ExecutionPolicy ändern. Zum Ausführen außerhalb des Skripts setzen Sie die Richtlinie auf RemoteSigned.
PS C:> Set-ExecutionPolicy RemoteSigned Nachfolgend finden Sie eine Liste von vier verschiedenen Ausführungsrichtlinien in PowerShell
Eingeschränkt - Es können keine Skripte ausgeführt werden. AllSigned - Es können nur Skripte ausgeführt werden, die von einem vertrauenswürdigen Herausgeber signiert wurden. RemoteSigned - Heruntergeladene Skripte müssen von einem vertrauenswürdigen Herausgeber signiert sein. Uneingeschränkt - Alle Windows PowerShell-Skripts können ausgeführt werden.
quelle
Öffnen Sie Windows Powershell im Administratormodus und führen Sie den folgenden Befehl und seine Arbeit VOILA aus!
quelle
Eine andere Lösung besteht darin, ng.ps1 aus dem Verzeichnis C: \ Benutzer% Benutzername% \ AppData \ Roaming \ npm \ zu entfernen und den npm-Cache zu löschen
quelle
Ich denke, Sie können die Powershell im Verwaltungsmodus oder in der Eingabeaufforderung verwenden.
quelle