Windows PC と NAS の構成で、NAS上で リネームPowerShell を実行する手順です。
手順
- NAS上に リネームPowerShell を用意
- NAS上で PowerShell実行ポリシー を変えてから実行
ポイント
- 1度だけのスクリプト実行なら、PowerShell実行ポリシーを変えるのが便利(例:リネームスクリプト)
- 定期的なスクリプト実行なら、該当PowerShellに自己署名証明書を付けるのが良い(最下部で解説)
1. NAS上に リネームPowerShell を用意
以下をテキストファイルにコピペして、Rename.ps1 として保存。
空白文字を半角アンダーバーに置換するスクリプトです。
それを、NAS上のリネームしたいフォルダたちと並列に置きます。
$mygl=(Get-Location).Path Write-Output ${mygl} 以下の全てのディレクトリ名、ファイル名に含まれる空白文字を半角アンダーバーに置換します。 $input=Read-Host "よろしいですか?[Y/n]" if ($input -eq "Y") { Get-ChildItem -Recurse | Rename-Item -NewName { $_.Name -replace '\s','_' } Read-Host "終了するにはEnterキーを押して下さい..." }
2. NAS上でPowerShell実行ポリシーを変える
NAS上で Ctrl+ Shft + 右クリック の「PowerShell ウィンドウをここで開く」でPowerShell起動します。
PowerShell で Rename.ps1 を実行すると以下のエラーになります。
ファイル ~ はデジタル署名されていません。このスクリプトは現在のシステムでは実行できません。
PowerShell で Get-ExecutionPolicy -list で現在のポリシーを表示します。
(参考:PowerShell 実行ポリシー)
Process が Undefined なっていることが確認できます。
これを Bypass に変更すると、任意のPowerShellファイルが実行可能になります。
(PowerShell を閉じれば Process は Undefined に戻るのでセキュリティ的に安全)
Set-ExecutionPolicy で Process のポリシーを変更します。
再度 Get-ExecutionPolicy -list でポリシーを確認してみましょう。
Process が Bypass になっていますね。
Rename.ps1 を実行すると動作し、リネームの確認が出力されました。
あとは y をEnterするだけでリネームスクリプトが動作します。
Process が Bypass のままではセキュリティリスクがあるので、PowerShell を閉じてポリシーを戻します。
再度 PowerShell を起動して Get-ExecutionPolicy -list して確認します。
Process は Undefined に戻っていますね。
実行ポリシーを変えてPowerShell実行する方法はこれで解説終了です。
必要な人のみ、以下をクリックで展開してみて下さい。
備考
D:\で起動した PowerShell を cd で NAS に移動できませんでした。
cd ではなく Set-Location だと移動できました。