Wie kann ich PowerShell-Skripts aus freigegebenen VirtualBox-Ordnern ausführen, wenn ich eine remote signierte Ausführungsrichtlinie verwende?

3

Ich verwende VirtualBox mit einem freigegebenen Ordner, der Laufwerk E zugeordnet ist. Ich möchte ein PowerShell-Skript von Laufwerk E: ausführen. Ich setze:

Set-ExecutionPolicy Remotesigned

Ich habe file://vboxserverdas lokale Intranet mithilfe des erweiterten Dialogfelds erweitert.

Wenn ich "E:\System_Data_SQLClient_test.ps1"in PowerShell ISE lade, erhalte ich:

Datei E: \ System_Data_SQLClient_test.ps1 kann nicht geladen werden. Die Datei E: \ System_Data_SQLClient_test.ps1 ist nicht digital signiert. Das Skript wird auf dem System nicht ausgeführt. Weitere Informationen finden Sie unter "get-help about_signing".

In der Zeile: 0 Zeichen: 0

Wenn ich den UNC-Pfad zum freigegebenen Ordner verwende, funktioniert Folgendes:

\\VBOXSVR\WSV-BK-7en64-C\System_Data_SQLClient_test.ps1

Was fehlt hier, um über Laufwerksbuchstaben auf das Skript zugreifen zu können?

bernd_k
quelle
Wie führt man den Befehl über den Pfad unc aus? Ich versuche, die gleichen Dinge mit einem einfachen String-Ausgabeskript zu tun, aber es verursacht den gleichen Fehler, als würde ich versuchen, es mit dem Laufwerksbuchstaben auszuführen. Wenn ich lesen Sie Problem , das ich zuerst obwohl es te Situation bezieht sich hier beschrieben blogs.technet.com/b/heyscriptingguy/archive/2011/01/04/... aber die Dateieigenschaften von jeder Datei in der Aktie nach dem Check sehe ich , dass sie Ich habe keine Zonenkennung, daher ist das Problem eine andere Sache. Vielleicht ist der Dateityp der Freigabe ein komisches VBoxSharedFolderFS
mjsr
Ich benutze immer ISE. Ich lade das Skript entweder von einer lokalen Festplatte, über unc aus dem freigegebenen Ordner oder über einen Laufwerksbuchstaben aus dem letzteren freigegebenen Ordner.
bernd_k
Ich ändere die Ausführungsrichtlinie auf "uneingeschränkt" und möglicherweise wird mir eine Sicherheitswarnung angezeigt. In dieser Meldung muss ich "einmal ausführen" auswählen und das Skript ausführen. Aber seltsam ist, dass erkannt wird, dass es sich um einen externen Speicherort handelt, auch wenn die Dateien nicht über den Zone.Identifier verfügen. Ich denke, dass definitiv etwas damit zu tun hat, wie VirtualBox diese Freigabe erstellt.
mjsr

Antworten:

4

bernd_k ich habe eine schöne lösung gefunden, um das gesamte script auszuführen, das du im freigegebenen ordner hast, erstelle einen verzeichnis-symlink zur freigabe, das ist alles !!

Angenommen, der tatsächliche Speicherort ist c: \ users \ x. Führen Sie dies in cmd als admin aus:

 mklink /d NameforMyScriptFolder \\vboxsvr\share\RealScriptFolder

Wechseln Sie dann in diesem Ordner in Powershell als normaler Benutzer und führen Sie das aus, was Sie möchten:

  cd c:\users\x\NameforMy*
  executewhateverscript.ps1 #:D

pd: ändere den Namen der Frage, weil er nicht das widerspiegelt, was du wirklich fragst.

mjsr
quelle
Bitte verbessern Sie Ihre Antwort, indem Sie hinzufügen, dass Sie 'file: // vboxsvr' zu lokalen Intranetsites hinzufügen müssen.
bernd_k
Hallo bernd_k Ich weiß nicht, was Sie mit "zu lokalen Intranetseiten hinzufügen" meinen. Können Sie mir mehr darüber erzählen? ... und in meiner Konfiguration war das Einzige, was ich brauchte, die Ausführungsrichtlinie als remotesigniert festzulegen und zu erstellen der symlink
mjsr 10.10.11
Sie haben anscheinend einige Sicherheitsstandards reduziert. Um Ihnen einen Hinweis zu geben, vgl. stackoverflow.com/questions/1559969/… und stackoverflow.com/questions/972345/… . Normalerweise mache ich das mit der GUI, sorry ich finde keinen Link mit Bildern. Sie müssen IE | starten Werkzeuge | Internetoptionen | Sicherheit | lokales Intranet | sites | Fortgeschritten. Dort können Sie folgende Datei hinzufügen: // vboxsvr.
bernd_k
mmm Ich denke, das ist völlig unnötig und hat nichts mit der Ausführung von Powershell-Skripten zu tun. Entfernen Sie es aus der vertrauenswürdigen Liste und versuchen Sie, die Skripten
auszuführen
Für mich ist es definitiv notwendig, wenn sich das Skript nicht auf einem lokalen Laufwerk befindet. Ich habe es 2 Mal überprüft.
bernd_k
1

Ich habe endlich die funktionierende Lösung gefunden

Add file://vboxsvr to Local Intranet Sites

Set-ExecutionPolicy RemoteSigned

mklink /d hostfiles \\VBOXSVR\WSV-BK-7en64-C

Vielen Dank an voodoomsr, der auf diese Weise die Vermeidung von Laufwerksbuchstaben ermöglicht hat.

Das Hauptproblem besteht darin, sich beim Hinzufügen der Freigabe zum lokalen Intranet an die richtige Syntax zu erinnern.

bernd_k
quelle