none
переименовка файла не отрабатывает powershell RRS feed

  • Вопрос

  • добрый день не отрабатывает часть скрипта с переименованием файла, ошибок никаких не выдает. в чем косячу?

    # Переменная, имя лог файла
    $logname = "$name" + ".log"
    $Ylogname = "Y_" + "$name" + ".log"
    $Nlogname = "N_" + "$name" + ".log"

    $Dir= "C:/TeamViewer"

    # Процедура создания лог файла
    New-Item -Path c:\TeamViewer\$logname -ItemType  File
    # Процедура копирования ID в лог
    $a = Get-ItemProperty -Path HKLM:\SOFTWARE\TeamViewer\Version6 -Name ClientID
    $a.ClientID | Out-File c:\TeamViewer\$logname
    # Процедура переименования лог файла
    $a = Get-ItemProperty -Path HKLM:\SOFTWARE\TeamViewer\Version6 -Name IsHostModule
    $b = Get-ItemProperty -Path HKLM:\SOFTWARE\TeamViewer\Version6 -Name Logging
    if ($a.IsHostModule -ceq $b.Logging)
    {
    Get-ChildItem $Dir | Rename-Item -newname {$_.name -replace '$logname','$Ylogname'} 
    }
    else
    {
    Get-ChildItem $Dir | Rename-Item -newname {$_.name -replace '$logname','$Nlogname'}
    }

    в конце получаю просто $logname, значения   IsHostModule и Logging точно одинаковые (они равны 1)

    20 февраля 2012 г. 9:10

Ответы

  • Заменить одинарные кавычки на двойные.

    $_.name -replace "$logname","$Ylogname"

    Get-ChildItem $Dir  - использование тоже не особо безопасно,я думаю лучше использовать Get-Item "$dir\$logname".

    • Изменено KazunEditor 20 февраля 2012 г. 9:21
    • Помечено в качестве ответа KazunEditor 24 февраля 2012 г. 9:18
    20 февраля 2012 г. 9:15
    Отвечающий

Все ответы

  • Заменить одинарные кавычки на двойные.

    $_.name -replace "$logname","$Ylogname"

    Get-ChildItem $Dir  - использование тоже не особо безопасно,я думаю лучше использовать Get-Item "$dir\$logname".

    • Изменено KazunEditor 20 февраля 2012 г. 9:21
    • Помечено в качестве ответа KazunEditor 24 февраля 2012 г. 9:18
    20 февраля 2012 г. 9:15
    Отвечающий
  • Get-ChildItem выдаст вам все файлы, если так, то вам нужно сделать $Dir=Get-ChildItem, потом через foreach ($file in $dir) для каждого файла делать какое либо действие. Вам нужно поменять вот здесь:

    $Dir= "C:/TeamViewer" на $Dir = gci "C:\TeamViewer"

    20 февраля 2012 г. 9:48
  • А что вам конкретно нужно сделать, из вашего скрипта мало что понятно?
    20 февраля 2012 г. 9:49