質問: C#を使って、ADFSサーバから認証ポリシーの設定値の取得がしたいです。 同一ドメイン内の他サーバからADFSサーバの認証ポリシーを取得するツールを考えています。 取得したい情報としては、ADFSの認証ポリシー>プライマリ認証>グローバル設定>イントラネットの認証方法です。 設定値としてはフォーム認証、Windows認証、証明書認証の3パターンがあるのですが、どの設定になっているかを取得したいです。 C#からPowerShellを呼んで取得する方法でもありだと思うのですが、 ADFSサーバ上でしか実行できなくて困っています。 PowerShellスクリプトは以下の通りなのですが、 これをリモートで取得するのは難しいのでしょうか? Get-AdfsGlobalAuthenticationPolicy | Select PrimaryIntranetAuthenticationProvider 上記のスクリプトをADFSサーバ以外のサーバ、端末から実行すると以下のエラーが発生します。 Get-AdfsGlobalAuthenticationPolicy : 用語 'Get-AdfsGlobalAuthenticationPolicy' は、コマンドレット、関数、スクリプト ファイル、または操作可能な プログラムの名前として認識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。 発生場所 行:1 文字:1 + Get-AdfsGlobalAuthenticationPolicy + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (Get-AdfsGlobalAuthenticationPolicy:String) [], CommandNotFoun dException + FullyQualifiedErrorId : CommandNotFoundException ADFSサービスをインストールしないとこのコマンドは使えないようです。。。 何か代替案はありませんか?( ;∀;)
回答: 該当のコマンドレットは、PowerShellモジュール"ADFS"をインポートすることで利用可能になります。 (Windows10くらいからは明示的にインポートしなくても、コマンドレットを判断して自動的にインポートしてくれますけどね) その為、当然操作端末にインストールされていないモジュールはインポートされることはありません。 外部からCUIやGUIでサーバーの操作を行う場合、RSAT(Remote Server Administration Tools)を導入する必要があります。 RSATの中には、サーバー用の各種PowerShell用のモジュールが含まれているので、これを導入してみてはどうでしょうか? また、他の手順として少々胡乱ですが、Invoke-CommandやEnter-PSSessionコマンドレットを使用する手もあるかと思います。 こちらはあまり実装としてスマートとは言えないですが...