none
Windows Server 2008 R2でのPowerShell スクリプトの実行 RRS feed

  • 質問

  • お世話になっております。
    Windows Server 2008 R2で、自作のPowerShellスクリプトをスクリプトをスケジュール実行させたいのですが、
    ExecutionPolicyを、Unrestrictedに設定して実行すると、それぞれのps1ファイルで、
            [V] 常に実行しない [D] 実行しない [R] 一度だけ実行する
            [?] ヘルプ (既定値は "D") :  
    と出ます。
       これに、Rで答えるとなんとか動きました。
    そこで、スケジュール実行させるには、以下の2点で、
     ①[A] 常に実行する   がないので無理です。
     ②ps1ファイルには、[プロパティ]→[ブロックの解除]がありません。
    それで、セキリティの上からも、自己署名入り証明書を作成して、スクリプトに署名して実行させたいです。
    しかし、その方法が解りません。教えていただけませんか。
    証明書作成ツール (MakeCert.exe) を実行するには、SDK のコマンド プロンプト ウィンドウが必要なのでしょうか。
    弊社には、ないのですが。
    よろしくお願いします。

    tsukabe

    2014年1月10日 2:22

回答

  • チャブーンです。

    powershell.exeの引数としてExecutionPolicyを指定しているのでしょうか?普通はそのようなことをしなくても、Set-ExecutionPolicyで一度指定しておけば(RemoteSigned等)、実行時にスクリプト実行を尋ねられることはなくなりますが(RemoteSignedであればローカルスクリプトのみ実行可能)。こうしておけば、スクリプトへの署名も必要ありません。

    • 回答の候補に設定 佐伯玲 2014年1月15日 0:48
    • 回答としてマーク 佐伯玲 2014年1月21日 2:38
    2014年1月10日 2:42
    モデレータ
  • MakeCert を利用した自己証明書の作成方法、スクリプトへの署名方法はこちら。

    http://technet.microsoft.com/ja-jp/magazine/2008.04.powershell.aspx

    MakeCert.exe を含むSDK(Platform SDK )は、MicrosoftのWeb からダウンロード可能ですので、探して入手してみて下さい。

    • 回答の候補に設定 佐伯玲 2014年1月15日 0:48
    • 回答としてマーク 佐伯玲 2014年1月21日 2:38
    2014年1月13日 14:37
  • スクリプトに署名することが絶対にお勧めですが、テンポラリでちょこっと動かしたいだけでした下記の構文が使えます

    %WinDir%\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -NoLogo c:\temp\test.ps1

    タスクでそれぞれ入れてみてください。

    プログラムにはPowerShell.exe
    引数には-ExecutionPolisy以降を絶対パスで入れてください。

    ちなみに、テストに使ったps1は単に一行Get-ChildItemしたものです。

    ■test.ps1

    Get-childitem c:\ > c:\temp\result.txt


    2014年1月14日 1:40
    モデレータ

すべての返信

  • チャブーンです。

    powershell.exeの引数としてExecutionPolicyを指定しているのでしょうか?普通はそのようなことをしなくても、Set-ExecutionPolicyで一度指定しておけば(RemoteSigned等)、実行時にスクリプト実行を尋ねられることはなくなりますが(RemoteSignedであればローカルスクリプトのみ実行可能)。こうしておけば、スクリプトへの署名も必要ありません。

    • 回答の候補に設定 佐伯玲 2014年1月15日 0:48
    • 回答としてマーク 佐伯玲 2014年1月21日 2:38
    2014年1月10日 2:42
    モデレータ
  • MakeCert を利用した自己証明書の作成方法、スクリプトへの署名方法はこちら。

    http://technet.microsoft.com/ja-jp/magazine/2008.04.powershell.aspx

    MakeCert.exe を含むSDK(Platform SDK )は、MicrosoftのWeb からダウンロード可能ですので、探して入手してみて下さい。

    • 回答の候補に設定 佐伯玲 2014年1月15日 0:48
    • 回答としてマーク 佐伯玲 2014年1月21日 2:38
    2014年1月13日 14:37
  • スクリプトに署名することが絶対にお勧めですが、テンポラリでちょこっと動かしたいだけでした下記の構文が使えます

    %WinDir%\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -NoLogo c:\temp\test.ps1

    タスクでそれぞれ入れてみてください。

    プログラムにはPowerShell.exe
    引数には-ExecutionPolisy以降を絶対パスで入れてください。

    ちなみに、テストに使ったps1は単に一行Get-ChildItemしたものです。

    ■test.ps1

    Get-childitem c:\ > c:\temp\result.txt


    2014年1月14日 1:40
    モデレータ
  • こんにちは、つかべ さん
    フォーラムオペレータの佐伯 玲 です。

    みなさんから寄せられた情報はご確認いただけましたでしょうか?
    どれもご参考になるかと思い「回答としてマーク」とさせていただきました。

    お試しいただけた際にはその結果をこちらのスレッドへご返信いただけましたらと思います。


    宜しくお願い致します。


    TechNet Community Support 佐伯 玲

    2014年1月21日 2:38
  • お世話になっております。

    早速の書き込みありがとうございます。

    それで、教えてほしいのですが

    確かに、Windows7で開発中は、Set-ExecutionPolicy RemoteSignedで設定して、実行できたのですが。

    Windows 2008 R2では、Set-ExecutionPolicy RemoteSignedで設定しても、

    Set-ExecutionPolicy Unrestrictedに設定してにしても、

    "セキルティ警告

    信頼するスクリプトのみ実行してください。インターネットから入手したスクリプトは便利ですが、

    コンピュータに危害を及ぼす可能があります。

            [V] 常に実行しない [D] 実行しない [R] 一度だけ実行する
            [?] ヘルプ (既定値は "D") :   "

    と出ます。

    これは、ServerOSだからということでしょうか。それとも、他に原因があるのでしょうか。

    あるのなら、その対策方法を教えていただけませんか。

    よろしくお願いします。


    tsukabe

    2014年1月22日 7:18
  • お世話になっております。

    早速の書き込みありがとうございます。

    早速、Windows SDK for Windows Server 2008 and .NET Framework 3.5をダウンロードしました。

    1.3GBもあり、インストール先が業務サーバで、問題起きるとまずいので、インストールは、まだできていません。

    MakeCert.exe の取得は、ちょっと敷居がたかいので、もっと勉強してからにします。

    ありがとうございます。


    tsukabe

    2014年1月22日 7:31
  • そのスクリプトを右クリックしてプロパティの全般タブを見てください。「ブロックの解除」ボタンがありませんか?

    ボタンを押してブロックを解除すれば出なくなるものと思われます。ご確認ください。

    ブロックの解除

    2014年1月22日 9:46
    モデレータ
  • お世話になっております。

    すぐに教えていただいたのに返信遅くなりまして、申し訳けありません。

    Ps1ファイルのプロパティ表示は、以下の様です。

    ブロック解除がありません。(プライベート スクリプトだからですかね。)

    よろしくお願いします。


    tsukabe

    2014年2月21日 6:09