在基于PSSession执行Invoke-Command 命令时,可以传递命令或者脚本,这些命令和脚本会被发送到远程机器上去执行,执行完以后,会返回相应的结果。
这就牵扯到了两类数据:
- 上行的:传递的命令,单个远程命令中可以发送给该计算机的数据量的限制(Maximum Received DataSize Per Command)
- 下行的:返回的对象,任何单个对象中可以发送给该计算机的数据量的限制 (Maximum Received Object Size)
默认的最大值前者是50MB,后者是10M。参考自:Set-PSSessionConfiguration
一次性传输的命令或返回的结果太大会占用服务器带宽资源,有所限制,自然无可厚非。微软在PowerShell中给出了一个专门的PSsessionConfiguration配置,在你要连接的服务器端,设置一条配置通道。然后在客户端建立会话时指定该通道即可。比如我想更改上面的默认配置,限制为1M:
先注册一个Register-PSSessionConfiguration配置实例,然后使用Set-PSSessionConfiguration来指定1M的限制,即可。
为了测试,假如从另外一台机器(作为客户端)连接刚才设置的机器,命令超过限制应当会报错,是的:
本文链接: https://www.pstips.net/maximumreceiveddatasizepercommandmb.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
真够细腻。
我要在Invoke-Command里面调用一个带几个参数的函数(DownLoadFile),要怎么写呢,我用下面这种写法好像不起作用.Invoke-Command -Session $session -ScriptBlock{$function:DownLoadFile} -ArgumentList @(“rerun”,$Product,”C:UsersDesktoptest”)
看上面文章的第二张图中test变量:
Invoke-Command -Session $session -ScriptBlocck{param($product)}
这样还是没用,
Invoke-Command -Session $session -ScriptBlock{param($Product) $function:DownLoadFile} -ArgumentList @(“test”,”C:UsersDesktoptest”)
参数要这样传递:
PS>$a,$b=6,7 PS>Invoke-Command -ComputerName . -ScriptBlock { param($a,$b) “$a*$b=$($a*$b)” } -ArgumentList $a,$bPS> 6*7=42
这样写对吗,怎么还是不行$para1,$para2,$para3=”test”,$Product,”C:UsersDesktoptest”;Invoke-Command -Session $session -ScriptBlock{param($para1,$para2,$para3)$function:DownLoadFile} -ArgumentList $para1,$para2,$para3
$function:DownLoadFile,这是什么,你想干吗?