找到关于 PowerShell 的463 篇文章
385 次浏览
PowerShell 函数中的 validateCount 属性用于验证数组的长度,这意味着您可以向参数传递特定数量的参数。在下面的示例中,我们需要数组在传递值时包含最小 1 个和最多 4 个值。为此,我们将编写以下脚本:Function ValidateArray { Param ( [ValidateCount(1, 3)] [String[]]$Animals ) return $PSBoundParameters }输出PS C:\> ValidateArray -Animals Cow, Dog, Cat键值--- -----Animals {Cow, Dog, Cat}以上输出有效,但是当我们传递... 阅读更多
1K+ 次浏览
ValidateScript 属性用于在进入函数之前验证脚本。例如,假设您要验证文件的路径、验证远程计算机连接性等。我们将在此处以远程服务器连接性示例为例。如果没有 ValidateScript 属性,我们将编写如下所示的脚本:Function Check-RemoteServer { param ( [string]$Server ) if(Test-Connection -ComputerName $Server -Count 2 -Quiet -ErrorAction Ignore) { Write-Output "$server is reachable" } else { Write-Output "$Server is unreachable" } }输出PS C:\> Check-RemoteServer -Server asde.asde asde.asde is ... 阅读更多
355 次浏览
PowerShell 中的 ValidateLength 属性用于验证字符串的长度。通常,我们在没有提及属性的情况下编写命令的方式是使用 Length 方法和字符串的 if/else 条件。例如,Function ValidateStorageName { param ( [String]$StorageName ) if(($StorageName.Length -gt 3) -and ($StorageName.Length -lt 15)) { Write-Output "`nStorage Name validated" } else { Write-Output "`nStorage Name validation failed" } }输出−PS C:\> ValidateStorageName -StorageName Alpha Storage Name validated PS C:\> ValidateStorageName -StorageName CN Storage Name validation failed使用 ValidateLength 属性,否则... 阅读更多
4K+ 次浏览
PowerShell 函数中的 ValidateSet 属性用于验证从集合中输入的值,这意味着它只允许来自集合的特定值。为了更好地理解,请考虑以下示例,我们有一个数组,我们需要检查输入的值是否在数组中,然后我们将使用以下代码:Function PetAnimalsCheck { param( [String]$Animal ) $Animals = "Cow", "Dog", "Cat", "Horse", "Camel", "Elephant" if($Animals -contains $Animal) { Write-Output "Animal is in the list of Pet Animals" } else { Write-Output ... 阅读更多
1K+ 次浏览
验证参数是在 PowerShell 变量上定义的一组规则,限制用户输入某些值并绑定用户在特定域中输入值。如果没有验证参数,脚本将很冗长。ValidateRange 属性就是其中之一。ValidateRange 属性此参数用于验证特定范围的数字。例如,如果我们需要用户输入 5 到 100 之间的值,我们只需使用 If/else 语句编写如下所示的脚本:function AgeValidation { param( [int]$age ) if(($age -lt 5) ... 阅读更多
1K+ 次浏览
要搜索 PowerShell 中的单词并在文件中替换它,我们将使用字符串操作。事实上,PowerShell 中的 Get-Content 命令用于读取几乎任何类型的文件内容。在本文中,我们考虑一个如下所示的文本文件:Get-Content C:\Temp\TestFile.txt输出PS C:\> Get-Content C:\Temp\TestFile.txt # In case of linux, networkInterface names are of the form eth* # In Windows, please use the network full name from Device Manager networkInterfaces: ["Microsoft Hyper-V Network Adapter" ] overrideMetricsUsingScriptFile: false scriptTimeoutInSec: 60 scriptFiles: - osType: windows filePath: monitors/NetworkMonitor/scripts/windows-metrics.bat - osType: unixBase filePath: monitors/NetworkMonitor/scripts/unix-base-metrics.shThe ... 阅读更多
820 次浏览
众所周知,$ErrorActionPreference 和 $ErrorAction 都具有相同的功能,并且都用于通过将非终止错误转换为终止错误来处理终止错误。但是,当使用这两个变量时,我们需要知道哪个优先级更高。$ErrorActionPreference 变量用于脚本的开头,而 $erroraction 变量是一个公共参数,用于 cmdlet。在某些情况下,我们可能需要脚本在发生错误时立即终止,但在脚本内部,我们有一些 cmdlet 需要忽略或继续(如果发生错误)。在... 阅读更多
3K+ 次浏览
脚本块是一组可以一起执行的命令。在 PowerShell 中,通常我们编写单个命令。脚本块可以用两个花括号编写。示例$sb = {Get-Process powershell; Get-Service W32Time}这里我们在脚本块中编写了两个命令。如果您直接运行此命令,脚本块会将它们视为字符串。PS C:\> $sb Get-Process powershell; Get-Service W32Time要运行脚本块中的命令,请使用带有 -Scriptblock 参数的 Invoke-Command。Invoke-Command -ScriptBlock $sb输出句柄 NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ... 阅读更多
6K+ 次浏览
要复制远程路径上的文件/文件夹而不覆盖现有文件/文件夹,您可以使用多个 cmdlet,例如 Copy-Item、Robocoy 和 Xcopy 等。由于 Copy-Item 是一个标准 cmdlet,我们将检查其支持的参数是否可以防止覆盖。如果 Copy-Item 不起作用,我们将检查其替代命令。Copy-Item 只会覆盖目标路径上的文件和文件夹,并复制较新的文件。例如,要将文件从源文件夹 C:\Test1 复制到目标文件夹 C:\Test2,使用以下命令,它会简单地覆盖文件而不询问。示例Copy-Item C:\Test1\* C:\Test2 -Recurse -Verbose输出PS C:\Temp> Copy-Item C:\Test1\* C:\Test2 -Recurse ... 阅读更多
14K+ 次浏览
要在PowerShell中后台运行命令,需要使用后台作业 cmdlet。后台作业意味着在后台运行命令/作业,而不会占用控制台。`Start-Job`是PowerShell的作业调度器 cmdlet 之一,它可以在后台运行PowerShell命令,而不会与当前用户会话交互作为作业,以便用户可以在PowerShell控制台中工作,而不会在命令在后台运行时失去对控制台的控制。当PowerShell作业使用`Start-Job`启动时,即使作业需要较长时间,作业也会立即返回对象。`Start-Job`的设计是为了……阅读更多