我现在尝试了大约一百种自动执行C#和Dynamics NAV 2013中的PowerShell脚本的方法。
运行脚本100%从Powershell ISE工作或在命令行中使用以下命令执行:
powershell.exe -version 3.0 -command ". 'C:\temp\script.ps1'"
所以我现在尝试的最后一个选项是将所有这些都放在一个.bat文件中并使用System.Diagnostics.Process执行.bat文件(同样,手动执行.bat文件也可以100%工作)
Setup.GET;
ProcessInfo := ProcessInfo.ProcessStartInfo(FileName); //The .bat File
ProcessInfo.UseShellExecute := FALSE;
ProcessInfo.RedirectStandardError := TRUE;
//<< Credentials
ProcessInfo.Domain := Setup.Domain;
ProcessInfo.UserName := Setup.Username;
SecurePwd := SecurePwd.SecureString();
FOR i := 1 TO STRLEN(Setup.Password) DO
SecurePwd.AppendChar(Setup.Password[i]);
ProcessInfo.Password := SecurePwd;
//>> Credentials
Process := Process.Start(ProcessInfo);
StreamReader := Process.StandardError();
MESSAGE(StreamReader.ReadToEnd());
在没有设置凭据的情况下,我从消息输出:
The handle is invalid.
The handle is invalid.
The handle is invalid.
The handle is invalid.
The handle is invalid.
Set-ExecutionPolicy : Access to the registry key 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' is denied.
它只是抱怨脚本中每一行的内容。
Import-Module : The specified module 'D:\psmodules\Multitenancy\NAVMultitenancySamples.psm1' was not loaded because no valid module file was found in any module directory.
等。等
填写完凭据后,消息为空白但未执行任何预期的操作。
现在,从消息中我可以看到它正在尝试访问Powershell版本1的注册表项而不是3 ...这可能是问题的一部分吗? 版本3已安装:
PS C:\> $Host.Version
Major Minor Build Revision
----- ----- ----- --------
3 0 -1 -1
答案 0 :(得分:0)
你有没有检查过UAC方面的事情?它可能需要UAC权限,而不仅仅是管理员凭据;
This other StackOverflow question详细说明了如何提升System.Diagnostics.Process命令;
startInfo.Verb = "runas";