ここで解説するのは.NET FrameworkベースのWindows PowerShellであり、.NETベースのPowerShell (旧称PowerShell Core) とは異なります。ASCII.jp:PowerShellの今を見る 2つあるPowerShellはどっち使えばいい? (1/2) 塩田紳二 (2024/03/17)
Windows 8.1以降では、クイックアクセスメニューからWindows PowerShellを起動できるようになっています。それにはタスクバーのプロパティを開き、[ナビゲーション]タブにある[左下隅を右クリックするか Windows キー + X キーを押したときに表示されるメニューで、コマンド プロンプトを Windows PowerShell に置き換える]を有効にします。Windows 8.1ミニTips (74) クイックアクセスメニュー(WinXメニュー)を効率よく使う●つの方法 | マイナビニュース 阿久津良和 (2014/11/01)
既定ではスクリプトの実行は制限されており、実行しようとしても「このシステムではスクリプトの実行が無効になっているため、ファイル C:\sample.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(http://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。」として実行できません。この原因となるポリシーの設定は、Get-ExecutionPolicyで確認できます。about_Execution_Policies | TechNet
| 実行ポリシー | 署名されたスクリプト | 未署名のスクリプト | |
|---|---|---|---|
| ローカルで記述 | インターネットから入手 | ||
| Restricted | × | × | × |
| AllSigned | ○ | × | × |
| RemoteSigned | ○ | ○ | × |
| Unrestricted | ○ | ○ | △ (実行時に警告あり) |
| Bypass | ○ | ○ | ○ (実行時に警告なし) |
既定のスコープのポリシーを変更するには次のようにします。この場合すべてのユーザーに影響し、設定はレジストリに書き込まれます。ただし管理者権限が必要となります。
PS C:\> Set-ExecutionPolicy -ExecutionPolicy 実行ポリシー
現在のユーザーにのみ設定するには、スコープでそれを指定します。
PS C:\> Set-ExecutionPolicy 実行ポリシー -Scope CurrentUser
| スコープ | 影響範囲 |
|---|---|
| Process | 現在のセッションのみ |
| CurrentUser | 現在のユーザーのみ |
| LocalMachine | 現在のすべてのユーザー |
スクリプトの実行を許可しても、ポリシーの設定によっては署名がないと「ファイル C:\sample.ps1 を読み込めません。ファイル C:\sample.ps1 はデジタル署名されていません。このスクリプトは現在のシステムでは実行できません。スクリプトの実行および実行ポリシーの設定の詳細については、「about_Execution_Policies」(http://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。」として実行できません。
起動時に「新機能と改善のために最新の PowerShell をインストールしてください!https://aka.ms/PSWindows」と最新版の導入を促されるならば、そのリンク先からそれを導入できます。「最新版をインストールせよ」とPowerShell起動時に叱られたときの対処法:Tech TIPS - @IT 小林章彦 (2023/10/27)
パラメータは次のようにして受け取れます。
Param(
[string]$computerName,
[string]$filePath
)
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True,Position=1)]
[string]$computerName,
[Parameter(Mandatory=$True)]
[string]$filePath
)
Windows PowerShell: パラメーターを定義する | TechNet Don Jones (2012/08)
コマンドのことを、Windows PowerShellではコマンドレットと呼称しています。コマンドレットとは - Windows PowerShell 入門
このコマンドレットとコマンドプロンプトなどのコマンドとの違いは、Comparison of cmdlets with similar commandsに一覧があります。
dirに類似したコマンドレットで、ファイルの情報を収集できます。
Get-ChildItem -recurse # サブフォルダも含める
特定のファイルのみを含めるにはincludeで指定します。そのとき複数の条件があるときにはカンマで区切ります。
Get-ChildItem c:\scripts\*.* -include *.txt,*.log # c:\scripts\にあるファイルのうち、.txtと.logを含める
それぞれのコマンドの用法は、
コマンドレット名 -?
として確認できます。なおコマンドプロンプトと異なり、「/?」ではなく「-?」です。
このとき既定ではヘルプの一部しかインストールされていないため、次のように表示されます。
注釈
Get-Help を実行しましたが、このコンピューターにこのコマンドレットのヘルプ ファイルは見つかりませんでした。ヘルプの一部だけが表示されています。
-- このコマンドレットを含むモジュールのヘルプ ファイルをダウンロードしてインストールするには、Update-Help を使用してください。
-- このコマンドレットのヘルプ トピックをオンラインで確認するには、「Get-Help コマンドレット名 -Online」と入力するか、
http://go.microsoft.com/fwlink/?LinkID=****** を参照してください。
この場合には指示に従い、ダウンロードするかオンラインで確認します。もしダウンロードするならば、Update-Helpは管理者として実行します。さもなくば「アクセスが拒否されました。Windows PowerShell のコア モジュールのヘルプ トピックも、$pshome\Modules ディレクトリ内のモジュールのヘルプ トピックも更新できませんでした。これらのヘルプ トピックを更新するには、"管理者として実行" コマンドを使用して Windows PowerShell を起動し、Update-Help をもう一度実行してください。」として更新に失敗します。
利用可能なコマンドレットは、Get-Commandコマンドレットでも確認できます。
Windows PowerShellのGUI環境で、
を行えます。
