3

特定のサービスアカウントで実行されるTopshelfサービスがいくつかあります。コマンドラインから手動でサービスをインストールする場合は、-interactiveフラグを使用でき、ダイアログボックスが表示され、ユーザー名とパスワードを入力できます。Powershellスクリプトを使用してこれを自動化できるようにしたいと思います。

誰かがこれを行う方法を知っていますか?(特にPowershellについては気にしませんが、インストールスクリプトでユーザー名とパスワードを指定するにはどうすればよいですか。)

Travisが述べたように、私はコマンドラインオプションを調べました。ほとんど私のために働いていますが、今私は1つのエスケープの問題があります。インストールするには、たとえばMyService.exe install -username:Foo -password:Barと入力します。

ただし、ユーザー名オプションにはドメインとユーザー名の両方を指定する必要があります(これは--interactiveルートを実行することでわかります):MyService.exe install -username:mydomain \ $ myusername -password:Bar

私はこれを逃れる方法を見つけることができません!申し訳ありませんが、私の質問は別の質問に変わりました。回答済みのマークを付けて、別の質問を開く必要があるかもしれません。

4

3 に答える 3

4

Travisは、コマンドラインオプションを使用して正しい方向に私を向けました。プレフィックスが「$」であるサービスアカウントのユーザー名にもう1つ問題がありました:domain \$myuser。「install」コマンドがそれを受け入れるように、それをエスケープする方法を見つけることができませんでした。

同様のユーザー名「myuser」($なし)を作成しました。これで問題なく動作します。

MyService.exe install -username:domain\myuser -password:Bar 
于 2013-03-27T19:45:09.633 に答える
1

ユーザー名とパスワードは、私の設定のサービスのapp.configでの構成です。これは、のサービスセットアップブロックで使用されますRunAs

さらに、Topshelfには他のコマンドラインオプションがあります。ドキュメントが100%最新であるかどうかはわかりませんが、開始するのに適した場所です。

于 2013-03-27T15:22:15.887 に答える
1

将来の読者のために:

このURLを参照してください:

https://kristofmattei.be/2015/01/15/topshelf-install-powershell-get-credentials/

上記のURLからの重要な引用は次のとおりです

見積もりを開始

So the best version is:

$credentialsOfCurrentUser = Get-Credential -Message "Please enter your username & password for the service installs"
$networkCredentials = $credentialsOfCurrentUser.GetNetworkCredential();
$username = $credentialsOfCurrentUser.UserName
$password = $networkCredentials.Password

Now that we have those variables we can pass them on to the install of the Topshelf exe:


. $pathToServiceExe install -username `"$username`" -password `"$password`" --autostart


Notice the backticks (`) to ensure the double quotes are escaped.

見積もり終了

于 2017-03-24T14:16:57.893 に答える