我的 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) 我正在使用下面的代码:
$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,它只迭代一次并循环结束(即它只删除一个元素),我做错了什么?
我定义了以下变量
$A = New-Object -TypeName "System.Collections.ArrayList"
Run Code Online (Sandbox Code Playgroud)
现在我n向它添加元素:
$A.Add(1..n)
Run Code Online (Sandbox Code Playgroud)
现在我想将每个元素分成$A几p部分k(如果 ,最后一个可能有较少的元素p*k>$A.count)。我怎么做?