Azure Automation DSCを使用してAzure VMを設定しようとしています。私が設定したいリソースの1つは、xDnsServerAddress
からxNetworking
モジュールまでのクライアントワークステーション上のDNSです。DSCの変数にPowerShell式の結果を登録する方法は?
Azure VMのインターフェイスエイリアスとインターフェイスエイリアスの変更は、展開によって異なります(主にVMはEthernet
またはEthernet 2
のいずれかになります)。
私はローカルで次のコマンドレット式を使用して、インターフェイス名を照会することができます
は$Interface=Get-NetAdapter|Where Name -Like "Ethernet*"|Select-Object -First 1
$InterfaceAlias=$($Interface.Name)
私は知りません、しかし、どのようにDSC内でそれを使用します。
マイDSCの構成は(関連部分のみ)以下の通りです:
:Configuration MyDscConfig { Import-DscResource -ModuleName xNetworking # place-1 Node $AllNodes.where{$_.Role -eq "Workstation"}.NodeName { # place-2 xDnsServerAddress DnsServerAddressSetToDc1 { Address = '10.0.0.4' InterfaceAlias = $InterfaceAlias AddressFamily = 'IPv4' Validate = $true } } }
問題は、私はコマンドレットの表現を配置する場合のいずれか
place-1
またはplace-2
にコンパイルジョブがで失敗するということです設定変数 "ErrorActionPreference"または共通パラメーターがStopに設定されているため、実行中のコマンドが停止しました。 'Get-NetAdapter'という用語は、コマンドレット、関数、スクリプトファイル、または実行可能プログラムの名前として認識されません。名前のスペルを確認するか、パスが含まれている場合は、パスが正しいことを確認してから、もう一度やり直してください。
私はそれがプルサーバー上Get-NetAdapter
を実行しようとすると仮定し、私はエラーメッセージを誤って解釈することができます。
どのようにして宛先マシンにコマンドレット式の結果を登録し、xDnsServerAddress
リソースの変数$InterfaceAlias
に登録できますか?
うん、[私はそれを書いた](https://github.com/PowerShell/xNetworking/commit/521166bef8373f72438d2f7643ead8e31daf61ce)、私はそれを免責と呼ぶでしょう。 – TravisEz13
が追加されました。これは私が現在知っている最善の方法です。このソリューションは、プル構成とプッシュ構成の両方で動作します。基本的には、(@techraf)あなたが思いついた解決策に非常に似ています。 DSCは宣言型言語であると考えられているので、NICのDNSサーバーを設定し、NICを検索するためのリソースを分けておく方が良いでしょう。この解決法は、命令的言語を宣言的言語と分離しておく。うまくいけば、長期的には、DSCチームは値を照会して設定の後半でパラメータとして使用するより良い方法を思いつくことができます。 – TravisEz13
状態を照会し、その状態に基づいて宣言的な操作を実行することは、パラダイムを命令的なものに変えますか?これは修辞的な問題ではない、私は本当に興味がある。宣言的絶対に加えて宣言的相対的な可能性はないのですか? – techraf