我正在尝试执行此代码,该代码基本上是将文件从网络上复制到本地登录用户的桌面(如果该文件早于网络上的文件)。以下代码的第一行工作正常,但是在if块中使用$env:userprofile
的部分会引发错误。不知道这是怎么回事。
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
答案 0 :(得分:5)
您可以使用$home\Desktop
来获取用户的桌面文件夹,但是Ansgar Wiechers确实指出了脚本引发错误的原因。您在chmfileLocal =
行上使用了单引号。当您使用单引号时,变量不会展开,仅当您使用双引号时。原始脚本可能已通过以下更改得到修复:
$chmfileLocal = Get-ItemPropertyValue -Path "$Env:UserProfile\Desktop\*" -Filter *.chm -Name 'LastWriteTime'