Outlook 2010 に今すぐサーバーに再接続するように指示する

Outlook 2010 に今すぐサーバーに再接続するように指示する

Windows 7 を実行している仮想マシンで Outlook 2010 を実行しています。ネットワークはホストを通じて提供されます。Outlook は Exchange サーバーに接続します。

ホストの IP アドレスが変更されると (たとえば、別の Wi-Fi ネットワークに移動した場合)、Outlook の接続が切断されます。詳しく調査したわけではありませんが、TCP 接続を頑固に保持し、新しい接続を開始しないようです。下部のステータス バーには「このフォルダーは <time> に最後に更新されました」と表示され続け、新しいメールはダウンロードされません。

「フォルダーの更新」ボタンや「すべてのフォルダーの送受信」ボタンを押しても効果はありません。オフライン モードに切り替えて (「オフラインで作業」ボタン)、オンラインに戻しても効果はありません。

場合によっては、Outlook が最終的に再接続することがあります。ただし、それには数分または数時間かかります。今すぐ Outlook に再接続するように指示するにはどうすればよいですか?

Outlook を終了して再起動すると機能しますが、混乱を招きます。この問題は、VM で Outlook を実行している場合、または IP アドレスが変更されるゲートウェイの背後で Outlook を実行している場合に特有のものです。Windows マシン自体の IP アドレスが変更された場合、Outlook は正しく再接続します。

答え1

Outlook を再起動したり、ネットワーク インターフェイスを無効にして (面倒な作業ですが) 再度有効にしたりする以外に、Outlook をサーバーに再接続させる方法を見つけることができませんでした。

そこで私が行うことは、次のスクリプトを使用して、VM とホスト間の仮想ケーブルを抜き差しすることですVBoxCableReconnect。もちろん、このスクリプトは VirtualBox に固有のものですが、他の VM テクノロジでも同様のことが可能だと思います。

#! /usr/bin/env perl
use strict;
use warnings;

sub vbox_list {
    my %vms;
    my ($running) = @_;
    my $what = $running ? 'runningvms' : 'vms';
    local $ENV{LC_ALL} = 'C';
    open VBOX, "VBoxManage list -l $what |" or die 'VBoxManage: $!';
    local $/ = "\n\n\n";
    while (my $section = <VBOX>) {
        my %vm = ();
        $section =~ s/\n\n.*//s; # strip shared folders, etc.
        foreach my $line (split /\n/, $section) {
            $line =~ s/\A([^:]+):\s+// or next;
            $vm{$1} = $line;
        }
        $vms{$vm{UUID}} = {%vm};
    }
    close VBOX;
    return %vms;
}

sub vbox_list_cables {
    my ($vms) = @_;
    my @cables;
    foreach my $vm (values %$vms) {
        my %vm = %$vm;
        foreach my $key (keys %vm) {
            next unless $key =~ /\ANIC *([0-9]+)\z/;
            my $num = $1;
            if ($vm{$key} =~ /(^|, )Cable connected: on($|, )/) {
                push @cables, [$vm{UUID}, $vm{Name}, $num];
            }
        }
    }
    return @cables;
}

sub vbox_iterate_cableconnected {
    my ($cables, $onoff) = @_;
    foreach my $cable (@$cables) {
        my ($uuid, $name, $num) = @$cable;
        system 'VBoxManage', 'controlvm', $uuid, "setlinkstate$num", $onoff;
        # TODO: report errors
    }
}

my %vms = vbox_list(1);
my @cables = vbox_list_cables(\%vms);
vbox_iterate_cableconnected(\@cables, 'off');
sleep(1);
vbox_iterate_cableconnected(\@cables, 'on');

ホスト上でネットワーク インターフェイスを起動するときに、VM を実行しているユーザーとしてこれを実行します。

答え2

時計の横にある Outlook アイコンを Ctrl キーを押しながら右クリックすると、「接続ステータス」という新しいメニュー項目が表示され、他の方法よりもはるかに速く再接続できます。

関連情報