пульт управления powershell

Я пытаюсь запустить это со своего локального компьютера (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: невозможно проверить аргумент для параметра «Сессия». Аргумент нулевой или пустой. Укажите аргумент, который не является пустым или пустым, а затем повторите команду.

Что мне не хватает?


person PickyTech    schedule 22.01.2013    source источник


Ответы (2)


Пытаться:

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 вы ВХОДИТЕ в сессию (вы запускаете ее удаленно, чтобы вы могли писать команды напрямую, как если бы это была локальная машина). Если вы хотите использовать Invoke-Command в конкретном сеансе, вы создаете сеанс с помощью New-Session, потому что это создает сеанс без входа в него.

person Frode F.    schedule 22.01.2013
comment
Вы получаете только ту ошибку, которую опубликовали? Что, если вы запустите Enter-PSSession -ComputerName blmcrmpoc в консоли в одиночку. Другая ошибка? Оба компьютера находятся в домене? - person Frode F.; 24.01.2013
comment
Оба компьютера находятся в одном домене, и у меня есть полные права администратора на обоих. Да, я получаю только ту ошибку, которую опубликовал. - person PickyTech; 24.01.2013
comment
но как я только что спросил. Работает ли это, если вы используете Enter-PSSession -ComputerName blmcrmpoc ALONE (не сохраняйте в $ sessions и не запускайте остальную часть скрипта)? просто чтобы войти в сеанс и посмотреть, работает ли вообще удаленное взаимодействие - person Frode F.; 24.01.2013

Как получить доступ к списку аргументов для блока сценария

ArgumentList основан на использовании с командами блока сценария, например:

вы должны пройти через блок скриптов ..


    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)
        {
       $xArgvalue= arg[0]
    $yArgvalue= arg[1]
    foreach ($log in $oldLogs)
     {
     $log.Delete()
     }
        }
    } -ArgumentList $x,$y

Я нашел по ссылке ниже как передать аргументы в блок скрипта

person Manoj Patil    schedule 28.09.2013