使用-p修改Powershell中别名命令的语法?

时间:2015-12-09 20:29:17

标签: powershell 7zip

我正在使用Powershell和7zip:

$passwd = "password123"
set-alias sz "$env:ProgramFiles\7-Zip\7z.exe" 
sz a -t7z -sfx'7z.sfx' -ppasswordstring $execname $ssftxtname

结果的密码为passwordstring。如何替换最后一行,以便使用$passwd变量?这样:

sz a -t7z -sfx'7z.sfx' -p$passwd $execname $ssftxtname

似乎没有给出正确的结果,因为密码输入失败。我认为这是因为有一个特定的语法可供使用?

2 个答案:

答案 0 :(得分:2)

使用时

sz a -t7z -sfx'7z.sfx' -p$passwd $execname $ssftxtname

您实际上是将密码设置为由这些字符组成的7个字符的字符串:$, p,a,s,s,w,d

PowerShell正在应用它的启发式“帮助”你,认为字符串中间的美元符号可能是对变量的引用。你可以简单地引用整个论点来说服它:

sz a -t7z -sfx'7z.sfx' "-p$passwd" $execname $ssftxtname

这样,它会将密码设置为$passwd变量的内容。

请注意,如果您的启动配置文件中有@ KeithHill的便捷PSReadLine模块,您实际上会在键入时看到是否有字符串或变量。请注意以下三种情况。第一个是你尝试过的,但角色是字面意思。在第二个或第三个变体中添加引号表示$passwd是一个活动变量。

enter image description here

答案 1 :(得分:0)

您应该将7-zip文件夹添加到PATH环境变量中,以简化操作:

#find the 7-zip folder path
$7zPath = (Get-ChildItem "C:\Program Files","C:\Program Files (x86)" -Include "7-zip" -Recurse -ErrorAction SilentlyContinue).FullName

#add it to PATH environment variable
$env:Path += ";$7zPath;"

然后您可以直接运行7z命令。