Woman typing on a laptop
Windowsのパソコンを使っていると、設定の変更やメンテナンスなど、毎回同じ操作を繰り返すことがよくあります。たとえば、不要なサービスの停止、特定のアプリの起動、環境変数の設定など、手作業では時間がかかるものばかりです。
そんなときに役立つのがPowerShellです。PowerShellはWindowsに標準搭載されている高機能なコマンドラインシェルで、スクリプトを書くことで、日常の操作を自動化できます。この記事では、PowerShellを使ってWindowsの設定を自動化する方法を初心者にもわかりやすく解説します。
PowerShellは、Windowsに標準で搭載されている自動化ツールであり、システム管理者やITエンジニアにとって欠かせない存在です。従来のコマンドプロンプト(cmd)よりも柔軟で、オブジェクトベースの出力が可能な点が大きな特徴です。
特に次のような点がPowerShellの魅力です。
これらの特性により、PowerShellはWindows環境での自動化に最適なツールとなっています。
PowerShellで自動化を行うには、最低限次のような基本コマンドや考え方を知っておくとよいでしょう。
$folder = "C:\Test"
変数に値を入れて使い回すことで、スクリプトの可読性と再利用性が上がります。
if (Test-Path $folder) {
Write-Output "フォルダーは存在します"
} else {
New-Item -Path $folder -ItemType Directory
}
処理の条件を指定して、自動で分岐させるのも基本中の基本です。
ここでは実際によく使われる自動化スクリプトの例をいくつか紹介します。
Stop-Service -Name "Spooler" -Force
Set-Service -Name "Spooler" -StartupType Disabled
プリンタサービス「Spooler」を停止し、無効化しています。使わないサービスを自動で管理することで、パフォーマンス改善にもつながります。
$shortcut = "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\MyApp.lnk"
$targetPath = "C:\Path\To\YourApp.exe"
$WshShell = New-Object -ComObject WScript.Shell
$shortcutObject = $WshShell.CreateShortcut($shortcut)
$shortcutObject.TargetPath = $targetPath
$shortcutObject.Save()
スタートアップにショートカットを自動で作成して、アプリを自動起動させるスクリプトです。
$code = @"
using System.Runtime.InteropServices;
public class Wallpaper {
[DllImport("user32.dll", SetLastError = true)]
public static extern bool SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);
}
"@
Add-Type $code
[Wallpaper]::SystemParametersInfo(20, 0, "C:\Path\To\wallpaper.jpg", 3)
DLLを使って壁紙を変更することもできます。定期的にお気に入りの画像を切り替えることも可能です。
スクリプトを作成しただけでは「手動実行」になってしまいます。これを真の「自動化」にするには、Windowsの「タスクスケジューラ」と組み合わせるのが効果的です。
powershell.exe
-File "C:\Path\To\script.ps1"
この設定により、ログオン時などに自動でスクリプトを実行できます。
PowerShellは非常に強力なツールであるがゆえに、使い方を誤るとシステムに悪影響を与えることもあります。以下の点には十分注意してください。
Get-ExecutionPolicy
既定では「Restricted」になっている場合があるため、「RemoteSigned」や「Unrestricted」への変更が必要な場合があります。ただし、セキュリティリスクもあるため、信頼できるスクリプトのみを実行してください。
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
一部の操作(レジストリやサービス変更など)は、PowerShellを管理者権限で実行しないとエラーになります。スクリプトを右クリックして「管理者として実行」する、もしくはショートカットにその設定を含めるようにしましょう。
PowerShellを使えば、Windowsの煩雑な設定作業を一括して自動化することができます。初心者の方でも、基本的な構文さえ覚えれば、今日からでも効率化を始めることができます。業務や日常の中で繰り返し行っている作業を「スクリプト化」して、自分専用の便利ツールを作ってみましょう。
慣れてくると、複雑なバッチ処理やログの解析などもPowerShellひとつで行えるようになります。ぜひ一度、手元の環境で試してみてください。自動化の世界が一気に広がります。