Powershell中带-p的alias命令的语法是否正确?
我正在同时使用Powershell和7zip:Powershell中带-p的alias命令的语法是否正确?,powershell,7zip,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
$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
似乎没有给出正确的结果,因为密码输入失败。我认为这是因为要使用特定的语法?您应该将7-zip文件夹添加到您的
路径
环境变量中,以简化操作:
#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
命令。当您使用
sz a -t7z -sfx'7z.sfx' -p$passwd $execname $ssftxtname
实际上,您正在将密码设置为由以下字符组成的7个字符的字符串:$,p,a,s,s,w,d
PosiS壳应用启发式来帮助“你”,认为一个字符串中间的一个美元符号可能不是对变量的引用。你可以通过引用整个论点来说服它:
sz a -t7z -sfx'7z.sfx' "-p$passwd" $execname $ssftxtname
这样,它会将密码设置为$passwd
变量的内容
请注意,如果您的启动配置文件中有@KeithHill的handy模块,那么您将在键入时看到您是有字符串还是变量。请注意以下三种情况。第一个是你尝试过的,但是角色是照字面理解的。在第二个或第三个变量中添加引号表明$passwd
是一个活动变量
是否
$passwd
包含空格、标点或特殊字符?@briantist没有空格。它有时可能包含数字或符号(如#)。我不完全确定问题是什么,所以我现在不想写一个完整的答案,但我有一些想法。请尝试使用引号“-p$passwd”
,或者尝试使用其他方法启动7zip,如启动进程
,您可以在其中显式传递参数。您好,1。将7-zip添加到路径
通常更容易2。它不应该是带有空格的sz a-t7z-sfx'7z.sfx'-p$passwd$execname$ssftxtname
?无论如何,我很确定PATH
可以帮助处理参数。@sodawillow根据文档,没有空格