使用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版本中执行此操作)
答案 0 :(得分:1)
Powershell不知道变量到invoke命令。使用-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