我在 PowerShell v4.0(Windows 7 x64 SP1)上有一个 PowerShell 脚本,它创建了一个非常复杂的数据表。我希望能够很容易地将 DataTable 代码放在任何地方,所以我决定将它包装在一个简单的函数中,如下所示:
function Get-UserDataTable
{
$DataTable = New-Object -TypeName System.Data.DataTable -ArgumentList 'User';
$NewColumn = $DataTable.Columns.Add('Id',[System.Int32]);
$NewColumn.AllowDBNull = $false;
$NewColumn.Unique = $true;
$NewColumn = $DataTable.Columns.Add('FirstName',[System.String]);
$NewColumn.MaxLength = 64;
$NewColumn = $DataTable.Columns.Add('MiddleName',[System.String]);
$NewColumn.MaxLength = 64;
$NewColumn = $DataTable.Columns.Add('LastName',[System.String]);
$NewColumn.MaxLength = 64;
return $DataTable;
}
Run Code Online (Sandbox Code Playgroud)
但是,该代码始终返回空对象。我试过Write-Output $DataTable, return $DataTable.Copy(), 和$DataTable,但该函数仍然始终为空。
所以,我想我可以尝试添加一些行。我总是可以清除数据表,这样编码仍然会更少:
function Get-UserDataTable2
{
$DataTable = New-Object -TypeName System.Data.DataTable -ArgumentList 'User';
$NewColumn = $DataTable.Columns.Add('Id',[System.Int32]);
$NewColumn.AllowDBNull = $false;
$NewColumn.Unique = $true; …Run Code Online (Sandbox Code Playgroud) 我创建了以下命令,用于合并与文件夹内的过滤器匹配的所有 csv 文件,并将其输出到输出文件中。
$mainPath="C:\\users\\myuser\\temp";
$mergeFilter="myfile.csv";
$outFile = "C:\\users\\myuser\temp\test.csv";
Get-ChildItem $mainPath -Recurse -Include $mergeFilter |
Select-Object -ExpandProperty FullName |
Import-Csv -Delimiter ';' |
Select-Object *,@{Name='Date'; Expression={"$dummyvariable"}}; |
Export-Csv $outFile -NoTypeInformation -Delimiter ';'
Run Code Online (Sandbox Code Playgroud)
我的问题是,当使用名为 $dummyvariable 的变量合并某些 CSV 时,我想添加一个额外的列,但我不知道必须在哪里初始化它才能获得 Expression={"..."} 中的值. 如果我之前在管道中声明它就不起作用(我需要在管道上做更高的工作以获得目录名称)
你知道我如何声明这个变量并在以“Select-Object”开头的管道上恢复吗?
提前致谢
此致。
何塞
所以这比标题所暗示的要多一点.我有其中包含的表名列和数量列,我想显示谁拥有500和1500之间的总和数量的结果.
例:
name qty
------ ----
brad 100
cody 300
kylie 1100
brad 800
nelson 1200
bob 600
nelson 100
kylie 600
Run Code Online (Sandbox Code Playgroud)
我想要显示结果
name qty
------ ----
brad 900
nelson 1300
bob 600
Run Code Online (Sandbox Code Playgroud)
希望这是有道理的.这是我得到的查询
SELECT name, SUM(qty) AS Total
FROM t1
NATURAL JOIN t2
WHERE qty BETWEEN 500 AND 1500
GROUP BY name
ORDER BY name
Run Code Online (Sandbox Code Playgroud)
问题是它似乎只是将qty中的字段汇总在500到1500之间,而不是仅显示该范围内的Total字段.我尝试做"WHERE SUM(qty)BETWEEN ...."但这会导致编译错误(我正在使用SQLite studio)
这是我所在的数据库课的作业问题,我正在学习,而不仅仅是得到答案.谢谢!
这是什么意思:$_和%PowerShell中?
1..10 | Foreach {if($_%2){"$_ is odd number"}}
Run Code Online (Sandbox Code Playgroud)