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 : パラメータ 'Session' の引数を検証できません。引数が 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 でpssessionEnter-PSSessionを開始します (リモート処理を開始すると、ローカル マシンであるかのようにコマンドを直接書き込むことができます)。特定のセッションで Invoke-Command を使用する場合New-Sessionは、セッションに入らずにセッションが作成されるため、 を使用してセッションを作成します。

于 2013-01-22T21:54:45.630 に答える
0

scriptblock の引数リストにアクセスする方法

ArgumentList は、次のような scriptblock コマンドでの使用に基づいています。

スクリプト ブロックの引数を渡す必要があります。

    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 | どこ {$_.LastWriteTime -le $lastWrite}
    もし ($oldlogs.count -gt 0)
        {
       $xArgvalue=引数[0]
    $yArgvalue=引数[1]
    foreach ($oldLogs の $log)
     {
     $log.Delete()
     }
        }
    } -ArgumentList $x,$y

以下のリンクで、スクリプトブロックに引数を渡す方法を見つけました

于 2013-09-28T04:34:15.870 に答える