トップ回答者
Windows Storage Server 2012 R2 Standard WORKGROUP環境のパスワード変更と有効期限

質問
-
はじめまして
Windows Storage Server 2012 R2 Standardにて
WORKGROUP 環境のファイルサーバを利用しております。
ローカル端末をwinsows7、windows10
利用ユーザーへはリモートデスクトップでの接続を許可していない為、
下記方法での定期的なパスワード変更をお願いしています
パスワード変更方法
ローカル端末のパスワード変更画面から、
ユーザー名にサーバを指定して(ファイルサーバIP\ユーザー名)
パスワードの変更を実施
共有フォルダアクセス時の「Weindowsセキュリティ」のポップアップからは、
有効期限がわからず有効期限切れとなり、
上記方法ではパスワード変更ができなくなります。
そこで質問ですが
1.WORKGROUP 環境のファイルサーバにおいて、
ユーザーに対して有効期限を自動的に通知する(有効期限間近であることを伝える)方法
2.有効期限切れでもファイルサーバ利用ユーザー自身でパスワード変更する方法
はありませんでしょうか
他の記事にて、すでに掲載があるようでしたら申し訳ありませんが
記載記事お教えいただけると助かります。
回答
-
チャブーンです。
ワークグループのWindows Serverのパスワード変更ですが、おっしゃる問題(期限切れになるとパスワード変更画面でアクセスできない)は、「名前付きパイプ」にパスワードを変更するためのサービス(SAMR)が設定されていないためです。名前付きパイプは匿名で必要なサービスにアクセスできる便利な機能ですが、セキュリティ上問題もあるので、最近のWindowsでは以前と比べ制限されている実情があります。
設定方法は、したの過去ログを参照してください。
ワークグループのサーバーアカウントのパスワード期限をクライアントに通知するしくみはWindowsにはありません。それを使いたい場合Active Directoryを構成する必要がありますが、名前付きパイプを設定できれば期限は関係なくなるので、質問者さんのケースでは必要もないでしょう。
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 編集済み チャブーンMVP, Moderator 2017年12月14日 5:55
- 回答の候補に設定 栗下 望Microsoft employee, Moderator 2017年12月18日 0:03
- 回答としてマーク うの しげみ 2017年12月19日 2:37
すべての返信
-
チャブーンです。
ワークグループのWindows Serverのパスワード変更ですが、おっしゃる問題(期限切れになるとパスワード変更画面でアクセスできない)は、「名前付きパイプ」にパスワードを変更するためのサービス(SAMR)が設定されていないためです。名前付きパイプは匿名で必要なサービスにアクセスできる便利な機能ですが、セキュリティ上問題もあるので、最近のWindowsでは以前と比べ制限されている実情があります。
設定方法は、したの過去ログを参照してください。
ワークグループのサーバーアカウントのパスワード期限をクライアントに通知するしくみはWindowsにはありません。それを使いたい場合Active Directoryを構成する必要がありますが、名前付きパイプを設定できれば期限は関係なくなるので、質問者さんのケースでは必要もないでしょう。
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 編集済み チャブーンMVP, Moderator 2017年12月14日 5:55
- 回答の候補に設定 栗下 望Microsoft employee, Moderator 2017年12月18日 0:03
- 回答としてマーク うの しげみ 2017年12月19日 2:37
-
やきです。
期限切れを確認するのはそれほど難しくないですが、事前通知が難しそうですね。
案としては…
・予めユーザの属性にメールアドレスなどを入れておき、そのアドレスにメールを出す。
あるいはMLに「今日の期限切れユーザー」みたいなコーナーを作って、毎日期限切れしたアカウントの一覧を送る。
・クライアント端末のログオンスクリプトに、コマンドをリモートで実行するようにさせる。
期限切れなら変更を促す。
ユーザ名は一つで良いのでforeachのループは不要。userObj.Nameのところをログオンユーザにする。
・msg コマンドでメッセージをユーザに送る(端末も特定が必要)。
といったところでしょうか。
<# ローカルアカウントの期限切れ一覧取得 #> $WarningRemainDays = 14 # この猶予を下回るとパスワード警告を出す # パスワード期限と期限切れまでの日数を取得 $result = @() $accountObjList = Get-CimInstance -ClassName Win32_Account $userObjList = Get-CimInstance -ClassName Win32_UserAccount $template = New-Object PSObject | Select Name,ExpirationDate,ExpirationRemainDays,isWarning foreach($userObj in $userObjList) { $IsLocalAccount = ($userObjList | ?{$_.SID -eq $userObj.SID}).LocalAccount if($IsLocalAccount) { $dirObj= [ADSI]("WinNT://$($env:COMPUTERNAME)/$($userObj.Name),user") $ExpirationDate = $dirObj.InvokeGet("PasswordExpirationDate") $ExpirationRemainDays = ($ExpirationDate - (Get-Date)).Days $template.Name = $userObj.Name $template.ExpirationDate = $ExpirationDate # 期限が切れる日 $template.ExpirationRemainDays = $ExpirationRemainDays # 期限が切れるまでの猶予 $template.isWarning = ($ExpirationRemainDays -le $WarningRemainDays) $result += $template.PSObject.Copy() } } $template = $null # isWarningがTrueのものを警告対象にすればよい $result
Name ExpirationDate ExpirationRemainDays isWarning ---- -------------- -------------------- --------- Administrator 2015/12/24 15:55:34 -721 True DefaultAccount 2018/01/17 16:45:47 33 False Guest 2018/01/26 13:14:08 41 False
以上、参考まで。
- 編集済み やき(Yaki) 2017年12月15日 4:23 誤字修正
- 回答の候補に設定 栗下 望Microsoft employee, Moderator 2017年12月18日 0:03