1

我正在尝试从远程服务器获取文件的最后写入时间。

这不起作用:

$server = "MyServerName"

$lastWrite = Invoke-Command -Computername $server -ScriptBlock {Get-ChildItem "\\$args[0]\hot.war" } -argumentlist $server | select -Property LastWriteTime

这确实有效:

 $lastWrite = Invoke-Command -Computername $server -ScriptBlock {Get-ChildItem "\\MyServerName\hot.war" } -argumentlist $server | select -Property LastWriteTime

任何人都可以帮助完成第一组工作吗?

4

3 回答 3

2

注意字符串中的变量:"\\$args[0]\hot.war"将扩展为\\MyServerName[0]\hot.war.

使用"\\$($args[0])\hot.war"以确保$args[0]将被视为单个表达式。

请参阅:http: //blogs.msdn.com/b/powershell/archive/2006/07/15/variable-expansion-in-strings-and-herestrings.aspx

于 2015-05-29T20:24:19.123 回答
1

另一种方式,如果您使用的是 PowerShell 3。您可以执行以下操作:

$lastWrite = Invoke-Command -Computername $server -ScriptBlock {
               Get-ChildItem "\\$using:server\hot.war"
             } | select -Property LastWriteTime
于 2015-05-29T19:41:46.290 回答
0

您需要将服务器变量添加到您的第一行...

$server = "MyServerName"

$lastWrite = Invoke-Command -Computername $server -ScriptBlock {Get-ChildItem "\\$server\hot.war" } -argumentlist $server | select -Property LastWriteTime
于 2015-05-29T19:19:58.167 回答