找到 985 篇文章,关于软件与编码

如何在 PowerShell 工作流中运行 Invoke-Command?

Chirag Nagrekar
更新于 2021年2月19日 13:15:55

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 会话,或者具有不适合 ... 阅读更多

PowerShell 工作流中的并行和顺序执行是如何工作的?

Chirag Nagrekar
更新于 2021年2月19日 13:08:19

1K+ 次浏览

PowerShell 工作流是设计脚本以在多个节点上并行执行的最佳方法,这节省了大量用于生成输出的时间,但我们并不总是希望并行运行所有命令,还需要一些命令顺序运行,我们可以使用 PowerShell 工作流设计并行和顺序命令。工作流  TestWorkflow{    parallel{       命令1       命令2    }    Sequence{       命令3       命令4    } } TestWorkflow在上面的代码中,命令 1 和命令 2 将以任何顺序并行执行,而命令 3 ... 阅读更多

如何在 PowerShell 中并行使用 foreach 循环?

Chirag Nagrekar
更新于 2021年2月19日 13:05:09

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 正在处理 ... 阅读更多

什么是 PowerShell 工作流?

Chirag Nagrekar
更新于 2021年2月19日 13:01:31

386 次浏览

PowerShell 工作流构建在基于 .Net 的 Windows Workflow Foundation (WWF) 之上,它拥有一个单独的工作流引擎来执行代码,因为它会将代码转换为 WWF 框架的 XAML。PowerShell 工作流是一系列步骤,主要用于在多台机器上并行运行活动。长时间运行的脚本。构建步骤(哪些步骤将并行执行,哪些步骤将顺序执行)常用任务。通过定义检查点,从由于系统故障或其他中断而终止的地方恢复脚本。PowerShell 工作流在 PowerShell 3.0 中引入,并在 Core 版本(6.0 及更高版本)中停止在 Windows 中使用,并且仅 ... 阅读更多

如何使用 PowerShell 验证 IP 地址?

Chirag Nagrekar
更新于 2021年2月19日 12:59:09

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 ... 阅读更多

如何检查字符串是否包含特定单词?

Chirag Nagrekar
更新于 2021年2月8日 07:55:01

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 ... 阅读更多

如何在 PowerShell 中将命令输出转换为哈希表格式?

Chirag Nagrekar
更新于 2021年2月8日 07:53:26

2K+ 次浏览

要将任何命令输出转换为 PowerShell 中的哈希表,我们可以首先使用 ConvertTo-JSON 命令将输出转换为 JSON 格式,然后将 ConvertFrom-JSON 命令应用于第一个输出将产生哈希表的输出。示例 Get-Service 上面的命令将以数组格式给出输出。输出 状态  名称            显示名称 ------  ----            ----------- 已停止 WwanSvc         WWAN 自动配置 已停止 XblAuthManager  Xbox Live 身份验证管理器 已停止 XblGameSave     Xbox Live 游戏保存 已停止 XboxGipSvc      Xbox 附件管理服务 已停止 XboxNetApiSvc   Xbox Live ... 阅读更多

如何在 PowerShell 中从 Invoke-Command 输出中排除 RunSpaceID 属性?

Chirag Nagrekar
更新于 2021年2月8日 07:51:36

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

如何在 PowerShell 中从 Invoke-Command 输出中排除 PSComputerName 属性?

Chirag Nagrekar
更新于 2021年2月8日 07:49:29

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)

如何使用 PowerShell 查找设备驱动程序版本?

Chirag Nagrekar
更新于 2021年2月8日 07:46:08

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 ... 阅读更多

广告