
.bat
Windows では、、またはスクリプト (バッチ.cmd
およびVBScript) ファイルをクリックすると.vbs
、それぞれのエンジン (コマンド プロンプトおよび Windows スクリプト ホスト) によって実行されます。
では、なぜ PowerShell 拡張機能は.ps1
、Powershell ではなく、デフォルトで Notepad に関連付けられているのでしょうか?
答え1
どうやら、Microsoft は PowerShell をデフォルトで安全に設計しようとしたようです。Microsoft はどこにもこれを明確に述べていないようですが、この制限はおそらく、ユーザーが騙されて悪意のあるスクリプトを実行し、拡散するのを防ぐためのものだったと思われます。
これがなぜ危険なのかについては、よく説明されている。ここ:
PowerShell は、Windows システム上の CMD およびバッチ スクリプトを置き換えることを目的としたコマンド シェルおよびスクリプト言語です。そのため、PowerShell スクリプトは、コマンド ラインから手動で実行できるほぼすべての操作を実行するように構成できます。つまり、ユーザー アカウントに設定されている制限まで、システムで可能な変更を実質的にすべて実行できることになります。したがって、PowerShell スクリプトをダブルクリックして完全な管理者権限で実行できれば、次のような簡単な 1 行で 1 日が台無しになる可能性があります。
Get-ChildItem "$env:SystemDrive\" -Recurse -ErrorAction SilentlyContinue | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue
上記のコマンドを実行しないでください。...
さらに悪いことに、ファイル システムを破壊するだけのスクリプトではなく、キーロガーやリモート アクセス サービスをダウンロードしてインストールするスクリプトを実行するように友人が騙される可能性があります。
しかし実際には、PowerShellのコードは、.bat
単にコードをコマンドライン引数としてPowerShellに渡すだけでファイルから実行できます。そのため、PowerShellは現在、アムシ(マルウェア対策スキャン インターフェース) により悪意のあるスクリプトをブロックします。何らかの理由により、元の制限はそのまま残されています。