Windowsサーバー関連備忘録

## OSユーザーを作成する
```bat
net user ユーザー名 パスワード /add /active:yes /expires:never /fullname:"名前" /passwordchg:no /passwordreq:yes /workstations:*
wmic useraccount where "Name='ユーザー名'" set PasswordExpires=FALSE
net localgroup "追加したいグループ名" "ユーザー名" /add
```

## OSを再起動する
rのところをsにすればシャットダウンとなる

```bat
shutdown /r /t 0
```

## メモリの情報をファイルに出力する
```bat
WMIC PATH Win32_PerfFormattedData_PerfOS_Memory GET /FORMAT:LIST > c:\xxx.txt
```

## ディスクの情報をファイルに出力する
```bat
WMIC PATH Win32_PerfFormattedData_PerfDisk_LogicalDisk WHERE "Name = 'C:'" GET /FORMAT:LIST > c:\xxx.txt
```

## プロセスの情報をファイルに出力する
```bat
WMIC PROCESS WHERE name='XXX.exe' > c:\xxx.txt
```

## 特定のフォルダをドライブ化する
以下のコマンドでDドライブが出来上がる

```bat
subst D: C:\D_TEST
```
解除する時は/dを付ける

```bat
subst D: /d
```

## サーバーに接続しているユーザーを確認する
・タスクマネージャーの「ユーザー」タブで確認可能
・状態が「空白」だとそのユーザーはアクティブである
　・現在接続状態であるということ
・状態が「切断」だとそのユーザーは非アクティブである
　・接続は無いがセッションが残っているということ
　　・リモートデスクトップを終了するときに×で閉じるとこうなる
　　　（サインアウトすれば、セッションも切れるので、そもそも表示されない）

## ポート番号を指定した応答確認をしたい
powershellで以下のコマンドを実行する(コマンドプロンプトだと実現不可)

```powershell
Test-NetConnection -ComputerName サーバー -Port ポート番号
```

## 指定したフォルダのファイル一覧を出力する

```bat
dir [フォルダ] /b /a-d /s > [出力ファイル]
```

## 指定したフォルダのフォルダ一覧を出力する

```bat
dir [フォルダ] /b /a:d /s > [出力ファイル]
```

## フォルダのアクセス権について

特に継承が分かりにくいが、以下ページの説明が分かりやすい
https://ittrip.xyz/soft/windows/keishou
https://ittrip.xyz/soft/windows/ko-entori

## ドメイン環境で、ユーザーが所属しているグループを取得する

```bat
net user /domain ID
```

## ドメイン環境で、グループのメンバーを取得する

```bat
net group /domain ID
```

## icaclsコマンドを使ったアクセス権設定

rem Everoneに変更権限を付与する場合
(OI)(CI)は、適用先を"このフォルダー、サブフォルダーおよびファイル"とするという意味
(M)は、アクセス権を"変更権限"とするという意味
```bat
icacls "対象フォルダ" /grant Everone:(OI)(CI)(M)
```
上記コマンドには入っていないけど、調べてオプションをメモする
/inheritance:e　⇒継承を有効化する（これがデフォルトっぽい）
/inheritance:d　⇒継承を無効化し、親から継承されたACEをもとに設定し直す（エントリはあるけど継承元が無しになる）
/inheritance:r　⇒継承を無効化し、親から継承されたACEは削除する

/c　⇒エラーが発生しても処理続行
/t　⇒サブフォルダ・ファイルもということらしく、ACL出力表示のときは使うけど、権限付与の時は使わない

## プロキシについて

設定が2か所あることに注意
１．「インターネット オプション」⇒「接続」タブ⇒「LANの設定」
２．WinHTTP
1つ目は有名けど、2つ目は見逃しやすい
特にWindows Update周りで問題があるときは２を確認してみるとよい
以下のサイトが詳しい
https://bizlog.tech/windows-winhttp-proxy/

## AD(ActiveDirectory)のセキュリティグループ配下のメンバーを取得する
-expandを付けることで、グループがネストされていても全て展開する

```bat
dsquery group -s ADサーバー名 -u ユーザーID -p パスワード -name グループ名 | dsget group -s ADサーバー名 -u ユーザーID -p パスワード -members -expand
```

## SQL Serverのデータエクスポートについて
-Nオプションは、ネイティブなデータ型での一括コピー操作となる

```sql
bcp [データベース名].[スキーマ名].[テーブル名] out [出力ファイルパス] -U [ユーザー名] -P [パスワード] -S [サーバー名] -N
```

## フォルダのローテーション

```bat
rem 7世代残してそれより古いフォルダは削除（最終更新日時を見ている）
for /f "skip=7" %%B in ('dir /b /o-d C:\dump\*') do rd /s /q C:\dump\%%B
```

## グループポリシーについて
グループポリシーとは、ユーザーのコンピュータやアプリケーションの設定を集中管理出来る機能のこと。

グループポリシーはいくつか種類がある
１．ローカルコンピュータ（ローカルグループポリシー）
２．サイト（ADのドメインのグループポリシー）
３．ドメイン（ADのドメインのグループポリシー）
４．OU（ADのドメインのグループポリシー）

下にいくほど優先順位が高くなる
例えば、１と４で同じ項目に設定がある場合、４のほうで上書きされる
設定が被っていなければ、上書きされることなく引き継がれていく
（基本的には。継承のブロックとか上書き禁止とかも設定出来るみたい）

グループポリシーは即時反映ではなく、タイミングがある

使っているPCのグループポリシーがどうなっているかは以下のコマンドで確認可能
gpresult /H C:\gpo.html
/Hオプションがhtml形式で出力するという意味

## 初期設定
１．ホスト名とIPアドレスの設定
２．リモートデスクトップの設定
３．UACの無効化
４．ユーザアカウント制御(AdministratorユーザとAdministratorsグループの権限が一部異なっているのを合わせる)
５．ネットワーク設定(network scaling packの無効化)
６．電源管理(高パフォーマンスにする)
７．OSライセンスのアクティベート
８．IPv6の無効化
９．NTPサーバの設定