-1

スタートアップスクリプトを使用してWindows Server 2016を実行しているGoogle Cloud Computeインスタンスをプログラム的に起動しています。Windows ServerスタートアップスクリプトのPSExec

起動スクリプト内の実行可能ファイルは、特定のユーザーとして起動することが必要なので、私がシミュレートするpsexecでそれを起動しようとしているユーザーを言った:

C:/psexec.exe \\\\WIN-SERVER-2016 -u WIN-SERVER-2016\\customuser -p custompassword -accepteula -w "c:/app" cmd /c node index.js

c:/app/index.jsはハローシンプルな世界が含まれていますこれはファイルに書き込む必要があります。

ユーザーとしてログインし、cmdからこの正確なコマンドを起動すると、ファイルが書き込まれます。起動スクリプト(Google Cloud Compute Engineインスタンスでwindows-startup-script-cmdとして提供)から起動すると、ファイルが書き込まれません。

解決策は何ですか?特定のユーザーとして起動スクリプトを実行する効率的な方法はありますか?

+0

起動時に実行するスケジュールされたタスクを作成します。 –

+0

@AnsgarWiechers私は既に起動時にタスクを実行しています。 psexecが正しく実行されません。 – Dean

+0

それではなぜ 'psexec'が必要でしょうか?カスタムユーザーとして実行するようにタスクを構成するだけです。 –

答えて

1

この問題を見ると、PSEXECを使用することはお勧めしません。

PSはネイティブでサポートしていないリモートシステムでGUIを呼び出すためにPSExecを使用します。あなたがある場合、これはまた、メタデータのキーからそれを取る必要があります

$username = 'WIN-SERVER-2016\customuser' 
$password = "custompassword" 
$secstr = New-Object -TypeName System.Security.SecureString 
$password.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)} 
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $secstr 

$Script_block = {cmd /c node index.js} 

Invoke-Command -ComputerName WIN-SERVER-2016 -Credential $cred -ScriptBlock $Script_block 

:あなたのケースでは

、私はInvoke-Commandコマンドにこのような

何かを使用して実行するようにお勧めしますwindows-startup-script-cmd

注:私はアクセプタを考慮しませんでした-w "c:/ app"部分。それに応じてプレースホルダを組み込んでください。

希望するのは... !!!

+0

これまでPowerShellを使用したことはありません。これは、私がインスタンスの起動スクリプトとしてロードするはずのPowershellスクリプトですか?それは非常に役に立つと思われます、ありがとう! – Dean

+0

はい、それはパワーシェルです。あなたはPowershell ISEでそれを動かすことができます。実行に> Powershell_iseと入力してください。それは開くでしょう –

+0

@Dean:それがあなたを助けるならば答えを受け入れてください。 –

関連する問題