PowerShellスクリプト言語を初めて使用し、PowerShellスクリプトを実行する方法を学びたい場合は、右のブログ記事に来ています。 このブログは、スクリプトを実行する一般的な方法とポップアップする可能性のあるいくつかの問題をカバーするチュー
目次
前提条件
この記事では、ローカルコンピューターでPowerShellを実行する方法について説明します。 フォローしたい場合は、この記事を開始する前に、次の前提条件が整っていることを確認してください。
- 管理者権限を持つWindows10コンピュータ。
- Windows PowerShellバージョン5以上。 PowerShell v7を使用することもできます。 このチュートリアルでは、Windowsオペレーティングシステムに既にWindows PowerShellが搭載されているため、Windows PowerShellに焦点を当てます。
- 任意のテキストファイルエディタ
実行ポリシーを扱う
Windows PowerShellスクリプトを初めて実行しようとすると、一般的な問題が発生する可能性があ PowerShellは、”このシステムで実行中のスクリプトが無効になっているため、スクリプトを読み込むことができません”というエラーメッセージを返します。
PS> .\GetServices.ps1 File C:\Temp\GetServices.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170. At line:1 char:1 .\GetServices.ps1 ~~~~~ CategoryInfo : SecurityError: (:) , PSSecurityException FullyQualifiedErrorId : UnauthorizedAccess
PowerShellは、実行ポリシーがRestricted、Remote Signed、またはAll Signedに設定されているPowerShellを実行しようとすると、上記のエラーメッセージを返します。
Restricted
Restrictedは、Windowsクライアントコンピューターの既定のポリシーセットです。 PowerShellを初めて使用する場合は、既定のポリシーがすべてのスクリプトを制限するように設定されている可能性があります。
端末では個別のコマンドを実行できますが、スクリプトファイルでは実行できません。 制限には、.ps1xml
、.psm1
、または.ps1
で終わるファイルが含まれます。
Unrestricted
Unrestrictedを使用すると、任意のスクリプトを実行できますが、スクリプトがインターネットからダウンロードされた場合は、実行前に警告が表示されます。 このポリシーは、通常、windows以外のデバイスの既定値です。
リモート署名
リモート署名ポリシーを使用すると、(a)デジタル署名、または(b)署名の有無にかかわらずローカルコンピュータに記述されたスクリプトのいず
スクリプトがインターネットからダウンロードされ、署名されていない場合は、ファイルのブロックを解除する必要があります。 これを行うには、ファイルを右クリックして[プロパティ]を選択します。 または、その特定のスクリプトファイルにUnblock-File
PowerShellコマンドレットを使用することもできます。
インターネットからダウンロードしたスクリプトを実行する場合は、リモート署名付きポリシーを使用するのが理想的な選択肢です。
All Signed
All signedすべてのスクリプトは、信頼できる発行者によってデジタル署名されている必要があります。 これには、インターネットからダウンロードされ、コンピュータ上でローカルに書かれたスクリプトが含まれます。
PowerShell実行ポリシーを変更する
実行ポリシーを変更する:
- 管理者として実行してWindows PowerShellを開き、ポリシーを変更するための最高のアクセス許可を持っていることを確認します。
2. 開いたときに、次のPowerShellコマンドを実行して、コンピューターの実行ポリシーを設定します。 上記で説明した実行ポリシーは、3つの異なるタイプのいずれかにすることができます。 このチュートリアルでは、RemoteSignedの便利で安全な実行ポリシーを使用しています。
このチュートリアルでは、インターネットからGetServices.ps1スクリプトファイルをダウンロードしたことを前提としているため、実行ポリシーをRemoteSignedに設定します。
PS> Set-ExecutionPolicy RemoteSigned
RemoteSigned実行ポリシーは、PowerShellがシステム上で実行する前に、インターネットからダウンロードされたすべてのPowerShellスクリプトに暗号的に署名するように強制します。
3. アクションの確認を要求する出力が表示されます。 “Y”と入力し、”enter”を押してポリシーの変更を確認します。
Execution Policy Change The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose you to the security risks described in the about_Execution_Policies help topic at https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy? Yes Yes to All No No to All Suspend Help (default is "N"):
この時点で、次の手順に従って、コンピューターでPowerShellスクリプトを実行するさまざまな方法を検討します。
PowerShellスクリプトの実行方法
PowerShellスクリプトの実行を実証するには、実際に実行するスクリプトファイルが必要です! 便利なものがない場合は、このZIPファイルをダウンロードして、PS1ファイルを抽出してください。 GetServices.ps1と呼ばれる単純なスクリプトファイルがあります.
Write-Output "Listing Computer Services"Get-Service
すべてのPowerShellスクリプトは、
.ps1
拡張子で終わる必要があります。
コンソールの使用
スクリプトの準備ができたら、PowerShellスクリプトファイルを実行する方法がいくつかあります。 最も一般的な方法の1つは、PowerShellコンソールを使用する方法です。
:
- 上記のようにPowerShellコンソールを開きます。
2. Set-Location
PowerShellコマンドレットまたはcd
エイリアスを使用して、スクリプトが配置されているファイルシステムの場所に移動します。 このチュートリアルのスクリプトは、次の場所にあります。C:\Temp ディレクトリ。
PS> cd C:\Temp\
3. ドット(.
)表記を使用してスクリプトを実行します。 PowerShellは、コマンド名も検索するシェルです。 PowerShellコマンドとスクリプトを区別するには、スクリプトの前にドットを付ける必要があります。 このドットは現在のディレクトリを表します。
PS> .\GetServices.ps1
PowerShellの場所を介してコマンドラインからPowerShellスクリプトを実行する方法
PowerShellコンソールを介してスクリプトを実行できない場合、または実行したくない場合は、good ol’コマンドライン(コマンドプロンプト)を使用して実行することもできます。
コマンドプロンプトを使用してスクリプトを実行するには、まずPowerShell実行可能ファイル(powershell.exe)を使用して、PowerShellの場所を C:\Program Files\WindowsPowerShell\powershell.exe
にし、スクリプトパスをパラメータとして渡します。
powershell.exe -Parameter 'Foo' -Parameter2 'Bar'
のようなPowerShell実行可能ファイルの実行中にパラメーターを指定するだけで、任意のコンテキストでパラメーターを持つスクリプトを実行できます。Cmdを開くと、
。exeを実行すると、以下のようなPowerShellスクリプトを実行できます。 この例では、エンジンを実行し、それにスクリプトパスを渡していますC:\Temp\GetServices.ps1.
以下の例では、PowerShellの場所パスを使用してスクリプトを実行していることに注意してください。 フォルダがどこかのパスにない場合は、これを行う必要があります。
CMD> C:\Program Files\WindowsPowerShell\powershell.exe "C:\Temp\GetServices.ps1"
PowerShell7のPowerShellの場所では、pwshという名前の別の実行可能ファイルが使用されます。exeは、通常、C:\Program ファイル\PowerShell\7\pwsh。exe”を起動します。
以下は、cmdのバッチファイルを介してスクリプトを実行することをカバーする便利なYouTubeビデオです。exeが実行されます。
PowerShell ISEの使用独自のスクリプトを作成したり、他のスクリプトを編集したりする場合は、おそらくPowerShell ISEやVisual Studio(VS)コードなどのスクリプトエディタを使用し ISEにはWindowsが付属しているので、このチュートリアルではその方法に焦点を当てましょう。
ISE経由でスクリプトを起動するには:
- スタートメニューに移動し、PowerShell ISEを検索して開きます。
2. ファイル→開くをクリックしてスクリプトを見つけます。
3. スクリプトを開いた状態で、緑色の実行ボタンをクリックしてスクリプトを実行します。 このボタンは、下部にある組み込みのPowerShellターミナルでスクリプトを呼び出します。
サンプルスクリプトの出力
PowerShellスクリプトが出力を返すことがあります。 これは、実行しているスクリプトがPowerShellの基本的なコンポーネントであるオブジェクトを返すように構築されている場合に発生します。
サンプルのGetServices.ps1スクリプトを実行すると、次のように表示されます。 このスクリプトは、ローカルWindowsコンピューターにインストールされているすべてのサービスを返すGet-Service
コマンドレットを実行します。
PS> .\GetScripts.ps1Listing Computer ServicesStatus Name DisplayName------ ---- -----------Running aakore Acronis Agent Core ServiceStopped AarSvc_1b668d Agent Activation Runtime_1b668dRunning AcronisActivePr... Acronis Active Protection ServiceRunning AcronisCyberPro... Acronis Cyber Protection ServiceRunning AcrSch2Svc Acronis Scheduler2 ServiceRunning AdobeARMservice Adobe Acrobat Update ServiceRunning AdobeUpdateService AdobeUpdateServiceRunning AGMService Adobe Genuine Monitor ServiceRunning AGSService Adobe Genuine Software Integrity Se...----Truncated----
スクリプト内からPowerShellスクリプトを実行する
二つのスクリプトがあり、一方が他方を呼び出したいとします。 おそらく、GetUser.ps1とResetPassword.ps1というスクリプトがあります。GetUser.ps1スクリプトの中で、ResetPassword.ps1を実行してユーザーパスワードをリセットしたいと思います。
呼び出し元のスクリプト(GetUser.ps1)の中に、コマンドラインからスクリプトを呼び出すのと同じように、他のスクリプトを実行する行を追加します。
以下にいくつかのオプションがあります。 通常、別のPowerShellセッションでスクリプトを実行する特別な理由がない限り、同じセッションまたはスコープ内で他のスクリプトを実行することを選択
## To run the other script in a new sessionpowershell.exe .\ResetPassword.ps1## To run the other script in the same session.\ResetPassword.ps1