0

私は vCenter 6.5 を研究しており、コミュニティのサンプルは大いに役立ちますが、この特定の状況では何が起こっているのかわかりません。スクリプト:

from __future__ import with_statement
import atexit
from tools import cli
from pyVim import connect
from pyVmomi import vim, vmodl


def get_args():
    *Boring args parsing works*
    return args

def main():
    args = get_args()
    try:
        service_instance = connect.SmartConnectNoSSL(host=args.host,
                                                user=args.user,
                                                pwd=args.password,
                                                port=int(args.port))

        atexit.register(connect.Disconnect, service_instance)
        content = service_instance.RetrieveContent()

        vm = content.searchIndex.FindByUuid(None, args.vm_uuid, True)

        creds = vim.vm.guest.NamePasswordAuthentication(
            username=args.vm_user, password=args.vm_pwd
        )

        try:
            pm = content.guestOperationsManager.processManager
            ps = vim.vm.guest.ProcessManager.ProgramSpec(
                programPath=args.path_to_program,
                arguments=args.program_arguments
            )
            res = pm.StartProgramInGuest(vm, creds, ps)
            if res > 0:
                print "Program executed, PID is %d" % res

        except IOError, e:
            print e
    except vmodl.MethodFault as error:
        print "Caught vmodl fault : " + error.msg
        return -1

    return 0

# Start program
if __name__ == "__main__":
    main()

コンソールで実行すると、ターゲット仮想マシンに正常に接続され、印刷されます

Program executed, PID is 2036

タスク マネージャーに、言及された PID を持つプロセスが表示されます。これは正しいユーザーによって作成されましたが、プロセス (calc.exe) の GUI はありません。RMB クリックでは、プロセスを「展開」できません。このプロセスは、おそらく別のセッションで、特別なパラメーターを使用して作成されたと思います。さらに、実際に実行されるかどうかを確認するためにバッチ ファイルを実行しようとしましたが、答えはノーです。バッチ ファイルは実行されません。

どんな助け、アドバイス、手がかりも素晴らしいでしょう。

PS他のスクリプトを試してみたところ、VMにファイルが正常に転送されました。

PPS私の英語でごめんなさい。

更新: このようなプロセスはすべてセッション 0 で開始されます。

4

1 に答える 1

0

interactiveSession を試しましたか?

https://github.com/vmware/pyvmomi/blob/master/docs/vim/vm/guest/GuestAuthentication.rst

NamePasswordAuthentication に渡されるこのブール引数は、次のことを意味します。

クライアントがゲストでインタラクティブなセッションを必要とする場合、これは true に設定されます。

于 2017-08-09T23:22:58.810 に答える