我正在编写一个PowerShell脚本来使用7-zip生成备份,但是有些东西无效。当我运行下面的代码时
if (-not (test-path "$env:ProgramFiles\7-Zip\7z.exe")) {throw "$env:ProgramFiles\7-Zip\7z.exe needed"}
set-alias sz "$env:ProgramFiles\7-Zip\7z.exe"
$BACKUP_DATE = Get-Date -UFormat "%Y-%m-%d"
$LOCAL_BKP = 'E:\_Bkp_Producao'
New-PSDrive –Name "s" –PSProvider FileSystem –Root "\\server\myfolder"
sz a $LOCAL_BKP\bkp_siemens_$BACKUP_DATE.7z S:\*
返回以下消息:
7-Zip [64] 9.38 beta Copyright (c) 1999-2014 Igor Pavlov 2015-01-03
Scanning
S:\: WARNING: The system cannot find the path specified.
Creating archive E:\_Bkp_Producao\bkp_siemens_2015-08-31.7z
WARNINGS for files:
S:\ : The system cannot find the path specified.
怎么了?
答案 0 :(得分:1)
- 旧&抨击答案 -
我知道这真的是PowerShell字符串插值的重复,但我现在找不到那个。
有效的替代方案:
$sz = "${env:ProgramFiles}\7-Zip\7z.exe"
$sz = $env:ProgramFiles + "\7-Zip\7z.exe"
$sz = '{0}\7-Zip\7z.exe' -f $env:ProgramFiles
您也可以尝试使用Join-Path
,但我觉得很麻烦。
- 新的热度 -
您需要将-Persist
选项添加到New-PSDrive
。如果您不使用-Persist
,则只有powershell cmdlet可以看到“驱动器”。添加它使“驱动器”可用于所有命令,包括本机Windows命令行应用程序。