2

我正在尝试从我的本地机器上运行它(Win7 & PS v2.0)

cls
$sess = Enter-PSSession -ComputerName blmcrmpoc
Invoke-Command -Session $sess -Scriptblock
{
$path = "C:\inetpub\logs\LogFiles"
$lastWrite = (Get-Date).AddDays(-90)
$oldLogs = Get-ChildItem -path $path -Recurse -Filter *.log | Where {$_.LastWriteTime -le $lastWrite}
if ($oldlogs.count -gt 0)
{foreach ($log in $oldLogs)
{$log.Delete()}}}

但我得到这个错误。

***Invoke-Command:无法验证参数“会话”的参数。参数为 null 或空。提供一个不为 null 或空的参数,然后再次尝试该命令。

我错过了什么?

4

2 回答 2

3

尝试:

cls
$sess = New-PSSession -ComputerName blmcrmpoc
Invoke-Command -Session $sess -Scriptblock
{
    $path = "C:\inetpub\logs\LogFiles"
    $lastWrite = (Get-Date).AddDays(-90)
    $oldLogs = Get-ChildItem -path $path -Recurse -Filter *.log | Where {$_.LastWriteTime -le $lastWrite}
    if ($oldlogs.count -gt 0)
    {
        foreach ($log in $oldLogs)
        {
            $log.Delete()
        }
    }
}

随着Enter-PSSession您输入一个 pssession(您开始对其进行远程处理,以便您可以直接编写命令,就好像它是本地计算机一样)。如果要在特定会话上使用 Invoke-Command,请使用创建会话,New-Session因为这会创建会话而不输入会话。

于 2013-01-22T21:54:45.630 回答
0

如何访问脚本块的参数列表

ArgumentList 基于与 scriptblock 命令一起使用,例如:

你必须为脚本块传递参数..

    分类
    $sess = Enter-PSSession -ComputerName blmcrmpoc
    调用命令 -Session $sess -Scriptblock
    {
    $path = "C:\inetpub\logs\LogFiles"
    $lastWrite = (Get-Date).AddDays(-90)
    $oldLogs = Get-ChildItem -path $path -Recurse -Filter *.log | 其中 {$_.LastWriteTime -le $lastWrite}
    如果($oldlogs.count -gt 0)
        {
       $xArgvalue=arg[0]
    $yArgvalue=arg[1]
    foreach ($log in $oldLogs)
     {
     $log.Delete()
     }
        }
    } -ArgumentList $x,$y

我在下面的链接中找到了如何将参数传递给脚本块

于 2013-09-28T04:34:15.870 回答