Powershell スクリプトを 1 行ずつ実行すると機能するのに、スクリプト ファイルを実行すると機能しないのはなぜですか?

Powershell スクリプトを 1 行ずつ実行すると機能するのに、スクリプト ファイルを実行すると機能しないのはなぜですか?

Windows 7 Prof では、Windows Powershell_ISE (管理者として) で Powershell (バージョン 3) コマンドを実行すると、期待どおりの結果 (ドメイン ユーザーをローカル/マシンの Administrators グループに追加する) が生成されますが、フォルダー内のスクリプト .ps1 ファイルから起動すると、結果は生成C:\Users\myDomainUser\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startupされません。

$objGroup = [ADSI]("WinNT://myComputerName/Администраторы")'Administrators in Russian
$objUser = [ADSI]("WinNT://myDomainName/myDomainUser")
$objGroup.PSBase.Invoke("Add", $objUser.PSBase.Path)

なぜですか?
Windows 7 の再起動時にドメイン ユーザーをローカル管理者グループに追加するにはどうすればよいでしょうか?

答え1

セキュリティ上の理由から (スクリプト実行ポリシーに加えて)、Microsoft は .ps1 ファイルをメモ帳で開くように設定しています。(愚かな Microsoft) スケジュールされたタスクのほうがよい解決策かもしれませんが、スタートアップ フォルダーからスクリプトを起動する場合は、スタートアップにスクリプトへのショートカットを配置し、スクリプトを別の場所に保存することをお勧めします。私は次のようなショートカットを使用しています。C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -file "C:\Scripts\Powershell\Tool.ps1"

この構文を使用する場合、PowerShell に渡す追加オプションは、-file オプションの前に指定する必要があることに注意してください。-file の後の部分は、スクリプトへのパスまたはスクリプトに渡されるオプション/引数として解釈されます。

答え2

タスク スケジューラを使用して実行してみるとよいでしょう。

タスク スケジューラを起動します (スタート メニュー、すべてのプログラム、アクセサリ、システム ツール、タスク スケジューラ)。右側のパネルで、[タスクの作成] を選択します。タスクの名前を入力します。必要に応じてユーザーを変更します。[最高の権限で実行] を選択します。トリガー タブで、目的に応じて [ログオン時] または [起動時] のトリガーを作成します。アクション タブで、スクリプトを指す新しいアクションを作成します。

関連情報