试图在Powershell中获取最新的文件夹名称

时间:2017-02-14 10:15:16

标签: .net powershell ms-release-management

我正在尝试从powershell运行nuint控制台,在我的应用程序上运行一些Selenium测试。

Powershell中的命令如下:

$command = 'D:\tools\NUnitTestRunner\nunit3-console.exe "\\myserver\Drops\MyProj\MyApp_20170214.1\App.Selenium.Tests.dll"'
iex $command

这可以按预期工作。但是,我要改变的部分是双重的""。我希望在将版本放到文件夹中时运行我的回归测试,新的App.Selenium.Test.dll将被删除 - 文件夹MyApp_DATE.DropNumber将会更改。

所以我可能在路径\ myserver \ Drops \ MyProj \文件夹下面如下:

MyApp_20170214.1
MyApp_20170214.2
MyApp_20170214.3
MyApp_20170214.4

我想动态获取最新的文件夹并将其放入命令中,而不是每次都要进入并硬编码。这就是我的尝试:

$logFile = "$PSScriptRoot\NunitLog.txt"
$dir = "\\myserver\Drops\MyProj\"

#Go get the latest Folder Name
$latest = Get-ChildItem $dir Where { $_.PSIsContainer } | Sort CreationTime -Descending | Select -First 1

#remove old log file
if(Test-Path $logFile) { Remove-Item $logFile }

"Starting Selenium Tests" | Out-File $logFile -Append
$latest.name | Out-File $logFile -Append

#Start nUnit Console and pass argument which is the latest path to the dll of the tests
#$command = 'D:\tools\NUnitTestRunner\nunit3-console.exe "$latest.name"'

但是,它不会将文件夹名输出到logFile或在命令中运行

1 个答案:

答案 0 :(得分:1)

您的代码缺少dir&之间的管道在哪里,填充$ latest。此外,$命令行应该在整个字符串周围使用双引号,因为PowerShell在用单引号括起时将其视为字符串文字。要在结果命令中包含双引号,我们在它们之前添加一个反引号。我们还将$latest.name$()打包在一起以允许PowerShell进行评估 - 否则我们最终会得到文件夹名称末尾有.name的内容。

$logFile = "$PSScriptRoot\NunitLog.txt"
$dir = "\\myserver\Drops\MyProj\"

#Go get the latest Folder Name
$latest = Get-ChildItem $dir | Where { $_.PSIsContainer } | Sort CreationTime -Descending | Select -First 1

#remove old log file
if(Test-Path $logFile) { Remove-Item $logFile }

"Starting Selenium Tests" | Out-File $logFile -Append
$latest.name | Out-File $logFile -Append

#Start nUnit Console and pass argument which is the latest path to the dll of the tests
#$command = "D:\tools\NUnitTestRunner\nunit3-console.exe `"$($latest.name)`""