我需要在C#中执行PowerShell脚本.该脚本需要命令行参数.
这是我到目前为止所做的:
RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create();
Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration);
runspace.Open();
RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace);
Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.Add(scriptFile);
// Execute PowerShell script
results = pipeline.Invoke();
Run Code Online (Sandbox Code Playgroud)
scriptFile包含类似"C:\ Program Files\MyProgram\Whatever.ps1"的内容.
该脚本使用命令行参数,例如"-key Value",而Value可以是类似于也可能包含空格的路径.
我不这样做.有谁知道如何从C#中将命令行参数传递给PowerShell脚本并确保空格没有问题?
我正在尝试pswindowsupdate.2.0.0.4.nupkg通过Powershell命令行在未连接到Internet的Win 7计算机上进行安装。我正在运行PS 5.1.14409.1005。我从https://www.preview.powershellgallery.com/packages/PSWindowsUpdate/2.0.0.4获得了nupkg
该PS命令Install-Module -Name pswindowsupdate.2.0.0.4.nupkg -Repository {path to pswindowsupdate.2.0.0.4.nupkg}将引发错误消息:
PowerShellGet需要NuGet提供程序版本“ 2.8.5.201”或更高版本才能与基于NuGet的存储库进行交互。NuGet提供程序必须在“ C:\ Program Files \ PackageManagement \ ProviderAssemblies”或“ C:\ Users {我的登录名} \ AppData \ Local \ PackageManagement \ ProviderAssemblies”中可用。您也可以通过运行“ Install-PackageProvider-名称NuGet -MinimumVersion 2.8.5.201 -Force”来安装NuGet提供程序。您是否希望PowerShell现在安装和导入NuGet提供程序?
当然,说“是”无法安装NuGet提供程序,因为我没有连接到互联网。
我获得了nuget.exe(v4.7.0),将其存储在“ C:\ Program Files \ PackageManagement \ ProviderAssemblies”中,并将“ C:\ Program Files \ PackageManagement \ ProviderAssemblies”添加到我的path语句中。但是,执行Install-Module -Name pswindowsupdate.2.0.0.4.nupkg -Repository {path to pswindowsupdate.2.0.0.4.nupkg}仍然失败。
究竟是什么NuGet provider?仅仅是nuget.exe吗?如何获取和安装PowerShell的Nuget提供程序(v2.8.5.201或更高版本),以便可以从PowerShell命令行安装此nuget软件包?
注意:Visual Studio完全不涉及我的问题