2016-08-11 9 views
0

私は基本的なスクリプトを実行して、パブリックプロファイルのデスクトップにショートカットをコピーして、ログインしているすべてのユーザーがデスクトップ上にショートカットを作成するようにしています。状況は、私は実行ポリシーをバイパスする必要がありますので、私はバッチファイルでこれをやっています。バッチファイルでAdmin Powershellとして起動する

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

私はそれだけ点滅が消えウィンドウ実行すると:

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

とPSファイルは、単純である...これは私が試したものですが、それは私のために働くように見えるdoesntの。私がRunAsなしで実行すると、アクセスが拒否されます。私はこれまで尋ねられたと確信しているので、これを尋ねるのは嫌ですが、私はこれを正しく実行していると確信しています。思考?

+0

これは奇妙に見えます。あなたは基本的にバッチファイルを使ってpowershellを起動します。これはpowershellを再度起動し、最後にpowershellスクリプトを実行しようとします。 – Squashman

+2

また、ショートカットを配布するためのスクリプトは必要ありません。グループポリシーを使用するだけです。 –

+0

@Squashman昇格された権限でPowerShellプロセスを起動するには、複雑な構文が必要です。 'powershell.exe'には" runas "スイッチがないので、' Start-Process'コマンドレットを利用する必要があります。 –

答えて

1

これは、いくつかの人が言っているように、これはショートカットを配信するための最良の選択ではありません。

これには2つの問題があります。実行ポリシーに-が必要です。もう一つは、上昇したPowerShellのインスタンスが作成された後、作業パスが変更されたことです。したがって、バッチファイルの場合は、%~dp0を使用してスクリプトのフルパスを追加する必要があります。

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

後でpowershellスクリプトを使用して同じことを行う必要があります。

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

これは、バッチファイル、ショートカット、およびpowershellスクリプトがすべて同じフォルダ内にあることを前提としています。

+0

%〜dp0が魅力的に働いてくれてありがとう! – nkasco

関連する問題