在.NET 3.5中似乎没有OrderedDictionary(在System.Collections.Specialized命名空间中)的通用实现.有没有我错过的?
我发现那里的实现提供了功能,但想知道是否/为什么没有开箱即用的通用实现,如果有人知道它是否是.NET 4.0中的东西?
我正在尝试执行Invoke-Sqlcmd命令(来自SqlServer 模块)以作为不同的 AD 用户运行查询。我知道有-Credential争论,但这似乎不起作用。
因此,我认为 usingStart-Job可能是一种选择,如下面的代码片段所示。
$username = 'dummy_domain\dummy_user'
$userpassword = 'dummy_pwd' | ConvertTo-SecureString -AsPlainText -Force
$credential = New-Object -TypeName System.Management.Automation.PSCredential ($username, $password)
$job = Start-Job -ScriptBlock {Import-Module SqlServer; Invoke-Sqlcmd -query "exec sp_who" -ServerInstance 'dummy_mssql_server' -As DataSet} -Credential $credential
$data = Receive-Job -Job $job -Wait -AutoRemoveJob
Run Code Online (Sandbox Code Playgroud)
但是,在查看作业返回的变量类型时,这不是我所期望的。
> $data.GetType().FullName
System.Management.Automation.PSObject
> $data.Tables[0].GetType().FullName
System.Collections.ArrayList
Run Code Online (Sandbox Code Playgroud)
如果我ScriptBlock直接在 中运行代码,这些是 PS 返回的变量类型:
> $data.GetType().FullName
System.Data.DataSet
> $data.Tables[0].GetType().FullName
System.Data.DataTable
Run Code Online (Sandbox Code Playgroud)
我尝试将$data变量强制转换为[System.Data.DataSet],这导致了以下错误消息:
Cannot convert …Run Code Online (Sandbox Code Playgroud)