PowerShell ISE を使用して手動で実行するPowerShellスクリプトがあります。ただし、管理者の資格情報を使用してスケジュールされたタスクとして実行すると、タスクは期待どおりの結果で実行されません。
スクリプト:
$request=new-object System.Net.WebClient
$request.DownloadFile("...url...", "C:\path\to\file.csv")
管理者ユーザーは、スクリプトと、書き込み先のフォルダーの両方のフルコントロールを持っています。 URLが存在し、妥当な時間(1秒未満)で応答します。
タスクを手動で実行すると、最終的に終了するまで、ステータスは0x41301(「現在実行中」)になります。これらの方法の両方を使用してタスクを設定しました:
C:\path\to\PS.PS1
C:\windows\system32\WindowsPowerShell\v1.0\powershell.exe
追加オプションあり-noninteractive -command "C:\path\to\PS.PS1"
オプション1を使用すると、タスク履歴はnotepad.exeのインスタンスを開いたことを示しますが、終了することはありません。オプション2を使用するとタスクは完了しますが、ファイルのダウンロードや作成は行われません。
利用した Set-ExecutionPolicy Unrestricted
これは署名されたスクリプトではないため。
この問題を解決するにはどうすればよいですか?
スクリプトブロックの代わりにスクリプトファイルを実行しているため、使用する必要があるパラメーターは-Fileです。
さらに、Set-ExecutionPolicyコマンドレットを使用して実行ポリシーを設定しても、スクリプトがそのコンテキストで実行されるとは限りません。有効な実行ポリシーは、グループポリシー(GPO)によって上書きされる可能性があります。ファイルの実行時にこれを強制するには、-ExecutionPolicyパラメーターを使用します。
あなたが探しているコマンドは次のとおりです
powershell.exe -ExecutionPolicy Unrestricted -NonInteractive -NoProfile -File c:\path\ps.ps1
これらのパラメータの詳細については、 ここ を参照してください。
実行しようとしているスクリプトファイルは、ネイティブで信頼されているファイルではありません。コマンドを実行するには、ファイルパスの前にアンパサンドを使用します。
Powershell.exe -ExecutionPolicy Unrestricted -Command { & 'C:\path\to\PS.PS1' }
その他のPowerShell起動パラメーターは、PowerShell.exeコマンドラインヘルプにあります。
次の方法で、すべてのスコープの実行ポリシーを確認できますか?
Get-ExecutionPolicy -List
あなたが設定した場合 LocalMachine する方針 RemoteSigned、次のようなタスク定義ができるはずです。
で開始: C:\ Windows\System32\WindowsPowerShell\v1.0
実行: C:\ Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -File c:\ path\to\ps.ps1
既に問題の解決策を見つけた可能性がありますが、他の人のためにこのメモを投稿します。私は同様の問題に遭遇しました。基本的に、テストと比較には別のドメインアカウントを使用しました。 [ユーザーがログオンしているかどうかにかかわらず実行する]をオンにすると、タスクは正常に実行されました。
心に留めておき、次の点を確認してください。
提供されたリンクを確認してください。うまくいけば、あなたや他の誰かがこの情報から利益を得ることができます。安全である。
https://technet.Microsoft.com/en-us/library/cc722152.aspx