2016-03-26 22 views
0

Windowsサーバーで新しいユーザー作成プロセスをスクリプト化しようとしています。このスクリプトの一部は、その特定のユーザーのSPNレコードを設定することです。しかし、私はエラーが発生する"新しいADUser:名前の参照が無効です"私は値を持つSPNパラメータを配置しようとすると。私はマイクロソフトのウェブサイト(Link)の例に従おうとしています。新しいADUser、サービスプリンシパル名の設定中にエラーが発生しました

ServicePrincipalNamesパラメータ自体を削除すると問題なく動作します。

Import-Module ServerManager 
Add-WindowsFeature RSAT-AD-PowerShell 
Import-Module ActiveDirectory 
[email protected]{ 
    Name="SQL Service Account For $customerName" 
    DisplayName= "SQL Service Account For $customerName" 
    ServicePrincipalNames= @{Add="MSSQLSvc\'$dbServerName.$domainName':1433","MSSQLSvc\'$dbServerName':1433"} 
    Description= "SQL Service Account For $customerName" 
    UserPrincipalName= "[email protected]$domainName" 
    GivenName= "SQL Service Account For" 
    Surname= "$customerName" 
    SamAccountName= $sqlUser 
    AccountPassword= $pwdsql 
    Path= $path 
    LogonWorkstations= $dbServerName 
    TrustedForDelegation= $true 
    Enabled= $True 
    Credential= $credential 
    PasswordNeverExpires= $True 
    CannotChangePassword= $True 
    } 


New-ADUser @properties 

だからここのおかげで、

ラーフル

+0

SPNから一重引用符を削除し、コンマで区切って二重引用符で囲んだ単一の文字列にします。 –

+0

@AnsgarWiechers、それは試みたが動作しません。私はまだ同じエラーが発生します。どちらの方法でも動作するはずがありませんか? – r4hul

+0

@AnsgarWiechersので、 "@ {Add = ..."も削除すると動作します。また、 ":"の問題を避けるためにこのように文字列を変更し、 "\"を "/"に変更してSPNを作成しました。それでもどちらが正しいフォーマットか不思議です。 – r4hul

答えて

0

は、私はそれを動作させるようになった方法です。私はこれがすべてのケースでうまくいくのかどうかはわかりませんが、今のところ私のケースでうまくいきます。サービスプリンシパル名の入力を次のように変更しました。

ServicePrincipalNames= "MSSQLSvc/${dbServerName}.${domainName}:1433", "MSSQLSvc/${dbServerName}:1433" 

これにより、SPNレコードに2つのエントリが作成されます。コンマで区切られた1つの文字列を入力すると、コンマで区切られた2つの項目が1つのエントリとして作成されます。

誰かが私の質問で言及したMicrosoftのURLに表示されている方法ではなく、このように動作する理由を知っているかどうか教えてください。おかげさまで

+0

これは昨日チェックしたところ、New-ADUserコマンドレットであるため、パラメータのハッシュテーブルに動詞(Add、Remove、Replace)を追加する必要はありません。以前はオブジェクトが存在しなかったため、妥当な唯一の選択肢は、新しく作成されたオブジェクトに値を追加することです。 ドキュメントは、単にSet-ADUserコマンドレットから単純にコピーされるようです。 –

関連する問題