gpt4 book ai didi

powershell - 在PowerShell中执行Shell命令时如何引用变量?

转载 作者:行者123 更新时间:2023-12-03 00:54:50 24 4
gpt4 key购买 nike

我是PowerShell的新手。我下面的脚本怎么了?它不想发出$config的值。但是,当我将该命令用双引号引起来时,一切看起来都还不错。

param($config, $logfolder)

# Must run log analysis in chronological order.
ls $logfolder | Sort-Object LastWriteTime | % {
perl D:\Websites\_awstats\wwwroot\cgi-bin\awstats.pl -LogFile="$($_.FullName)" -config=$config update
}

# Execute with - .\regen-logs.ps1 webgenesis "C:\inetpub\logs\LogFiles\W3SVC5"
# Returns for each file - Error: Couldn't open config file "awstats.config.conf" nor "awstats.conf" after searching in path "D:\Websites\_awstats\wwwroot\cgi-bin,/etc/awstats,/usr/local/etc/awstats,/etc,/etc/opt/awstats": No such file or directory

照原样,发出和执行的内容似乎已将“-config = $ config”作为参数传递。至少,这是我最好的猜测。我也不知道$ _是否也正常工作。

如果像这样在perl命令周围加上引号,我将得到要执行的命令。
ls $logfolder | Sort-Object LastWriteTime | % {
"perl D:\Websites\_awstats\wwwroot\cgi-bin\awstats.pl -LogFile=`"$($_.FullName)`" -config=$config update"
}

# Outputs for each log file something like - perl D:\Websites\_awstats\wwwroot\cgi-bin\awstats.pl -LogFile="C:\inetpub\logs\LogFiles\W3SVC5\u_ex110602.log" -config=webgenesis update

最佳答案

如果将引号引起来会产生正确的命令行,则执行字符串内容的一种方法是使用Invoke-Expression(别名iex):

$v = "myexe -myarg1 -myarg2=$someVar"
iex $v

关于powershell - 在PowerShell中执行Shell命令时如何引用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6219952/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com