找到 985 篇文章,关于软件与编码
1K+ 次浏览
要在 PowerShell 工作流中运行 Invoke-Command,我们需要使用 InlineScript 块,因为 Invoke-Command 不直接支持工作流。以下示例未使用 InlineScript 块,我们会得到一个错误。示例工作流 TestInvokeCommand{ Invoke-Command -ComputerName LabMachine2k16 -ScriptBlock{ Get-Service WINRM } }输出 −在第 2 行,第 5 个字符处 + Invoke-Command -ComputerName LabMachine2k16 -ScriptBlock{ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 无法调用 'Invoke-Command' 命令。此模块中的其他命令已打包为工作流活动,但此命令已被特别排除。这可能是因为该命令需要交互式 Windows PowerShell 会话,或者具有不适合 ... 阅读更多
1K+ 次浏览
PowerShell 工作流是设计脚本以在多个节点上并行执行的最佳方法,这节省了大量用于生成输出的时间,但我们并不总是希望并行运行所有命令,还需要一些命令顺序运行,我们可以使用 PowerShell 工作流设计并行和顺序命令。工作流 TestWorkflow{ parallel{ 命令1 命令2 } Sequence{ 命令3 命令4 } } TestWorkflow在上面的代码中,命令 1 和命令 2 将以任何顺序并行执行,而命令 3 ... 阅读更多
10K+ 次浏览
在 PowerShell 中并行使用 foreach 循环有两种方法。使用 Foreach-Object -Parallel 命令(PowerShell 7.0 或更高版本支持)在工作流中使用 Foreach -Parallel(PowerShell 5.1 或更低版本支持)假设我们有 Servers.txt,其中包含 10 个服务器。当我们使用并行 for 循环时,它不能保证哪个服务器循环会首先被选中,如下面的两个示例所示。使用 Foreach-Object-Parallel 命令。(不是 Foreach -Parallel)此 Foreach-Object -Parallel 命令功能是新添加到 PowerShell 7.0 或更高版本中的。示例$servers = Get-Content C:\Temp\Servers.txt $servers | foreach-Object -parallel{ Write-output "正在处理 $_" }输出PS C:\> C:\Temp\Test1.ps1 正在处理 IndiaServer003 正在处理 IndiaServer002 正在处理 IndiaServer001 正在处理 ... 阅读更多
386 次浏览
PowerShell 工作流构建在基于 .Net 的 Windows Workflow Foundation (WWF) 之上,它拥有一个单独的工作流引擎来执行代码,因为它会将代码转换为 WWF 框架的 XAML。PowerShell 工作流是一系列步骤,主要用于在多台机器上并行运行活动。长时间运行的脚本。构建步骤(哪些步骤将并行执行,哪些步骤将顺序执行)常用任务。通过定义检查点,从由于系统故障或其他中断而终止的地方恢复脚本。PowerShell 工作流在 PowerShell 3.0 中引入,并在 Core 版本(6.0 及更高版本)中停止在 Windows 中使用,并且仅 ... 阅读更多
2K+ 次浏览
要使用 PowerShell 验证 IP 地址,我们可以使用以下几种方法。使用 RegEx 方法。使用类型转换方法。使用 TypeCasting 方法。在此方法中,我们使用 System.Net 方法类 IPAddress 来验证 IP 地址。[ipaddress]$IP = "192.168.0.1"上面的地址是有效的。让我们检查 $IP 存储的内容。PS C:\> $IP 地址:16820416 地址族:InterNetwork ScopeId:IsIPv6Multicast:False IsIPv6LinkLocal:False IsIPv6SiteLocal:False IsIPv6Teredo:False IsIPv4MappedToIPv6:False IPAddressToString:192.168.0.1上面的是 Ipv4,此方法也适用于 IPv6。请参见下面的示例。PS C:\> [ipaddress]"2001:0db8:85a3:0000:0000:8a2e:0370:7334" 地址:地址族:InterNetworkV6 ScopeId ... 阅读更多
1K+ 次浏览
要检查 PowerShell 字符串是否包含特定单词,我们可以使用字符串方法 Contains()。例如,示例 PS C:\> $str = 'TestNZ01LT' PS C:\> $str.Contains('NZ') True有趣的是,即使 PowerShell 不区分大小写,上面的命令也不区分大小写。我们需要提供精确的子字符串。例如,下面的输出将为 false。示例 PS C:\> $str.Contains('Nz') False要克服这个问题,我们可以使用方法中提供相同的搜索名称,或者如果不想区分大小写搜索,则需要使用小写或大写方法。PS C:\> $str = 'TestNZ01LT' PS C:\> ($str.ToLower()).Contains(('Nz').ToLower()) True ... 阅读更多
2K+ 次浏览
要将任何命令输出转换为 PowerShell 中的哈希表,我们可以首先使用 ConvertTo-JSON 命令将输出转换为 JSON 格式,然后将 ConvertFrom-JSON 命令应用于第一个输出将产生哈希表的输出。示例 Get-Service 上面的命令将以数组格式给出输出。输出 状态 名称 显示名称 ------ ---- ----------- 已停止 WwanSvc WWAN 自动配置 已停止 XblAuthManager Xbox Live 身份验证管理器 已停止 XblGameSave Xbox Live 游戏保存 已停止 XboxGipSvc Xbox 附件管理服务 已停止 XboxNetApiSvc Xbox Live ... 阅读更多
3K+ 次浏览
当我们在 PowerShell 中编写 Invoke-Command 时,有时我们会得到 PowerShell 中的 RunSpaceID 属性。这是因为我们在脚本块中使用了 Select-Object(别名:Select)命令。例如,示例 Invoke-Command -ComputerName LabMachine2k12 -ScriptBlock{Get-Process PowerShell | Select Name, CPU, WorkingSet}输出 名称 : powershell CPU : 9.1572587 WorkingSet : 127700992 PSComputerName : LabMachine2k12 RunspaceId : c690f205-06d4-4cc4-be29-5302725eadf1要避免在输出中获得 RunSpaceID 属性,请使用 Select 命令输出脚本块。例如,示例 Invoke-Command -ComputerName LabMachine2k12 -ScriptBlock{Get-Process PowerShell} | Select Name, CPU, WorkingSet 输出 名称 CPU WorkingSet ---- --- ---------- powershell 9.1572587 127700992
950 次浏览
当我们使用 Invoke-Command 时,我们在输出表中得到额外的 PSComputerName 字段。您可以使用 -HideComputerName 参数将其删除。例如,下面的命令给出包含 PSComputerName 属性的输出。示例 Invoke-Command -ComputerName LabMachine2k12 -ScriptBlock{Get-Service Winrm} | ft -AutoSize 输出 状态 名称 显示名称 PSComputerName ------ ---- ----------- -------------- 正在运行 Winrm Windows 远程管理 (WS-Management) LabMachine2k12要隐藏 PSComputerName 属性,示例 Invoke-Command -ComputerName LabMachine2k12 -ScriptBlock{Get-Service Winrm} -HideComputerName 输出 状态 名称 显示名称 ------ ---- ----------- 正在运行 Winrm Windows 远程管理 (WS-Management)
5K+ 次浏览
要使用PowerShell查找设备驱动程序版本,我们需要使用WMI对象的win32_PnpSignedDriver类。例如:`Get-WmiObject win32_PnpSignedDriver` 或者,如果您使用的是PowerShell Core(PowerShell 6.0或更高版本),可以使用CIM Instance命令。例如:`Get-CimInstance win32_PnpSignedDriver` 要根据版本筛选驱动程序,请使用以下命令进行筛选:`gwmi win32_PnpSignedDriver | Select Description, DriverVersion` 输出示例:
ACPI x64-based PC 6.2.9200.16384
UMBus Root Bus Enumerator 6.2.9200.16384
WAN Miniport (IPv6) 6.2.9200.16384
Composite Bus Enumerator ... 阅读更多