Je veux exécuter un bloc PowerShell qui enregistre la dernière date patché à une variable d'environnement utilisateur, mais j'ai essayé à la fois cmd.exe et powersehll.exe, seulement vu les processus dans le gestionnaire de tâches de l'invité, mais rien n'apparaît dans la variable d'environnement.GuestProcessManager.StartProgramInGuest ne peut pas exécuter bloc PowerShell dans l'invité
Voici mon code:
var userName = "name";
var password = "password";
var programPath = "C:\\Windows\\System32\\cmd.exe";
//var programPath = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe";
var arguments = "-command \"powershell \"[Environment]::SetEnvironmentVariable('LastPathedDate', ((Get - HotFix | sort installedon)[-1]).InstalledOn, 'User')\"\"";
//var arguments = "-command \"[Environment]::SetEnvironmentVariable('LastPathedDate', ((Get - HotFix | sort installedon)[-1]).InstalledOn, 'User')\"";
RunProgramInGuest(vm, userName, password, programPath, arguments);
private void RunProgramInGuest(VirtualMachine vm, string username, string password, string programPath, string arguments)
{
var auth = new NamePasswordAuthentication()
{
Username = username,
Password = password,
//InteractiveSession = true
};
var moRef = new ManagedObjectReference("guestOperationsProcessManager");
GuestProgramSpec spec = new GuestProgramSpec()
{
ProgramPath = programPath,
Arguments = arguments
};
var guestProcessManager = new GuestProcessManager(vCenter, moRef);
var pid = guestProcessManager.StartProgramInGuest(vm.MoRef, auth, spec);
var result = guestProcessManager.ReadEnvironmentVariableInGuest(vm.MoRef, auth, new string[] { "LastPatchedDate", "TEMP" });
guestProcessManager.TerminateProcessInGuest(vm.MoRef, auth, pid);
}
ne sais pas où le problème est, ou il y a une autre façon d'obtenir exécuter du bloc de script et obtenir la valeur?
« -command » ne marche pas faire ce que vous semblez penser qu'il fait .. si vous ne faites rien « dir cmd.exe » arrive. Je suppose que c'est pourquoi votre variable d'environnement ne montre jamais que vous voulez probablement "/ k ..." –
BugFinder
Merci pour votre message, mais cela ne fonctionne toujours pas. le seul chemin que nous avons réussi est la politique de puissance ouverte ('set-executionpolicy remotesigned') de l'invité, puis l'utilisation du shell de puissance exécute un fichier.'var arguments = "-command \" [pathoffile.ps1 \ ""; ' – even