Переменная $ Env не распознается внутри блока if - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь выполнить этот код, который просто копирует файл из сети по локальной сети на рабочий стол пользователя, если он старше, чем файл в сети.Первая строка следующего кода работает хорошо, но выдает ошибку для части, где $env:userprofile используется внутри блока if.Понятия не имею, что здесь происходит.

Copy-Item -Path "\\path1\subpath1\subpath2\Patch\help\*" -Filter *.chm -Destination "$Env:UserProfile\Desktop" -force -Recurse

$chmfileNetwork = Get-ItemPropertyvalue -Path 'path1\subpath1\subpath2\Patch\help\*' -Filter *.chm -Name 'LastWriteTime'

$chmfileLocal = Get-ItemPropertyValue -Path '$Env:UserProfile\Desktop\*' -Filter *.chm -Name 'LastWriteTime'

if ($chmfileLocal -lt $chmfileNetwork) {
    Copy-Item -Path "path1\subpath1\subpath2\Patch\help\*" -Destination "$Env:UserProfile\Desktop" -force -Recurse
} else {
    echo "Saul good, man"
}

Это выдает ошибку

Get-ItemPropertyValue : Cannot find drive. A drive with the name '$Env'
does not exist.
At C:\Users\user1\Downloads\PS2EXE-GUI\psfile.ps1:28 char:17
+ ... fileLocal = Get-ItemPropertyValue -Path '$Env:UserProfile\Desktop\*'  ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: ($Env:String) [Get-ItemPropertyValue], DriveNotFoundException
    + FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.GetItemPropertyValueCommand

1 Ответ

0 голосов
/ 12 октября 2018

Вы можете использовать $home\Desktop, чтобы получить папку на рабочем столе пользователя, но Ансгар Вичерс действительно указал на проблему с вашим сценарием относительно того, почему он выдает ошибку.Вы использовали одинарные кавычки в строке chmfileLocal =.Переменные не раскрываются при использовании одинарных кавычек, а только при использовании двойных кавычек.Исходный скрипт мог быть исправлен с изменением:

$chmfileLocal = Get-ItemPropertyValue -Path "$Env:UserProfile\Desktop\*" -Filter *.chm -Name 'LastWriteTime'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...