Ich verteile ein PowerShell-Skript an mein Team. Das Skript ruft eine IP-Adresse vom Vsphere-Client ab, stellt eine mstsc-Verbindung her und protokolliert sie in einer freigegebenen Datei.
In dem Moment, als sie das Skript verwendeten, lernten sie die IP-Adresse des Computers kennen. Danach verwenden sie mstsc immer direkt, anstatt das PowerShell-Skript auszuführen. (Da sie mstsc verwenden, kann ich nicht wissen, ob sie die VM häufig verwenden oder nicht.)
Hauptsächlich sagen sie mir, dass das Ausführen von PowerShell nicht einfach ist.
Ich bin krank von ihrer Faulheit.
Gibt es eine Möglichkeit, ein PowerShell-Skript durch Doppelklicken auf eine .ps1-Datei zum Laufen zu bringen?
powershell
powershell-2.0
Samselvaprabu
quelle
quelle
Antworten:
Erstellen Sie eine Verknüpfung mit so etwas wie "Ziel":
quelle
-NoProfile
ist auch hilfreich, da das Profil alle möglichen Dinge tun kann, die das Skript nicht erwartet.Wenn Sie möchten, dass alle PS1-Dateien wie VBS-Dateien funktionieren, können Sie die Registrierung folgendermaßen bearbeiten:
Bearbeiten Sie den Standardwert so, dass er ungefähr so ist ...
Dann können Sie einfach alle Ihre .PS1-Dateien doppelklicken, wie Sie möchten. meiner bescheidenen Meinung nach in der Lage sein, aus der Box.
Ich werde das "The Powershell De-Castration Hack" nennen. LOL viel Spaß!
quelle
"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NoLogo -File "%1"%*
optional einschließen-ExecutionPolicy unrestricted
. Beachten Sie die Änderung am Ende des Befehls, mit der null oder mehr Parameter an das PowerShell-Skript übergeben werden können. Anführungszeichen und Abstände um die Prozentzeichen sollten genau wie gezeigt sein.ftype Microsoft.PowerShellScript.1=^"^%SystemRoot^%\System32\WindowsPowerShell\v1.0\powershell.exe^" -NoLogo -ExecutionPolicy Unrestricted -File ^"%1^" %*
um dasselbe zu erreichen.Beachten Sie, dass eine der Sicherheitsfunktionen von PowerShell darin besteht, dass Benutzer Skripts NICHT mit einem Doppelklick starten können. Seien Sie sehr vorsichtig, wenn Sie diese Einstellung ändern. Eine Alternative könnte darin bestehen, Ihr Skript zu verpacken. Einige Editoren wie PrimalScript können das. Die Benutzer müssen PowerShell noch installieren, können dann aber auf die Exe doppelklicken. Und es hört sich so an, als ob Ihr Team ein wenig Bildung braucht.
quelle
Dies funktionierte für mich unter Windows 10 und Powershell 5.1:
quelle
Set-ExecutionPolicy
).Ich habe das vor ein paar Jahren geschrieben (mit Administratorrechten ausführen):
quelle
Sie müssen die Registrierung optimieren. Konfigurieren Sie zunächst ein PSDrive für HKEY_CLASSES_ROOT, da dies nicht standardmäßig eingerichtet ist. Der Befehl hierfür lautet:
Jetzt können Sie in HKEY_CLASSES_ROOT wie in den regulären HKCU- und HKLM-PSDrives in Registrierungsschlüsseln und -werten navigieren und diese bearbeiten.
So konfigurieren Sie einen Doppelklick, um PowerShell-Skripts direkt zu starten:
So konfigurieren Sie einen Doppelklick zum Öffnen von PowerShell-Skripten in der PowerShell ISE:
So stellen Sie den Standardwert wieder her (legt einen Doppelklick fest, um PowerShell-Skripts im Editor zu öffnen):
quelle
Ich bin damit einverstanden, dass das Festlegen einer Systemeinstellung etwas viel sein kann, aber die Verknüpfung, die einen fest codierten Pfad erfordert, ist nicht ideal. Eine Fledermausdatei löst das Problem tatsächlich gut
RunMyPowershellScript.bat
Diese Batchdatei kann jetzt doppelt angeklickt werden, Verknüpfungen zur Batchdatei können einfach erstellt werden und das Skript kann in einem beliebigen Ordner bereitgestellt werden.
quelle
Einfache PowerShell-Befehle, um dies in der Registrierung festzulegen.
quelle
ExecutionPolicy RemoteSigned
dass ein zufälliges Skript, das aus dem Netzwerk / Internet heruntergeladen wurde (wobei die Metadaten angeben, dass es nicht lokal erstellt wurde), nicht mit einem Doppelklick ausgeführt wird, sondern mit einer Datei, die Sie durch Kopieren und erstellt haben Das Einfügen von Code in eine .ps1-Datei wird ausgeführt, da diese Metadaten nicht zugeordnet sind.Setzen Sie den Wert zurück, wenn Sie Notepad wieder als Standard verwenden möchten.
quelle
Sie können die Standarddateizuordnung von
ps1
Dateien sopowershell.exe
festlegen, dass Sie ein Powershell-Skript ausführen können, indem Sie darauf doppelklicken.In Windows 10
ps1
DateiOpen with
Choose another app
More apps
Look for another app on this PC
.C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
.Dadurch wird die Dateizuordnung geändert und
ps1
Dateien werden durch Doppelklicken ausgeführt. Sie könnennotepad.exe
das Standardverhalten wiederherstellen, indem Sie die Standard-App festlegen.Quelle
quelle
Fügen Sie eine einfache .cmd-Datei mit meiner gleichnamigen .ps1-Datei in meinen Unterordner ein, sodass ein Skript mit dem Namen "foobar" beispielsweise "foobar.ps1" und "foobar.cmd" enthält. Um die .ps1-Datei auszuführen, muss ich nur im Explorer auf die CMD-Datei klicken oder die CMD-Datei an einer Eingabeaufforderung ausführen. Ich verwende denselben Basisnamen, da die .cmd-Datei automatisch nach der .ps1-Datei mit ihrem eigenen Namen sucht.
Mit pushd / popd können Sie die cmd-Datei über eine Eingabeaufforderung starten, ohne in das spezifische Verzeichnis wechseln zu müssen, in dem sich die Skripte befinden. Es wechselt in das Skriptverzeichnis und kehrt nach Abschluss zum ursprünglichen Verzeichnis zurück.
Sie können die Pause auch deaktivieren, wenn das Befehlsfenster nach Abschluss des Skripts ausgeblendet werden soll.
Wenn mein .ps1-Skript Parameter enthält, fordere ich sie mit GUI-Eingabeaufforderungen mithilfe von .NET Forms auf, mache die Skripte jedoch auch flexibel genug, um Parameter zu akzeptieren, wenn ich sie stattdessen übergeben möchte. Auf diese Weise kann ich im Explorer einfach darauf doppelklicken und muss die Details der Parameter nicht kennen, da ich gefragt werde, was ich brauche, mit Listenfeldern oder anderen Formularen.
quelle
Dies basiert auf der Antwort von KoZm0kNoT. Ich habe es so geändert, dass es über Laufwerke hinweg funktioniert.
Die beiden Pushd / Popds sind erforderlich, wenn sich die CWD des Benutzers auf einem anderen Laufwerk befindet. Ohne den äußeren Satz geht der CWD auf dem Laufwerk mit dem Skript verloren.
quelle
Dies ist, was ich verwende, um Skripte standardmäßig als Administrator auszuführen:
Sie müssen dies als Standardwert in regedit einfügen für:
Oder hier ist ein Skript, das es für Sie erledigt:
quelle
Wenn Sie mit der erweiterten Windows-Verwaltung vertraut sind, können Sie dieses ADM-Paket verwenden (Anweisungen finden Sie auf dieser Seite) und das Ausführen von PowerShell-Skripts nach einem Doppelklick über diese Vorlage und das lokale Gruppenrichtlinienobjekt zulassen. Danach können Sie einfach das Standardprogramm für den Dateityp .ps1 in ändern
powershell.exe
(verwenden Sie die Suche, es ist ziemlich versteckt) und Sie können PowerShell-Skripts mit einem Doppelklick ausführen.Ansonsten würde ich empfehlen, bei anderen Vorschlägen zu bleiben, da Sie mit diesen Verwaltungstools das gesamte System durcheinander bringen können.
Ich denke, dass die Standardeinstellungen zu streng sind. Wenn es jemandem gelingt, bösartigen Code auf Ihren Computer zu setzen, kann er diese Einschränkung auch umgehen (in eine CMD-Datei oder eine EXE-Datei einwickeln oder mit einer Verknüpfung tricksen), und am Ende wird nur verhindert Sie können das von Ihnen geschriebene Skript nicht einfach ausführen.
quelle
Sie können die Windows-Funktion "SendTo" verwenden, um das Ausführen von PS1-Skripten zu vereinfachen. Mit dieser Methode können Sie mit der rechten Maustaste auf ein PS1-Skript klicken und es ausführen. Dies ist nicht genau die OP-Frage zu beantworten, aber es ist nah. Hoffentlich ist dies für andere nützlich. Übrigens .. dies ist hilfreich für eine Vielzahl anderer Aufgaben.
quelle
Ich habe dies verwendet (muss nur einmal ausgeführt werden); Stellen Sie außerdem sicher, dass Sie über Ausführungsrechte verfügen:
von PowerShell mit erhöhten Rechten:
dann aus einer Fledermausdatei:
und voila; Durch Doppelklicken auf eine * .ps1 wird diese ausgeführt.
quelle
The term '%1' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
assoc
erforderlich.In Windows 10 möchten Sie möglicherweise auch die Überschreibung von Windows Explorer für die Dateierweiterungszuordnung löschen:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ps1\UserChoice
zusätzlich zu der
HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\open\command
in anderen Antworten erwähnten Änderung.Siehe https://stackoverflow.com/a/2697804/1360907
quelle
Ich habe versucht, die häufigsten Antworten auf diese Frage zu finden, bin jedoch auf Fehlermeldungen gestoßen. Dann habe ich hier die Antwort gefunden:
PowerShell sagt, dass "die Ausführung von Skripten auf diesem System deaktiviert ist".
Was für mich gut funktioniert hat, war die Verwendung dieser Lösung:
Sie können dies in eine .bat-Datei einfügen und darauf doppelklicken.
quelle
Von http://www.howtogeek.com/204166/how-to-configure-windows-to-work-with-powershell-scripts-more-easily :
Legen Sie den Standardwert für
HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell
to fest0
quelle