Powershell 在 ScriptBlock 中传递参数
Powershell passing arguments in ScriptBlock
我正在尝试从远程服务器获取文件的最后写入时间。
这不起作用:
$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
任何人都可以帮助完成第一个集合吗?
您需要将服务器变量添加到第一行...
$server = "MyServerName"
$lastWrite = Invoke-Command -Computername $server -ScriptBlock {Get-ChildItem "\$server\hot.war" } -argumentlist $server | select -Property LastWriteTime
另一种方式,如果您使用的是 PowerShell 3。您可以这样做:
$lastWrite = Invoke-Command -Computername $server -ScriptBlock {
Get-ChildItem "\$using:server\hot.war"
} | select -Property LastWriteTime
注意字符串中的变量:"\$args[0]\hot.war"
将扩展为 \MyServerName[0]\hot.war
。
使用 "\$($args[0])\hot.war"
以确保 $args[0]
将被视为单个表达式。
我正在尝试从远程服务器获取文件的最后写入时间。
这不起作用:
$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
任何人都可以帮助完成第一个集合吗?
您需要将服务器变量添加到第一行...
$server = "MyServerName"
$lastWrite = Invoke-Command -Computername $server -ScriptBlock {Get-ChildItem "\$server\hot.war" } -argumentlist $server | select -Property LastWriteTime
另一种方式,如果您使用的是 PowerShell 3。您可以这样做:
$lastWrite = Invoke-Command -Computername $server -ScriptBlock {
Get-ChildItem "\$using:server\hot.war"
} | select -Property LastWriteTime
注意字符串中的变量:"\$args[0]\hot.war"
将扩展为 \MyServerName[0]\hot.war
。
使用 "\$($args[0])\hot.war"
以确保 $args[0]
将被视为单个表达式。