同时调用两个命令powershell

同时调用两个命令powershell,powershell,scripting,Powershell,Scripting,我想在输入参数时同时调用两个命令,例如,如果我要执行此代码,我会: abcdef文件夹1文件夹2 它会在桌面上创建两个文件夹 下面的代码只是一个示例,但我想知道正确的语法 function abcdef { param($folder1, $folder2) $s = $ExecutionContext.InvokeCommand.NewScriptBlock("mkdir C:\'Documents and Settings'\X\Desktop\$folder1") $s1 =

我想在输入参数时同时调用两个命令,例如,如果我要执行此代码,我会:

abcdef文件夹1文件夹2

它会在桌面上创建两个文件夹

下面的代码只是一个示例,但我想知道正确的语法

function abcdef {
  param($folder1, $folder2)
  $s = $ExecutionContext.InvokeCommand.NewScriptBlock("mkdir C:\'Documents and Settings'\X\Desktop\$folder1")
  $s1 = $ExecutionContext.InvokeCommand.NewScriptBlock("mkdir C:\'Documents and Settings'\X\Desktop\$folder2")
  Invoke-Command -ComputerName $ComputerRemote -ScriptBlock $s,$s1 -Credential $cred 
}

可以通过将文件夹参数声明为字符串数组来执行此操作:

function abcdef {
    param([string[]]$Folder)
}
然后对该数组的每个内容执行以下操作:

foreach ($f in $Folder) {
    # do something with $f
}
您可以这样调用此函数:

abcdef 'folder1','folder2'
abcdef $computernames $folders $credentials

您可以这样调用函数:

abcdef 'folder1','folder2'
abcdef $computernames $folders $credentials
或者,您可以像这样通过管道传输ComputerName在所有计算机上执行此操作。在本例中,您的上一个命令返回所有AD计算机:

Get-ADComputer -Filter * | abcdef $folders $credentials

还请注意,我不使用mkdir,如果有一个cmdlet可用于您尝试执行的操作,您应该始终使用它

谢谢,但是如果我想执行两个完全不同的命令呢?例如,一个用于创建文件夹,另一个用于更改ip地址。在这种情况下,您将使用另一个操作定义第二个scriptblock,并再次调用Invoke命令,或者将该操作添加到第一个scriptblock中,我建议您不要这样做。我将尝试它,并让您知道它是如何运行的。谢谢