【WA0173】PowerShellを様々な方法で動かしてみた
こんにちは、NTTデータ WinActor技術支援チームです。
いつもユーザーフォーラムをご利用いただき、ありがとうございます。
******お願い******
本コラムをご覧いただいた方へ、簡単なアンケートのご協力をお願いしております。
URLはこちら → https://forms.office.com/r/qgecyfEkaA
***************
今回のコラムはこんな方にオススメです☆
・普段からPowershellを利用しているが、WinActorからの操作方法がわからない方
業務でPowerShellを使用している方のなかには、
WinActorから実行したいと考えてる方もいらっしゃるかと思います。
今回のコラムでは、例としてプロセス一覧を出力するスクリプトファイルを使用して、
WinActorからPowerShellを実行する方法を紹介いたします。
【パターン1】コマンド実行よりPowerShellの起動と[.ps1ファイル]の実行を行う
ノード「コマンド実行」から行う場合、オプションに[.ps1ファイル]のフルパスを記載することで、
実行することが可能です!
■シナリオ例
文字列連結にて、実行用コマンドを作成後、
コマンド実行より、cmd経由してPowerShellを起動および[.ps1ファイル]を実行し、
実行結果をスクリプトに記述されているフォルダに[.csvファイル]として出力する。
■フローチャート
■各種ライブラリの設定例
①コマンド作成
ライブラリ「文字列の連結」でノード「コマンド実行」で使用するコマンドを作成
└07_文字列操作 > 03_連結 > 文字列の連結
文字列1 → 「/c start powershell.exe 」
※コマンド実行からPowerShellを呼び出す場合、
PowerShell.exeで実行すると、32bitプロセスのPowerShellで動作します。
64bitプロセスで動作させたい場合は、64bitプロセスのフルパスを指定する必要があります。
例)C:\Windows\SysNative\WindowsPowerShell\v1.0\powershell.exe
文字列2 → 「-ExecutionPolicy RemoteSigned 」
※[.ps1ファイル]実行権限付けた状態でPowerShellを起動するためのオプションとなります。
ご利用の環境に応じて設定してください。
文字列3 → 「.ps1ファイルのフルパス」
※「文字列の連結」使用時の補足
「ps1ファイルのフルパス」以外の項目には、最後に半角スペースの入れ忘れにご注意ください。
半角スペース入れないと各文字が繋がってしまい、実行に失敗してしまいます。
②PowerShell起動/.ps1ファイル実行
ノード「コマンド実行」よりPowerShell起動および[.ps1ファイル]を実行
└ノードタブ「コマンド実行」
コマンド → 「cmd.exe」
オプション → 「①コマンド作成で連結した実行コマンド」
PowerShell上では実行結果の確認ができませんが、
[.ps1ファイル]を実行して、ファイル生成など行いたい場合は、
こちらの方法でいいかと思います!
【パターン2】WinActorノートからPowerShellへ接続し、[.ps1ファイル]を実行する
WinActorノートには、PowerShellと接続できる機能がございます。
こちらの方法も使ってみたので、ご紹介いたします!
■シナリオ例
WinActorノートよりPowerShellへ接続後、
シナリオ保存フォルダ内に存在する[.ps1ファイル]を相対パス指定で実行し、
実行結果をスクリプトに記述されているフォルダに[.csvファイル]として出力する。
■フローチャート
■各種ライブラリの設定例
①シナリオファイル名取得
ライブラリ「シナリオファイル名取得」でシナリオ保存先のフォルダパス取得する
└01_WinActor制御 > 06_シナリオ情報 > シナリオファイル名取得
②PowerShellを開く
ライブラリ「PowerShellを開く」でWinActorノートとPowerShellを接続する
└25_WinActorノート > 01_シェルツール > PowerShellを開く
・ここから行う下記3つの処理につきましては、
ライブラリ「コマンドを実行する(PowerShell,コマンドプロンプト)」を使用して、
PowerShellの操作を行っていきます。
└25_WinActorノート > 01_シェルツール > コマンドを実行する(PowerShell,コマンドプロンプト)
③参照ディレクトリ移動
PowerShell上の参照ディレクトリを移動する。
WinActorノートからPowerShellへ接続すると、
「WinActor7.exe」のインストールフォルダが参照ディレクトリとなっております。
今回実行を行いたい[.ps1ファイル]は、シナリオファイルと同じフォルダ内にあるため、
「Set-Location」を実行してディレクトリ移動を行います。
コマンド → 「Set-Location -Path フォルダパス」
※各変数には下記の値が入っています。
コマンドレット_フォルダ移動 → 「Set-Location -Path 」
シナリオフォルダ名 → 「①シナリオファイル名取得にて取得したフォルダパス」
④実行ポリシーを一時的に権限付与
[.ps1ファイル]の実行するために、実行ポリシーを一時的に権限付与する。
環境によっては、[.ps1ファイル]がポリシー設定により実行できない環境もございます。
実行できない環境においては、ポリシーの変更を行うコマンドを実行してください。
コマンド → 「Set-ExecutionPolicy -Scope Process RemoteSigned」
※公式FAQにてポリシー設定により実行できない場合の回避策も記載がございますため、一度ご確認いただけると幸いです。
PowerShellスクリプトファイルの実行が無効になっていて読み込むことができないエラーがでます。
(※外部サイトのページへ遷移します)
⑤PS1ファイルを実行
[.ps1ファイル]を実行する。
コマンド → 「.\[.ps1ファイル名]」
※相対パスで[.ps1ファイル名]を指定する場合は、「.\」の付け忘れにご注意ください!
⑥PowerShell・コマンドプロンプトを閉じる
ライブラリ「PowerShell・コマンドプロンプトを閉じる」にてPowerShellとの接続を解除する。
└25_WinActorノート > 01_シェルツール > PowerShell・コマンドプロンプトを閉じる
※プロパティの設定は必要ございません。
PowerShell上に出力された結果などを使用したい場合は、
WinActorノートと組み合わせる事で、
変数に取り込んだり、取得情報をそのまま加工などできそうですね!
また、動作検証時にWinActorノートを表示しておくことで、
どのように入力されているか、結果なども確認できるので、
一緒に確認しながら進めるといいと思います!
【補足】
PowerShellに関するコマンドレットやスクリプトの内容につきましては、
個別にお問い合わせいただいても、お答えができないこともございます。
ご理解とご了承のほどよろしくお願いいたします。
以上、参考になれば幸いです♪
【動作検証環境】
WinActor Ver.7.4.4
Windows PowerShell Ver.5.1.19041.4412
<お願い>
本投稿に関しての問合せにつきましては、
恐れ入りますがコメントではなく、個別問合せにてお願いいたします。
★お問合せ方法はこちらのコラムをご参照ください
【WA0116】ユーザーフォーラムで質問を投稿するときの手順