スクリプトの記述と実行のためのPowershellの実装
Powershellとは、簡単に言うとPowershellのコードが書かれたテキストファイルです。このテキストファイルを実行すると、Powershellインタプリタがその文を一行ずつ解釈して実行します。Powershellスクリプトは、昔のCMDコンソールのバッチファイルに非常によく似ています。Powershellスクリプトは非常に簡単なテキスト編集ツールで作成することができる。
リダイレクトによるスクリプトの作成
スクリプトがそれほど長くない場合は、コンソールで実行されるステートメントを直接スクリプトファイルにリダイレクトすることも可能です。
PS E:> '"Hello,Powershell Script"' > MyScript.ps1
PS E:> . \MyScript.ps1
Hello,Powershell Script
この方法では、コードを引用符で囲む必要があるという欠点があります。これは、スクリプトの中にも引用符がある場合には面倒なことになります。また、スクリプトの中で改行したい場合もあります。以下はhere-stringsの良い例で、スクリプトファイルが@' '@で閉じられていることを意味します。
PS E:> @'
>> Get-Date
>> $Env:CommonProgramFiles
>> #Script End
>> "files count"
>> (ls).Count
>> #Script Really End
>>
>> '@ > myscript.ps1
>>
PS E:> .MyScript.ps1
Apr 27, 2012 8:15:10
C:\Program Files\Common Files
files count
20
で始まり、'@' で終わる文字列です。ここにはどんなテキストでも、たとえそれが特殊文字、スペース、空白であっても格納することができる。ただし、誤ってシングルクォートをダブルクォートで書いてしまうと、Powershellは中の変数を解析してしまいます。
エディターでスクリプトを作成する
最も本格的なテキストエディタであるメモ帳を、Powershellのコンソールで直接開けるのは、実はとても便利です
PS E:> notepad.exe . \MyScript.ps1
PS E:> notepad.exe
編集後は忘れずに保存してください。
Powershellスクリプトを実行します。
スクリプトが正常に書き込まれたら、以下の手順で初めて実行することができます。
PS E:> MyScript.ps1
項目 "MyScript.ps1" は、コマンドレット、関数、スクリプト ファイル、または実行可能なプログラムの名前として認識されません。が含まれている場合は、名前のスペルを確認してください。
のパスを確認し、パスが正しいことを確認してから、もう一度試してください。
場所 行数:1 文字数:13
+ MyScript.ps1 < <<<
+ CategoryInfo : ObjectNotFound: (MyScript.ps1:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
提案[3,一般]。コマンド MyScript.ps1 は見つかりませんでしたが、現在の場所には存在します。 Windows PowerShell の既定値
Windows PowerShellは、デフォルトで現在の場所からコマンドを読み込みません。このコマンドを信頼する場合は、代わりに ".MyScript.ps1" と入力してください。詳細については、"get-h を参照してください。
elp about_Command_Precedence" を参照してください。
相対パス、または絶対パスを使用しない場合
PS E:> . \MyScript.ps1
Apr 27, 2012 8:33:03
C:\Program Files\Common Files
files count
20
PS E:> E:MyScript.ps1
Apr 27, 2012 8:33:11
C:\Program Files\Common Files
files count
20
ポリシーの制限の実施
Powershellは通常、初期化時にスクリプトの実行を無効にします。スクリプトを実行できるかどうかは、Powershellの実行ポリシーに依存します。
PS E:> . \MyScript.ps1
このシステムではスクリプトの実行が無効になっているため、ファイル E:MyScript.ps1 を読み込むことができませんでした。詳細については、"get-help about_sign を参照してください。
ing"です。
ロケーションライン:1 文字:15
+ .MyScript.ps1 < <<<
+ CategoryInfo : NotSpecified: (:) [], PSSecurityException
+ FullyQualifiedErrorId : RuntimeException (ランタイムエクセプション)
このポリシーは管理者のみが変更する権限を持ちます。管理者でない場合は、エラーが報告されます。
でスクリプト実行ポリシーを確認することができます。
PS E:> Get-ExecutionPolicy
スクリプトの実行ポリシーの変更は
PS E:> Get-ExecutionPolicy
Restricted
PS E:> Set-ExecutionPolicy UnRestricted
ポリシー変更の実行
実行ポリシーは、信頼されていないスクリプトの実行を防ぐことができます。実行ポリシーを変更すると、about_Execution_Policies に公開されることがあります。
のセキュリティリスクは、ヘルプトピックで説明されているとおりです。実行ポリシーを変更した方が良いですか?
[Y] Yes(Y) [N] No(N) [S] Pending(S) [?] Help (初期値は "Y"): y
スクリプト実行ポリシーの種類は Microsoft.PowerShell。
サポートされているすべての実行ポリシーを表示する。
PS E:> [System.Enum]::GetNames([Microsoft.PowerShell.ExecutionPolicy])を実行します。
制限なし
リモート署名
AllSigned
制限あり
デフォルト
バイパス
未定義
Unrestricted(制限なし)。任意のスクリプトを無制限に実行できる最高権限です。
Default:Powershellのデフォルトのポリシーです。スクリプトの実行を一切許可しない「Restricted」。
AllSignedです。すべてのスクリプトは、実行する前に署名されている必要があります。
RemoteSignedです。ローカルスクリプトには制約がありませんが、ネットワークからのスクリプトには署名が必要です。
Powershellスクリプトの署名については、後で詳しく説明します。
スクリプトをコマンドのように実行する
スクリプトへの相対パスや絶対パス、*.ps1拡張子を入力することなく、スクリプトをコマンドのように実行する方法です。
そして、スクリプトの実行文をエイリアスとして保存します。
PS E:> Set-Alias Invoke-MyScript .MyScript.ps1
PS E:> Invok-MyScript
Mon, 28 Apr 2012 0:24:22
C:\Program Files\Common Files
files count
20
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
UbuntuシステムでのPowerShellベースの利用を解説
-
制限された言語パターンを迂回するPowerShellコードインジェクションの脆弱性を防ぐ方法
-
Powershellを選択すべき10の理由(cmdを捨てるべき)
-
PowerShellで光学ドライブをオープン/クローズする
-
Powershellスクリプトの4種類の実行権限についてご紹介します。
-
PowerShellによるファイル名変更のバッチ処理例
-
PowerShellでプログラム的にIEのキャッシュを空にする
-
PowerShellによる印刷ジョブのクエリと削除のコード例
-
Powershellでオブジェクトのデータ構造を展開し、JSON形式で出力する
-
Powershell ISE 抽象構文木 プログラミング例