ADの一部で DFS Replicationのエラーが発生して、正常な認証ができなくなった。そのため、不具合の発生したADを降格する作業を実施した。
そのADの降格作業で「DFS Replication アクセスが拒否されました」が発生した。
下記のMicrosoftの手順を使って、ADから対象のサーバを外す処理を行った。サーバ自体は利用予定もないため、「回避策2」の「[C] メタデータ クリーンアップ」を行った。

ADの一部で DFS Replicationのエラーが発生して、正常な認証ができなくなった。そのため、不具合の発生したADを降格する作業を実施した。
そのADの降格作業で「DFS Replication アクセスが拒否されました」が発生した。
下記のMicrosoftの手順を使って、ADから対象のサーバを外す処理を行った。サーバ自体は利用予定もないため、「回避策2」の「[C] メタデータ クリーンアップ」を行った。

Veeam Backup & Replicationのサーバを、旧サーバから新サーバに移行するための公式ナレッジベースは下記。
https://helpcenter.veeam.com/docs/backup/vsphere/vbr_config_migrate.html?ver=120
https://www.veeam.com/kb1889
Veeam Backup & Replication を別のバックアップ サーバーに移行する場合は、次の手順を実行する。
移行前と移行後のVeeam Backup & Replicationのバージョンはそろえておく必要がある。移行前のVeeam Backup & Replicationのバージョンが古い場合は、移行前にアップグレードして、そのインストーラーを使って、新しいVeeam Backup & Replicationをインストールする。
この方法だと、ライセンスファイルも動いてしまうため、1日で移行とテスト、切り替えを行う必要がある。
AnyConnectで接続後、VPN接続先のウェブのシステムにアクセスすると最初は利用できるが、何回か動作しているうちにタイムアウトする。一度発生すると、ブラウザを変えても同じような状況になる。
Windows PCを再起動すると、一時的にアクセスできるようになるが、また同じ状況が発生する。
Windowsのイベントログをみると「cscan.exe」のエラーが多数発生していた。
この「cscan.exe」を調べると、CiscoのAnyConnectクライアントで使われているものだった。VPN接続時のみで発生しているもので、VPN接続もやや遅いことを考えると、「cscan.exe」が悪さをしているようだ。
対応として、Cisco AnyConnectクライアントのインストーラーを起動して、「Repair」を選択して、AnyConnectクライアントの修復を行った。修復後に試すと、問題は解消された。AnyConnectクライアントが何らかの原因で壊れていたのが原因。
Windowsで、Excelの表をJSONに形式にする必要があったので、ExcelからCSVファイルで保存して、Powershellを使って、CSVファイルをJSON形式のファイルに変換した。
使ったPowershellのスクリプト(コマンドレット)は下記。
# CSVファイルのパスを指定
$csvFilePath = "C:\path\to\your\file.csv"
# JSONファイルのパスを指定
$jsonFilePath = "C:\path\to\your\file.json"
# CSVファイルをインポート
$csvData = Import-Csv -Path $csvFilePath
# JSONファイルにエクスポート
$csvData | ConvertTo-Json | Set-Content -Path $jsonFilePath
最初の2つは、CSVファイルと出力するJSONファイルの指定なので、直接指定すれば2行でOK。
1行ずつ、Powershellのプロンプトに入力していけば実行できるので楽。文字コードは全部がUTF8で行う想定だったので指定していないが指定することも可能。
Google Workspace上のメーリングリスト一覧を整理するために。GoogleWorkspaceの管理機能だと1つずつダウンロードしていくことになるので、GAS(Google Apps Script)で出力するようにした。ベースになるGASのスクリプトは、Copilotに生成させて、それを少しだけ手直しさせた。GoogleのGeminiだと、ベースも作成できず。
Google Driveから、新規作成で、その他からApps Scriptを選択して、新しいプロジェクトを作り、コード.gsに下記のコードの部分をコピペ。実行するためにAPIを利用するので、サイドのサービスから「Admin SDK API」を追加する。このスクリプトの実行は、Google Workspaceの管理権限の中のGoogle Groupの管理権限があるユーザでないといけない。フル権限である必要はないけれど。
以下はコード。
// GASでGoogleWorkspaceのメーリングリストと、メーリングリストのメンバーを取得して一覧にするスクリプト
// 出力先は、Google spreadsheet
function myFunction() {
listMailingListsAndMembers()
}
// 単機能なら、直接myFunctionの中にいれてもいい。
// または、呼び出さずに直接実行してもいい。
function listMailingListsAndMembers() {
// Spreadsheetはルートフォルダ=マイドライブの直下に保存される。
var sheet = SpreadsheetApp.create("Mailing Lists and Members").getActiveSheet();
sheet.appendRow(["Mailing List", "Member"]);
// AdminDirectory. を実施するためには、サービスから「Admin SDK API」を追加する。
// 実行時に権限を承認する必要がある。また、実行ユーザがGoogleWorkspaceの該当する機能の権限を持っている
var groups = AdminDirectory.Groups.list({customer: 'my_customer'}).groups;
if (groups && groups.length > 0) {
for (var i = 0; i < groups.length; i++) {
var group = groups[i];
var members = AdminDirectory.Members.list(group.email).members;
var memberEmails = [];
if (members && members.length > 0) {
// メーリングリスト内のメンバーの数だけ繰り返し
for (var j = 0; j < members.length; j++) {
// メーリングリスト内のメンバーを、memberEmailsの配列に追加
var member = members[j];
memberEmails.push(member.email);
}
} else {
memberEmails.push("No members");
}
// シートに書き込む
sheet.appendRow([group.email].concat(memberEmails));
}
} else {
sheet.appendRow(["No mailing lists found", ""]);
}
}

Veeam Backup & Replication 12.3のインストール要件は、以下のページに記載されている。
抜粋。
最新のWindows Serverに対応しているのはいいこと。
「msvcp140_atomic_wait.dll」が見つからないというエラーがでて、Teamsから別のプログラムを呼び出せなくなる事象があった。これの対処方法。
「msvcp140_atomic_wait.dll」は、「Visual C++ 再頒布可能パッケージ」に含まれているので、これを修復するか、インストール(上書きインストール?)を試す。
「msvcp140_atomic_wait.dll」をインストールする場合は、下記のMicrosoftのサイトからダウンロードする。
https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170
通常は、OSのビット数に合わせて、x64(64ビット)か、x86(32ビット)かを選んで試す。ただ、OSのビット数とは違うバージョンを呼び出している場合もあるので、ダメだったら別ビット数の方も試す。
壊れた原因は、アンチウィルスが悪さをしたか、Windows Updateの影響か。ユーザの動作によらず、急に不具合が発生する可能性はある。
VDI端末からだと、Windowsの機能でのワイヤレスディスプレイに接続できないことがある。
PINコードをいれても、VDI側のWindowsの機能だったりするのでミラーリング等の投影ができない。
DBのテーブルを作成するDDLが個別ファイルで保存していたのだが、1つ1つ開いてコピペして実行していくのは大変。テキストファイルのため、Powershellで1つのファイルにまとめて(マージ)した。そのコマンドのメモ。
Get-Content *.txt | Set-Content マージ後のファイル名.txt
DBのテーブルを作成するDDLが個別ファイルで保存していたのだが、1つ1つ開いてコピペして実行していくのは大変。テキストファイルのため、Powershellで1つのファイルにまとめて(マージ)した。そのコマンドのメモ。
Get-Content *.txt | Set-Content マージ後のファイル名.txt