编者注:
这个问题有一个复杂的历史,但归结为:
*要了解如何通过其键值对枚举哈希表的条目,请参阅接受的答案.
*要了解如何通过一组键值过滤哈希表,请参阅另一个答案.
我想我再次遇到了XY问题,我最初的问题是关于过滤哈希表.我发现在创建哈希表之前过滤更容易.问题回答了,对吗?
不,Y问题是循环每个Key并使用@briantist帮助我的值.
我的目标是循环使用键名称(时间戳),并使用键名作为任务名称和触发器来安排任务.
我正在使用Group-Object -AsHashTable -AsString -editPipeline从CSV文件创建哈希表,这里值得一提的是,在创建HashTable之前过滤CSV只会使脚本更容易.
举个例子:
Import-CSV (ls -path D:\ -Filter source*.csv | sort LastWriteTime | Select -Last 1).FullName |
where {$_.TimeCorrected -ne 'ManualRebootServer'} |
group TimeCorrected -AsHashTable -AsString
Run Code Online (Sandbox Code Playgroud)
我正在尝试遍历键名并能够使用以下方法显示键名:
$var = Import-Csv csv123.csv | Group-Object Value1 -AsHashTable -AsString
foreach ($key in $var.Keys){"The key name is $key"}
#Create a scheduled task named and …Run Code Online (Sandbox Code Playgroud) 这可能是一个非常简单的问题,但我完全迷失了,寻找答案并没有帮助.
我有一些powershell代码来显示带有TextBoxes的简单GUI.某些文本框允许用户按Enter键以运行Button_Click代码.当我尝试运行PS1脚本时,出现以下错误:
Unable to find type [System.Windows.Forms.KeyEventHandler].
Make sure that the assembly that contains this type is loaded.At C:\Scripts\GUI-Testing.ps1:161 char:1
$TestVar=[System.Windows.Forms.KeyEventHandler]
CategoryInfo : InvalidOperation: (System.Windows.Forms.KeyEventHandler:TypeName)
FullyQualifiedErrorId : TypeNotFound
Run Code Online (Sandbox Code Playgroud)
奇怪的一部分,如果我关闭GUI,然后重新运行该脚本,我没有得到的Unable to find type错误,并根据需要按下Enter键的作品.
以为我有一个答案,我尝试使用[void][reflection.assembly]::Load('System.Windows.Forms.KeyEventHandler')哪个给出了这个错误Exception calling "Load" with "1" argument(s): "Could not load file or assembly 'System.Windows.Forms.KeyEventHandler' or one of its dependencies. [FileNotFoundException]
首先,我为发布另一个有关 PowerShell 和选项卡完成的问题表示歉意。StackOverflow 系统识别了几个很好的问题并提供了与这个主题相关的答案,但它们似乎都太麻烦了,无法在这个简单的New-ADComputer脚本中实现。
参数将进入 aSplat以保持脚本可读。以下代码在 ISE 中正确制表符补全,但必须用双引号引起来。
PowerShell 中是否有任何本机方法允许对包含空格的参数集进行制表符补全?
Param(
[Parameter(Mandatory=$true)]
[string]$Server,
[Parameter(Mandatory=$true)]
[ValidateSet('Env1','Env 2','Env 3')]
[string]$Environment,
[Parameter(Mandatory=$true)]
[ValidateSet('Application','Database','File and Print','Web Server')]
[string]$Type
)
$NewADitems = @{
Name = $server
Path = "OU=$Type,OU=$Environment,OU=Smaller DN string"
Location ='MySite'
Description = "Test Description"
ManagedBy = "Huge Distingushed Name string"
WhatIf = $true
}
Write-Host @NewADitems
Run Code Online (Sandbox Code Playgroud)
使用的命令和收到的错误:
PS C:\Scripts> .\ADComputer-ParamTest.ps1 -Server ThisTest -Environment Env 3 -Type File and Print
C:\Scripts\ADComputer-ParamTest.ps1 : Cannot validate argument on parameter
'Environment'. The …Run Code Online (Sandbox Code Playgroud) 我在让PowerShell运行多个SQL查询并将结果导出为CSV时遇到问题.
我正在尝试使用a来完成此操作,Function但是Process当我希望运行两个查询并输出两个CSV文件时,块中会出现问题.
我尝试创建一个函数来运行查询,第二个函数创建CSV文件但是甚至没有运行SQL查询.我这样做没有安装SQL执行此PowerShell脚本的地方.-谢谢!
Function Run-Query {
param([string[]]$queries,[string[]]$sheetnames)
Begin{
$SQLServer = 'ServerName'
$Database = 'DataBase'
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $Database; Integrated Security = True"
}#End Begin
Process{
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $queries
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$DataSet.Tables[0] | Export-Csv -NoTypeInformation -Path "C:\Scripts\$sheetnames.csv"
}#End Process
End{
$SqlConnection.Close()
}
}#End function run-query.
$queries = @()
$queries += @'
Select …Run Code Online (Sandbox Code Playgroud)