小编spo*_*993的帖子

将参数从 C# 传递到调用的 PowerShell 脚本

我的 C# 文件中有以下函数:

private void RunScriptFile(string scriptPath, string computerName, PSCredential credential)
{
   RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create();
   Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration);
   runspace.Open();
   RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace);
   Pipeline pipeline = runspace.CreatePipeline();
   string scriptCommand = "Invoke-Command -ComputerName " + computerName + " -FilePath " + scriptPath + " -ArgumentList " +  credential;
   pipeline.Commands.AddScript(scriptCommand);
   Collection<PSObject> results = pipeline.Invoke();
   runspace.Close();
}
Run Code Online (Sandbox Code Playgroud)

我使用上面 C# 代码中传递的凭据调用以下 PowerShell 脚本;脚本.ps1

Param([PSCredential]$Credentials)
<code part using credentials>
Run Code Online (Sandbox Code Playgroud)

之后pipeline.Invoke(),C# 代码只是关闭,没有任何操作,也不会抛出任何错误。

我在拨打电话时是否做错了什么?如果从 PowerShell 调用相同的调用,如下所示,则可以正常工作:

Invoke-Command -ComputerName <computerName> -FilePath <scipt.ps1> -ArgumentList …
Run Code Online (Sandbox Code Playgroud)

c# powershell powershell-sdk

5
推荐指数
1
解决办法
2421
查看次数

Powershell:对全局 ArrayList 的迭代不符合预期

我正在使用下面的代码:

$global:accountArray =  New-Object -TypeName "System.Collections.ArrayList"


$global:accountArray.Add("0001")
$global:accountArray.Add("0002")
$global:accountArray.Add("0003")
$global:accountArray.Add("0004")
$global:accountArray.Add("0005")

Function Remove-Numbers
{
    // This loop only iterates one time
    foreach ($n in $global:accountArray) {
            $global:accountArray.Remove($n)
    }
}

Remove-Numbers
Run Code Online (Sandbox Code Playgroud)

我已经全局声明了accountArray变量,但是当我尝试修改该变量时Function,它只迭代一次并循环结束(即它只删除一个元素),我做错了什么?

powershell

1
推荐指数
1
解决办法
434
查看次数

通过对现有数组列表进行切片来创建 Arraylist 的 Arraylist

我定义了以下变量

$A =  New-Object -TypeName "System.Collections.ArrayList"

Run Code Online (Sandbox Code Playgroud)

现在我n向它添加元素:

$A.Add(1..n)
Run Code Online (Sandbox Code Playgroud)

现在我想将每个元素分成$Ap部分k(如果 ,最后一个可能有较少的元素p*k>$A.count)。我怎么做?

powershell arraylist powershell-3.0 powershell-4.0

0
推荐指数
1
解决办法
120
查看次数