2016-08-11 5 views
0

Also ich ein grundlegendes Skript ausführen, um eine Verknüpfung auf dem öffentlichen Profil-Desktop zu kopieren, so dass jeder Benutzer, der sich anmeldet, das auf ihrem Desktop haben wird. Die Umstände sind, dass ich Ausführungsrichtlinien umgehen muss, also mache ich dies über Batch-Datei. Dies ist, was ich versucht habe, aber es tut mir scheint ... ist einfachStarten als Admin Powershell über Batch-Datei

Powershell.exe -Command "& {Start-Process Powershell.exe -ArgumentList 'ExecutionPolicy Bypass -File DesktopShortcut.ps1' -Verb RunAs}" 

und die PS-Datei zu arbeiten:

Copy-Item -Path "aiStarter.lnk" -Destination "C:\Users\Public\Desktop\" -PassThru 

Wenn ich es laufen die Fenster nur blinkt dann verschwindet. Wenn ich es ohne RunAs laufen lasse, wird der Zugriff verweigert. Ich hasse es zu fragen, weil ich sicher bin, dass es schon einmal gefragt wurde, aber ich bin mir ziemlich sicher, dass ich das richtig ausführe. Gedanken?

+0

Das sieht seltsam aus. Sie verwenden im Grunde eine Batch-Datei, um die Powershell zu starten, die wiederum Powershell startet, die schließlich versucht, Ihr Powershell-Skript auszuführen. – Squashman

+2

Außerdem benötigen Sie keine Skripts zum Verteilen von Verknüpfungen. Verwenden Sie einfach Gruppenrichtlinien. –

+0

@Squashman Diese verworrene Syntax ist erforderlich, um einen PowerShell-Prozess mit erhöhten Berechtigungen zu starten. 'powershell.exe' hat keinen" runas "-Schalter, daher müssen Sie das' Start-Process'-Cmdlet verwenden. –

Antwort

1

Wie einige andere gesagt haben, ist dies nicht die beste Wahl für die Bereitstellung von Verknüpfungen.

Das heißt, es gibt zwei Probleme. Man benötigt eine - bei Ausführungsrichtlinie. Der andere ist, nachdem die Instanz mit der erhöhten Powershell erstellt wurde, ändert sich der Arbeitspfad. Sie müssen also den vollständigen Pfad zum Skript hinzufügen, was Sie mit %~dp0 tun können, wenn es sich um eine Batch-Datei handelt.

Powershell.exe -Command "& {Start-Process Powershell.exe -ArgumentList '-ExecutionPolicy Bypass -File %~dp0DesktopShortcut.ps1' -Verb RunAs}" 

Gleiches muss mit dem Powershell-Skript nachher gemacht werden.

Copy-Item -Path "$($MyInvocation.MyCommand.Path)\aiStarter.lnk" -Destination "C:\Users\Public\Desktop\" -PassThru 

Dies setzt voraus, die Batch-Datei, die Abkürzung, und die Powershell-Skript sind alle im selben Ordner.

+0

% ~ dp0 arbeitete wie ein Zauber, vielen Dank! – nkasco

Verwandte Themen