ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

PowerShellを学び始めました

PowerShellスクリプトファイルを作成し、スクリプトファイルをタスクスケジューラで起動して、ネットワークドライブを接続したくて、方法を調べています。
方法を調べていて、覚えておこうと思った点を書いていきます。

バージョンの確認方法

Windows 10であれば、PowerShellは、バージョン5.1系がインストールされているようです。
環境によって違う可能性があるので、PowerShellを起動して、バージョンを確認します。
「$PSVersionTable」と入力して、Enterキーを押せば、バージョン情報が表示されます。

PS C:\> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.18362.752
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.18362.752
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

PS C:\>

PowerShellの画面

PowerShellスクリプトを実行できるように、実行ポリシーを変更

こちらの記事に書かれていますが、PowerShellスクリプトが実行できないようになっています。
qiita.com
有名と記事には書かれていますが、学び始めたばかりの僕には、有名だという認識はありませんでした。

実行ポリシーと呼ばれている設定を変更しなくてはなりません。
変更の方法は、まず、管理者でPowerShellを起動します。
管理者で起動したPowerShellで、「Set-ExecutionPolicy RemoteSigned」と入力して、Enterキーを押せば、変更を許可するか確認が表示されます。
yを入力して、Enterキーを押せば、変更が許可されます。

PS C:\> Set-ExecutionPolicy RemoteSigned

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): y
PS C:\>

レジストリが書き換えられるのか、再起動しても、変更は有効になっています。

タスクスケジューラへの登録

こちらの記事に書かれた通りに設定すれば、実行できます。
www.atmarkit.co.jp

ただし、PowerShellのバージョンが6.0以降の場合、実行ファイル名が、powershell.exeからpwsh.exeに変わっているので注意が必要です。
docs.microsoft.com
位置指定パラメータと呼ばれている、-Commandも、-Fileに変更されていると書かれているので、変更が必要になります。

詳細メッセージの出力

スクリプトの最初に
$VerbosePreference = 'Continue'
と書いて、適宜メッセージを
Write-Verbose "○○処理開始しました。"
と書けば、実行時に表示されます。
不要になれば、
$VerbosePreference = 'SilentlyContinue'
と書けば、表示されなくなります。


やりたいことを実現するために、気になったことをいろいろ試して、少しずつ理解してきました。