タグ: WindowsServer2019

  • DFSRまわりの障害はそれなり発生するようだ

    今回、ADでDFSR(分散ファイルシステムレプリケーション)まわりのレプリケーションの問題が発生した。削除可能なものだったので、削除で対応したわけだが・・・。

    DFSRまわりの障害を調べてみると、いろいろと出てくる。仮想マシンで、スナップショットから戻したらダメとか。このパターンだと、バックアップから仮想マシンをリストアしてもDFSRの問題はでるということか。DFSRは、なかなか大変。

    以下、リンク。

    DFSR は、仮想化されたサーバーのスナップショットを復元した後にファイルをレプリケートしなくなりました
    https://learn.microsoft.com/ja-jp/troubleshoot/windows-server/networking/distributed-file-system-replication-not-replicate-files

    指定されたプライマリ メンバーで DFSR データベースがクラッシュした場合の復旧
    https://learn.microsoft.com/ja-jp/troubleshoot/windows-server/networking/recover-from-dfsr-database-crash

    Windows Server 2022 DFSR レプリケーションエラー(ID:4012と4614の対処法)
    https://qiita.com/iyokan5/items/4fdd086c79015e7d2991

    PowerShellでWindows DFSレプリケーション状態を確認し障害を検知する方法
    https://ittrip.xyz/powershell/powershell-dfs-replication-status

    あと、DFSRのタイプミスをしてしまう、DFRSとか、FDSRとか。

  • ADの降格作業で「DFS Replication アクセスが拒否されました」が発生した。

    ADの一部で DFS Replicationのエラーが発生して、正常な認証ができなくなった。そのため、不具合の発生したADを降格する作業を実施した。

    そのADの降格作業で「DFS Replication アクセスが拒否されました」が発生した。

    下記のMicrosoftの手順を使って、ADから対象のサーバを外す処理を行った。サーバ自体は利用予定もないため、「回避策2」の「[C] メタデータ クリーンアップ」を行った。

    https://jpwinsup.github.io/blog/2021/03/03/ActiveDirectory/PromotionAndDemotion/dfsr-access-is-denied-when-demotion

  • WindowsのDNSサーバの名前解決用の設定ファイルの保存場所

    Windows Serverの役割として、DNSサーバを追加したときの設定ファイル(ゾーンファイル)の保存。Windows Server 2008 R2, Windows Server 2019, Windows Server 2022のDNSサーバで確認したが、全部同じ保存パスだった。「ZONE 名.dns」のファイルが、ゾーンファイル。

    ■設定ファイルの保存場所

    %SYSTEMROOT%\system32\dns
    C:\Windows\System32\dns

    「ZONE 名.dns」というファイルがあり、これがゾーンファイルの形式になっている。中身はテキストなので、テキストエディタで開けば確認はできる。バックアップが必要ならば、このファイルをバックアップする。テキスト形式なので、subversionやGitに登録して、差分管理することも可。

  • Windows Server 2022で作成したADの機能レベルは2016

    Windows Server 2022で新しく作成したActive Directory(AD)のドメイン機能レベルはWindows Server 2016。

    Windows Server 2019やWindows Server 2022では新しく、ドメイン機能レベルは追加されていないため、機能レベルはWindows Server 2016で作成される。

  • Powershellで他のWindowsに接続するコマンドレット

    前提として、WinRMの設定が行われていて、リモート接続できること。Powershellを開いて、”Enter-PSSession” コマンドレットを実行することで、別のWindowsにPowershellで接続でき、コマンドレットやDOSコマンドを実行することができる。

    Enter-PSSession -ComputerName 接続先のホスト名やIPアドレス -Credential ログイン名

    接続できると、プロンプトのところに、接続先のホスト名が表示されるので、どこにつながっているのかがわる。

    接続を終了するときは、”Exit-PSSession”もしくは”exit” で抜ける。

    実行例。

    PS C:\Users\zen> Enter-PSSession -ComputerName Labo07 -Credential psadmin
    PowerShell credential request
    Enter your credentials.
    Password for user psadmin: *********
    [Labo07]: PS C:\Users\psadmin\Documents>
    [Labo07]: PS C:\Users\psadmin\Documents> Exit-PSSession
    PS C:\Users\zen>
  • Powershellで大容量ファイルの中身をクリア(消す)する方法

    Windowsの端末(Windowsサーバ)で、ログファイルを消さずに、中身だけを消して、クリアにしたかった。Linuxだと、catコマンドを使って、空データで上書きをやっている。Windowsだと、catコマンドがないので、できず。Powershellで、同じようになる方法を調べた。

    Powershellを使って、ファイルの中身だけをクリアする(消す)には、Clear-Contentコマンドレットを使用する。Clear-Itemだとファイル自体を消してしまうが、Clear-Contentは、ファイルを残したまま、中身のみを削除する。

    Clear-Content ファイル名

    実行例)

    PS C:\apache2\logs> dir
        ディレクトリ: C:\apache2\logs
    Mode                LastWriteTime     Length Name
    ----                -------------     ------ ----
    -a---        2023/06/12     14:17  754742089 access.log
    -a---        2023/06/12     14:12  754741796 access.log.1
    PS C:\apache2\logs> Clear-Content .\access.log
    PS C:\apache2\logs> dir
        ディレクトリ: C:\apache2\logs
    Mode                LastWriteTime     Length Name
    ----                -------------     ------ ----
    -a---        2023/06/12     14:19          0 access.log
    -a---        2023/06/12     14:12  754741796 access.log.1
    PS C:\apache2\logs> dir
        ディレクトリ: C:\apache2\logs
    Mode                LastWriteTime     Length Name
    ----                -------------     ------ ----
    -a---        2023/06/12     14:20        240 access.log
    -a---        2023/06/12     14:12  754741796 access.log.1

    なお、Windows Server 2008 R2でもClear-Contentは使えたので、環境を選ばずに使えそうだ。

    参考: https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.management/clear-content?view=powershell-7.3

  • Powershellでプロレスのスレッド数をカウントするコマンド

    Powershellでコマンドレットを組み合わせて、Windows上で実行されているスレッドの数を確認する。

    Get-Process だけを実行すると、プロセス名がわかるので、そのプロセス名で絞り込むこともできる。

    例) Windows上で動作しているスレッド数をカウントするコマンドレット

    (Get-Process|Select-Object -ExpandProperty Threads).Count

    例) Windows上で動作しているプロセスのJavaで起動されているスレッド数をカウントするコマンドレット

    (Get-Process Java |Select-Object -ExpandProperty Threads).Count

    例) Windows上で動作しているプロセスのTomcatで起動されているスレッド数をカウントするコマンドレット

    (Get-Process Tomcat9 |Select-Object -ExpandProperty Threads).Count

    おまけ:例)プロセスの数をカウントするコマンドレット

    (Get-Process).count
  • SQL Serverで「RPC に対して構成されていません」エラーが出たときの対処

    SQL Server 2005から、SQL Server 2019へのリンクサーバで、リンクサーバ先のプロシージャーを起動させたら、下記のRPCのエラーがでた。

    RPC に対して構成されていません。

    下記の方法で対処した。

    1.SQL Server Management Studioで、リンクサーバを選択して、「プロパティ」を開く。

    2.プロパティの「サーバー オプション」を開く。

    3.「RPC出力」の箇所を、「True」に変更する。

    これで、もう一度実行してみる。

  • Windows Updateには、80番ポートも必要

    ネットワーク的に外部との通信を厳しく制限している環境で、Windows Server 2019のWindows Updateをやっていた。httpsでの外部通信用に443番ポートは通信できるようにしていたが、http用の80番ポートはファイアウォールで閉じたままだった。

    443番ポートだけ開けてあって、80番ポートを閉じたネットワークで、Windows Updateを行うと、アップデート対象のリストの取得ができなくてエラーになる。最初の通信を80番ポートでやっているため、80番ポートでの通信ができないとWindows Updateができない。Windows Updateには、80番ポートと443番ポートを使う、というのは本当で、「と」というのがポイント。「or」ではなく「and」である。

    ちなみに、Windows Updateで80番ポートを使わない方法を探して、いろいろと試したがことごとく失敗した。両方のポートが必要だ。

  • Powershellでless +Fっぽいことをやる

    Windowsで、テキスト形式のログをリアルタイムで確認したくて、”less +F” や “tail -f” のようなものがないかと調べていたら、Powershellでできるとのこと。

    Get-Content -Path ログファイル -wait -tail 0

    止めるときは、「Ctrl + C」で止める。

    もし、文字化けが発生する場合には、「-encoding utf8」(utf8の部分は適切な文字コードに変える)を付けて実行する。

    使ってみたが、便利。問題はコマンドを忘れそうなこと。

    参考: https://saoline.co/wordpress/?p=1182