3

PowerShell でスクリプトを書き終えたばかりで、システムがスリープまたは休止状態から復帰するたびにスクリプトを実行する必要があります。gpedit.msc -> ユーザー構成 -> Windows 設定 -> スクリプト -> ログオンを試しましたが、システムが「スリープ」から復帰したときにこれが機能しません...おそらく「スリープ」->「ウェイクアップ」が技術的には新しいログオンではありません (ユーザーとして、私は既にログオンしています)。

Sleep-Wake イベントまたは Login (User Login) イベントのいずれかがスクリプトをトリガーするはずです。

どうすればこれを行うことができるかについてのアイデアはありますか?

私のスクリプトの動作に関する詳細情報: インターネット/ネットワークが接続されているかどうかを確認します。はいの場合、必要な引数を指定して Cisco VPN 接続コマンド ライン ユーティリティを実行しようとし、VPN にログインします。システムをスリープ状態から復帰させてログインするたびに、自動的に接続するためにいまいましい VPN が必要になります。

4

4 に答える 4

4

私はそれを考え出した。リチャードが上で示したように、タスクスケジューラを使用しました。

トリガーを次のように設定しました..イベント時->システム->カーネルパワー-> 42

誰かが興味を持っている場合...これがスクリプトです(私はPowerShellスクリプトの初心者なので、あなたの入力を歓迎します)

$strComputerName = gc env:computername
$strVPN = 'c:\Program Files (x86)\Cisco Systems\VPN Client\vpnclient.exe'
$vpnArgs = 'connect', 'ProfileName', 'user', 'XXXXXXXX', 'pwd', 'XXXXXXXXXX'
[int]$count = 6
Write-Host "Checking for Internet Connectivity"
While (!([Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]'{DCB00C01-570F-4A9B-8D69-199FDBA5723B}')).IsConnectedToInternet))
{
    Write-Host "Sleeping for 10 seconds before checking for internet again"
    Start-Sleep -s 10
    $count--
    if ( $count -eq 0) 
    {
        Write-Host "Breaking from loop"
        break
    }
}
if ( $count -ne 0) { Invoke-Command -ScriptBlock { & $strVPN $vpnArgs } }
else { Write-Host "No Internet Connectivity, so not attempting VPN connection" }
于 2012-04-28T23:16:49.263 に答える
3

これを実現するには、タスクをスケジュールしてスクリプトを実行し、イベント ID 1のイベント "Power-Troubleshooter" でトリガーします。これは、システムがスリープから再開したときにシステムによってログに記録されるイベントです。システムがスリープ状態になると、「Kernel-Power」イベントがイベント ID 42で呼び出されます(ここでの別の回答が示唆するものとは異なります)。

それが役立つことを願っています:)

于 2014-10-22T08:07:17.027 に答える
1

タスクスケジューラの方が適しているようです。

この場合、「起動時」のタスクトリガーが機能しない場合(機能しないと思われます)、スリープからの復帰時に投稿されたイベントログエントリを特定し、それをトリガーします。

于 2012-04-28T10:39:10.537 に答える