繁体   English   中英

在Powershell中将参数传递给远程命令

[英]Passing an argument to remote command in Powershell

我想使用Powershell在远程计算机上创建一个目录,并在其名称中使用当前时间戳。 设置了远程处理和所需的变量之后,这对我来说很容易实现,例如:

Invoke-Command -ComputerName $server -credential $Cred -ScriptBlock {New-Item -ItemType Directory c:\tmp\$(get-date -f yyyyMMddhhmmss)}

现在我想在本地机器上检索日期

$currentDateTime = get-date -f yyyyMMddhhmmss

然后使用该变量创建,以后再远程引用该目录,例如用于将文件复制到其中,例如:

Invoke-Command -ComputerName $server -credential $Cred -ScriptBlock {New-Item -ItemType Directory c:\tmp\$currentDateTime}
....(20 secs later)....
copy file \\$server\C$\tmp\$currentDateTime

第一行不起作用,因为在脚本上下文中似乎不知道该变量,因此,我也不清楚如果完成第一行后第二行是否会起作用。

或者,我也很乐意(实际上是:更喜欢)从本地计算机创建目录,如下所示

New-Item -Path \\$server\C$\tmp\$currentDateTime

这似乎由于缺少凭据而失败,但是此命令(?)似乎不支持-Credential开关。

您如何在远程计算机上创建这样的文件夹? (我需要使用Powershell 2.0版来执行此操作)

Powershell在invoke命令中不知道variabel。 使用-ArgumentList ,可以将其传递给invoke命令。
查看示例,这对您有用吗?

$datCurrentDate = Get-Date -Format "yyyyMMddhhmmss"
$strFolderPath = "\\servername\c$\temp\$($datCurrentDate)_Foldername"

$scbScriptBlock = {
    $strFolderPath = $args[0]    
    New-Item -ItemType Directory -Path $strFolderPath 
}

Invoke-Command -ComputerName $server -credential $Cred -ScriptBlock $scbScriptBlock -ArgumentList $strFolderPath
....(20 secs later)....
copy file $strFolderPath

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM