【发布时间】:2021-05-07 12:09:42
【问题描述】:
我在寻找一种方法来扩展我需要传递到测试路径的选择对象中的两个属性时遇到问题。问题是如果我不扩展属性并传递到 Test-Path 我将在错误中得到 @{} - 我认为 powershell 将其视为对象?
有谁知道有没有办法做到这一点?
我尝试了一些类似下面的方法,但无济于事......
Invoke-Sqlcmd -ServerInstance $Database -Query $myquery |
Where-Object {$_.Name -like "*JD*"} | Select @{Expression={$_.Name, $_.FileExtension -join "."}} | FT -HideTableHeaders
理想情况下,我的查询应该返回:
文件名.extension
然后我可以传递到 Test-Path 而无需 powershell 将其视为一个对象,如果我没记错的话是一个字符串?
编辑 1:不确定它是否有帮助,但我想我会在这里添加它,希望能更清楚。
我的 SQL 表有这样的数据:
Column A | Column B
FileName | FileExtension
编辑 2:包括用于澄清和管道输出的 foreach 循环
$FilePath = "\\Server1\Folder1\Folder2\"
foreach ($path in $myquery) {
$path2 = $FilePath + $path
# check FileExtensions if exist or not
if (!(Test-Path $path2))
{
Write-host " $path | Does not exist"
}
}
管道输出如下所示:
\\Server1\Folder1\Folder2\@{LiteralPath=FileName.ExtensionName}
# This is getting treated as does not exist because I have "@{LiteralPath=}" left in there, if I can remove it I should be golden
【问题讨论】:
-
你能告诉我们
Invoke-Sqlcmd -ServerInstance $Database -Query $myquery |Get-Member的输出吗? -
Name 属性字符串 Name {get;set;} 和 FileExtension 属性字符串 FileExtension {get;set;}
标签: powershell