【PowerShell】-1-快速熟悉并使用PowerShell

news2024/9/17 9:13:59

目录

PowerShell是什么?和CMD的区别?

PowerShell的演变

自动化IT管理任务

一些名词

详尽的PowerShell开始之路

1.打开PowerShell:

2.基本命令:

(1)Get-Process

(2)变量赋值:$变量名 = 值

(3)探索指令:

(4)处理文件:

(5)用户交互:

(6)自定义功能:

(7)退出Shell:

面向对象

面向对象方法与Cmdlet示例

.Net

(1).NET的System.Math类

(2).NET的DateTime类

(3).NET的System.IO类

 数据类型的灵活性

Csv处理与Json文件转换

脚本和自动化

(1)基于 ARM 的模板

Azure的主要功能:

(2) REST API

 Ubiquitous Scripting

基于脚本的配置管理

混合环境脚本编写

跨平台兼容性

社区的模块

统一的脚本编写和自动化

提供者模型

用户交互

合规性

云管理

DevOps集成

下载安装

PowerShell ISE

总结

一些要点回顾


PowerShell是什么?和CMD的区别?

我们总是喜欢Win+R 输入cmd 打开命令行,但是不知道你有没有发现,电脑中有一个和命令行很相似的终端-PowerShell:

我们以一个比较开始我们对于PowerShell的学习:

PowerShell的采用是由其多方面的优势驱动的。PowerShell因其易用性而脱颖而出,使其成为初学者和资深用户的理想选择。它集成在Windows操作系统中,确保了一个顺畅的入口,只需在Windows菜单中简单搜索即可立即访问PowerShell。 除了易用性之外,PowerShell还为用户提供了一个强大的自动化框架。凭借众多的cmdlet,它是一个用于创建和共享自定义cmdlet的多功能工具。这一功能使用户能够自动化从简单到复杂的任务,从而提高系统管理的效率和一致性。

其有以下优势:

(1)专为Windows及其他平台打造:

PowerShell是为Windows环境量身定制的,与微软的产品和服务无缝集成。这种原生兼容性使其成为自动化基于Windows系统的任务的理想工具。 PowerShell最初是为Windows设计的,但随着PowerShell Core(也称为PowerShell 6及更高版本)的推出,微软将其扩展到跨平台环境。这个跨平台版本是一个开源、社区驱动的项目,将PowerShell带到了各种操作系统,包括Windows、Linux和macOS。

(2)PowerShell Core:

PowerShell Core是PowerShell的跨平台版本。

它是开源的,托管在GitHub上。

它支持Windows、Linux和macOS。

(3)广泛的功能范围:

PowerShell提供了一套全面的自动化工具,包括命令行界面、脚本和自动化框架。它对各种数据格式(包括XML、JSON和CSV)的支持增加了多功能性,使其适用于多种自动化任务。

(4)易于学习:

PowerShell的用户友好语法使其易于学习和使用,即使是对编程经验较少的IT管理员也是如此。广泛的文档和一个充满活力的社区提供了一个支持性的环境,用户可以在这里分享技巧、窍门和最佳实践。这种易用性使PowerShell成为初学者和希望有效自动化日常任务的专家的绝佳选择。

PowerShell的演变

PowerShell是由微软开发的一种动态外壳和脚本语言。随着时间的推移,它的发展巩固了其作为系统管理员和IT专家强大且灵活的解决方案的地位。 PowerShell由微软发明,其创始和发展由公司技术研究员Jeffrey Snover领导。PowerShell的起源可以追溯到21世纪初,当时Snover和他的团队开始了它的创建。首个版本名为Monad,于2006年发布,标志着PowerShell作为一个强大的自动化和配置管理框架之旅的开始。

PowerShell 7是一个重大更新,具有跨平台功能,不再受特定操作系统限制。它基于.NET Core 3构建,性能和兼容性得到提升。此外,PowerShell 7已转为开源模式,鼓励社区参与。它还改进了向后兼容性,使得从早期版本过渡更加平滑。

自动化IT管理任务

自动化IT管理任务对初学者而言,是节省时间、减少错误、提高系统稳定性的关键。它让初学者能专注于复杂任务,同时确保IT系统平稳、可靠运行。

一些名词

PowerShell: Microsoft开发的一种用于任务自动化和配置管理的shell和脚本语言。

Cmdlet: 在PowerShell中使用的一种轻量级命令,通常遵循动词-名词命名约定(例如,Get-Process)。

管道Pipeline: “管道”是指一个cmdlet(命令)的输出作为输入传递给另一个cmdlet的机制。

任务自动化: 自动化重复性任务和程序以提高效率和减少人工干预的过程。

Pipeline: 软件或工具能够在多个操作系统(如Windows、Linux和macOS)上运行的能力。

详尽的PowerShell开始之路

PowerShell作为一个交互式Shell 交互式Shell提供了一个动态环境,你可以在其中实时探索、实验和执行命令,使其成为初学者和经验丰富的用户的强大工具。

1.打开PowerShell:

(1)在搜索中搜索PowerShell

(2)Win + R 输入PowerShell

2.基本命令:

(1)Get-Process

此命令检索有关当前在系统上运行的进程的信息。

(2)变量赋值:$变量名 = 值

(3)探索指令:

Get-Command -Module Microsoft.PowerShell.Management | select -First 10 

此命令列出Microsoft.PowerShell.Management模块中前十个可用的cmdlet 

(4)处理文件:

Get-ChildItem -Path C:\Windows

此命令列出C:\Windows目录中的项。

(5)用户交互:

使用Read-Host进行用户交互:

(6)自定义功能:

使用function:如:

#定义

function Hello{
param ([string]$name)
Write-Host "Hello, $name!"
}

#调用

Hello -name "Huzhuocheng"

(7)退出Shell:

输入Exit 或者直接关掉

面向对象

在PowerShell中,面向对象的方法是脚本开发的基石。采用这种范式,PowerShell将一切视为对象,无论是服务、进程还是服务器。

(1)Cmdlet和一致的语法:
PowerShell引入了标准化动词-名词语法的cmdlet,为命令执行提供了一致且易于阅读的方法。

(2)面向对象的特性:
将所有事物视为对象简化了命令的组合和操作,使其比传统的纯文本环境更直观。

(3)发现和探索:
像Get-Command、Get-Help和Get-Member这样的简单命令有助于学习和发现PowerShell功能

以下是在PowerShell中使用类的简单示例:

class Person {
[string]$Name
[int]$Age
Person([string]$name, [int]$age) {
$this.Name = $name
$this.Age = $age
}
[string] GetInfo() {
return "Name: $($this.Name), Age: $($this.Age)"
}
}
# Create an instance of the Person class
$person = [Person]::new("Prashanth", 40)
# Access properties
Write-Host $person.GetInfo()

面向对象方法与Cmdlet示例

例如,如果你想检索有关进程的信息,可以使用Get-Process cmdlet。Get-Process的输出是一个进程对象的集合,每个对象都有代表特定进程信息的属性。

# 使用Get-Process cmdlet获取运行中的进程信息
$processes = Get-Process
# 显示集合中第一个进程的属性
$firstProcess = $processes[0]
# 访问特定属性(例如,名称、ID、CPU使用率)
Write-Host "进程名称: $($firstProcess.Name)"
Write-Host "进程ID: $($firstProcess.Id)"
Write-Host "CPU使用率: $($firstProcess.CPU)"

.Net

在PowerShell脚本中使用.NET类可以通过利用.NET提供的丰富功能来扩展脚本编写能力。这允许用户直接在他们的PowerShell脚本中执行高级编程操作。

(1).NET的System.Math类

# 访问System.Math的属性
$piValue = [System.Math]::PI
Write-Host "Pi的值: $piValue"

(2).NET的DateTime类

使用.NET的DateTime类来获取和格式化当前日期和时间:

# 使用.NET的DateTime类
$currentDateTime = [System.DateTime]::Now
Write-Host "当前日期和时间: $currentDateTime"
# 格式化DateTime
$formattedDateTime = [System.DateTime]::Now.ToString("yyyy-MM-dd HH:mm:ss")
Write-Host "格式化的日期和时间: $formattedDateTime"

(3).NET的System.IO类

# 使用.NET的System.IO进行文件操作
$fileContent = [System.IO.File]::ReadAllText("C:\Path\To\File.txt")
Write-Host "文件内容: $fileContent"
$fileLines = [System.IO.File]::ReadAllLines("C:\Path\To\File.txt")
Write-Host "文件中的行数: $($fileLines.Count)"

 数据类型的灵活性

PowerShell在处理各种数据格式方面表现出色,包括CSV、HTML、XML和JSON,这使得它对于处理管理和脚本任务中遇到的不同数据源非常有效。

1.结构化数据处理:

PowerShell的面向对象特性扩展了其高效处理和操作结构化数据的能力。这促进了与数据库、REST API和其他数据源的无缝交互。

2.自定义对象创建:

管理员可以创建自定义对象,允许在PowerShell脚本中结构化地表示数据。这一功能对于创建自定义报告或在进一步处理前操作数据非常方便。

3.数据转换和报告:

PowerShell丰富的数据转换和报告功能使管理员能够生成自定义报告,分析趋势,并从各种数据源中提取见解。

Csv处理与Json文件转换

加入现有一个csv文件,内容如下:

NameAgeCity
David22Shanghai
June30New York
Quuna22Shandong
# CSV文件的路径
$csvFilePath = "C:\Ultimate PowerShell Automation\example.csv"
# 将CSV文件导入到变量
$data = Import-Csv -Path $csvFilePath
# 显示导入的数据
$data

# 访问特定元素
Write-Host "第一个人: $($data[0].Name), 年龄 $($data[0].Age), 城市 $($data[0].City)"
# 根据条件过滤数据(例如,年龄大于22)
$filteredData = $data | Where-Object { $_.Age -gt 22 }
# 将输出数据转换为JSON
$filteredData | ConvertTo-Json

脚本和自动化

PowerShell无处不在的脚本功能对于脚本和自动化任务至关重要:

(1)基于 ARM 的模板

PowerShell 与 Azure 资源管理器 (ARM) 模板无缝集成,使管理员能够使用声明性模板定义和部署 Azure 资源。 基于 ARM 的脚本允许在 Microsoft Azure 中自动设置和配置复杂的基础设施:

# 安装并登录Azure账户
Connect-AzAccount

# 定义变量
$resourceGroupName = "YourResourceGroup" # 请替换为你的资源组名称
$location = "East US" # 请替换为你希望部署的地理位置
$templateUri = "🔗 https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-storage-account-create/azuredeploy.json" # 指向模板文件的URL

# 部署Azure资源
# 此命令将使用指定的模板和参数创建一个新的资源组,并在其中部署资源
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri

Azure是微软提供的一个全面的云计算服务平台,它具有多种功能,可以在不同的行业中发挥重要作用。以下是Azure的一些主要功能及其在各行业的应用案例:

Azure的主要功能:

  1. 云计算服务:提供灵活的计算资源,如虚拟机和容器服务,帮助企业扩展和缩减计算能力。
  2. 数据分析和处理:通过Azure的数据库服务和大数据分析工具,企业可以进行数据存储、分析和挖掘。
  3. 人工智能和机器学习:Azure AI服务提供预生成的API和模型,帮助开发人员快速创建智能应用程序。
  4. 网络安全:采用先进的安全技术和实践,保护用户数据和应用程序免受攻击。
  5. 机密计算:使用机密计算技术保护虚拟化环境中的敏感数据。
  6. 机器学习:Azure机器学习是一个云服务,用于加速和管理机器学习项目的生命周期。

(2) REST API

# 示例:与REST API交互
# 使用Invoke-RestMethod发出API请求
$response = Invoke-RestMethod -Uri "https://jsonplaceholder.typicode.com/posts" -Method Get
Write-Host "API Response: $($response | ConvertTo-Json -Depth 5)"

 Ubiquitous Scripting

PowerShell的成熟脚本语言与其命令行界面相结合,为自动化提供了一个一致且强大的环境。
无处不在的脚本允许管理员直接从命令行自动化各种任务,从系统配置到云资源管理。
此脚本自动化了将文件从一个位置复制到另一个位置的过程:

# PowerShell脚本,用于将文件从一个位置复制到另一个位置

# 源路径和目标路径
$sourcePath = "C:\Path\To\Source" # 源文件夹路径
$destinationPath = "C:\Path\To\Backup" # 目标文件夹路径

# 复制文件
# 该命令会递归地复制源路径下的所有文件和子目录到目标路径
# -Force 参数确保覆盖目标路径中已存在的同名文件
Copy-Item -Path $sourcePath\* -Destination $destinationPath -Recurse -Force

基于脚本的配置管理

PowerShell脚本允许管理员定义并执行配置管理实践,确保服务器和应用程序之间的一致性和合规性。我们看一个PowerShell脚本,它接受参数并通过替换特定值来操作XML文件:

$XML='C:\Ultimate PowerShell Automation\webconfig.XML'
Get-Content $XML

写一个特定文本替换的脚本:

# 定义脚本参数
PARAM(
    [String]$XML='C:\Ultimate PowerShell Automation\webconfig.XML',  # XML文件的路径
    [String]$DatabaseName='TargetDB',  # 要替换的数据库名称
    [String]$DatabaseServer='DataCenterDB01'  # 要替换的数据库服务器地址
)

# 创建用于替换的字符串
[string]$db = 'Catalog='+ $DatabaseName  # 新的数据库连接字符串
[string]$dbs = 'Source='+ $DatabaseServer  # 新的数据库服务器连接字符串

# 读取XML文件的内容
(Get-Content $XML) |
Foreach-Object { 
    # 替换 "Catalog=..." 为指定的数据库名称
    # 替换 "Source=..." 为指定的数据库服务器
    $_ -replace "Catalog=([A-Za-z0-9_]+)", $db -replace "Source=([A-Za-z0-9_]+)", $dbs
} | Set-Content $XML  # 将修改后的内容写回XML文件

这个脚本有助于根据运行脚本时提供的参数动态更新XML配置文件中的值。它通常用于动态配置web.config文件中的连接字符串等任务。

(1)PARAM块:

定义了可以在执行脚本时传递给脚本的参数。这些参数包括XML文件的路径($XML)、数据库名称($DatabaseName)和数据库服务器($DatabaseServer)。

(2)替换字符串:

创建将在XML文件中用于替换的字符串($db和$dbs)。

(3)Get-Content ($XML):读取由$XML参数指定的XML文件内容。

(4)Foreach-Object:

处理XML内容的每一行。字符串替换:使用-replace运算符将“Catalog=…”替换为指定的数据库名称,将“Source=…”替换为指定的数据库服务器。

(5)Set-Content ($XML):将修改后的内容写回同一个XML文件,有效地用新值更新它。

混合环境脚本编写

PowerShell的多功能性扩展到混合环境,使管理员能够无缝地在本地和基于云的基础设施之间编写脚本和自动化任务。写个例子:

# 本地PowerShell

# 变量
$onPremisesSqlServer = "YourOnPremisesSqlServer"  # 本地SQL服务器地址
$azureSqlServer = "YourAzureSqlServer"  # Azure SQL服务器地址
$databaseName = "YourDatabase"  # 数据库名称

# 从本地SQL服务器查询数据
$onPremisesQueryResult = Invoke-Sqlcmd -ServerInstance $onPremisesSqlServer -Database $databaseName -Query "SELECT * FROM YourTable"
Write-Host "本地查询结果:"
$onPremisesQueryResult  # 显示本地查询结果

# 从Azure SQL数据库查询数据
$azureQueryResult = Invoke-Sqlcmd -ServerInstance $azureSqlServer -Database $databaseName -Query "SELECT * FROM YourTable"
Write-Host "Azure查询结果:"
$azureQueryResult  # 显示Azure查询结果

此示例展示了PowerShell的多功能性如何使管理员能够无缝地在本地和基于云的基础设施之间编写脚本和自动化任务,使其成为管理混合环境的强大工具。请根据您的特定本地和云配置调整脚本。

跨平台兼容性

PowerShell Core是PowerShell的跨平台版本,将其覆盖范围扩展到传统的Windows环境之外。这种跨平台支持使用户能够在macOS和Linux上利用PowerShell,促进了不同操作系统之间的统一脚本编写和自动化体验。 

# Checking PowerShell Core version and platform
$psVersion = $PSVersionTable.PSVersion
Write-Host "PowerShell Core Version: $($psVersion.Major).$($psVersion.Minor).$($psVersion.Build)"
Write-Host "Platform: $($env:OS)"

社区的模块

PowerShell社区在扩展其功能方面发挥着关键作用。PowerShell Gallery是一个存储库,社区成员在此贡献模块、脚本和函数,丰富了PowerShell生态系统。

# Installing a community-contributed module from the PowerShell Gallery 
Install-Module -Name "ModuleName" 

 

统一的脚本编写和自动化

PowerShell的跨平台兼容性和社区贡献的模块创造了统一的脚本编写和自动化体验。
无论是管理Windows服务器、Linux机器还是云资源,管理员都可以使用一组一致的PowerShell命令和模块,简化工作流程。

#连接到Azure
Connect-AzAccount

#管理Azure资源
Get-AzResourceGroup
New-AzStorageAccount -ResourceGroupName "MyResourceGroup" -AccountName "mystorageaccount" -SkuName Standard_LRS -Location "East US"

提供者模型

PowerShell的提供者模型是一项强大的功能,它允许用户使用一组一致的命令和技术与各种数据存储进行交互,类似于您如何在文件系统中管理文件和文件夹。

# 注册表路径和键
$registryPath = "HKLM:\Software\MyApp"  # 注册表路径
$registryKey = "ConfigSetting"  # 注册表键名
$registryValue = "Enabled"  # 注册表键值

# 设置注册表值
New-Item -Path $registryPath -Force  # 创建注册表路径,如果已存在则不抛出错误
Set-ItemProperty -Path $registryPath -Name $registryKey -Value $registryValue  # 设置注册表键值
Get-ItemProperty -Path "HKLM:\Software\MyApp"  # 获取并显示注册表路径的属性

 

用户交互

$UserName = Read-Host "Enter your username"
$Password = Read-Host -AsSecureString "Enter your password"

Read-Host cmdlet是PowerShell中用于获取用户输入的基本工具。当需要从用户那里收集信息,比如在进行身份验证或配置设置时,这个cmdlet非常有用。

-AsSecureString参数特别重要,因为它允许用户输入的密码或其他敏感数据以安全字符串的形式存储,这意味着实际的值会被隐藏,并且以一种加密的形式保存在内存中,从而提供额外的安全性。

合规性

PowerShell在维护合规性方面也发挥着作用,它提供了日志记录和审计能力。管理员可以追踪和审查使用PowerShell执行的操作,以满足合规性目的。

# 启用PowerShell脚本块日志记录
Enable-PSRemoting -Force

# 查看PowerShell脚本块日志
Get-WinEvent -LogName "Windows PowerShell" -FilterXPath "*[System[(EventID=4104)]]"

云管理

(1)统一云管理:
与主要云提供商(Azure、AWS、GCP)的集成允许管理员直接从PowerShell管理云资源。

-Azure PowerShell模块:
一个专为Azure设计的模块,使管理员能够编写脚本并自动化与Azure资源相关的任务。

-AWS Tools for PowerShell:
PowerShell通过专用cmdlet与AWS服务无缝交互,实现AWS资源管理。

-Google Cloud SDK for PowerShell:
Google Cloud SDK for PowerShell便于从PowerShell环境管理Google Cloud资源。

Install-Module GoogleCloud
Install-Module -Name Az -AllowClobber -Scope AllUsers

DevOps集成

(1)DevOps自动化:
PowerShell在DevOps实践中发挥着关键作用,实现了部署、配置管理和持续集成任务的自动化。

(2)CI/CD管道:
与CI/CD(持续集成/持续部署)管道的集成允许将PowerShell脚本无缝地整合到自动构建和部署过程中。

(3)基础设施即代码(IaC):
PowerShell脚本促进了基础设施即代码(IaC)的实践,允许管理员和DevOps团队以代码为中心的方式定义和管理基础设施。

下载安装

# 检查PowerShell版本
$psVersion = $PSVersionTable.PSVersion
# 显示版本信息
Write-Host "PowerShell版本:$($psVersion.Major).$($psVersion.Minor).$($psVersion.Build).$($psVersion.Revision)"

Major: The major version number of PowerShell
Minor: The minor version number
Build: The build number
Revision: The revision number

有时,您编写的PowerShell脚本需要最低版本的PowerShell。在这种情况下,您可以使用$PSVersionTable自动变量来添加条件语句。例如,假设您的脚本需要最低PowerShell版本6,而您当前的PowerShell版本是5.1.17763,条件检查将失败,如下所示:

# 最低所需版本
$minRequiredVersion = [Version]'6.0.0'
# 检查安装的版本是否满足要求
if ($PSVersionTable.PSVersion -ge $minRequiredVersion) {
    Write-Host "PowerShell版本足以运行脚本。"
} else {
    Write-Host "PowerShell版本不满足最低要求。请升级PS版本。"
}

最新版可以在 https://github.com/PowerShell/PowerShell/releases  进行下载

PowerShell ISE

PowerShell Integrated Scripting Environment(ISE)是微软为PowerShell脚本编写提供的一个图形用户界面(GUI)工具。它提供了诸如语法高亮、标签补全和调试功能等特色。以下是在PowerShell ISE中进行导航的基本指南: 打开PowerShell ISE 您可以通过在Windows计算机的开始菜单或开始屏幕上搜索来打开PowerShell ISE。它通常被命名为“Windows PowerShell ISE”。 

使用PowerShell ISE,即使是初学者也可以更快地学习和掌握PowerShell脚本编写。对于经验丰富的用户,ISE的高级功能可以提高工作效率,简化复杂脚本的开发。

(1)菜单栏:位于顶部,包含文件、编辑、查看等菜单。

(2)工具栏:工具栏包括打开、保存和运行脚本等常见操作的按钮。 脚

(3)本窗格:这是您编写和编辑PowerShell脚本的地方。它支持语法高亮,以提高可读性。

(4)输出窗格:输出窗格显示执行的命令或脚本的结果。 控制台窗格:此窗格提供一个交互式的PowerShell控制台,您可以直接在其中输入和执行命令。

(5)命令窗格:允许您快速输入和执行命令 运行脚本:要运行脚本,点击工具栏上的“运行脚本”按钮或使用键盘快捷键F5。

(6)标签:PowerShell ISE支持标签,允许您同时处理多个脚本或PowerShell会话。您可以使用Ctrl + T打开一个新标签。

(7)调试:PowerShell ISE包含调试功能。您可以设置断点,逐步执行代码,并在脚本执行期间检查变量。调试选项在工具栏中可用。

(8)控制台集成:底部的控制台窗格允许您直接与PowerShell交互。您可以执行命令并实时查看结果。

(9)脚本窗格快捷键:各种键盘快捷键可以增强您的脚本编写体验。例如,Ctrl + Space提供自动完成建议。

(10)保存和打开脚本:使用文件菜单中的“保存”和“打开”选项来保存和加载您的PowerShell脚本。

(11)获取帮助:“帮助”菜单提供对PowerShell帮助文档的访问,包括cmdlet参考。

(12)选项和设置:您可以通过“选项”菜单自定义各种设置和偏好。

总结

随着信息技术的进步,自动化IT管理已成为变革力量,标志着从传统到未来范式的战略转变。IT自动化在应对现代技术复杂性时显得尤为重要。PowerShell自动化带来了诸多益处,如一致性、可扩展性和成本节约,同时重塑了IT专业人员的角色,提升了任务处理的平等性。自动化提高了精确性,降低了错误风险,保护配置稳定,确保合规性。作为提升运营效率的灯塔,IT自动化提供了主动解决问题和预测性管理的方法。PowerShell成为高效、可扩展和跨平台的强大工具,适用于各种环境,包括Windows、Linux和云环境。其功能广泛,从面向对象的方法到云集成,再到现代脚本编写和社区支持,使其成为管理员不可或缺的工具。展望未来,我们将探索PowerShell Core,它代表了PowerShell向跨平台范式的关键演进,拓展了其应用范围。

一些要点回顾

(1)PowerShell脚本

PowerShell超越了简单的脚本编写;它是一个强大的shell和一个交互式命令的环境。超越传统脚本编写的限制,进入一个命令栩栩如生的领域。

(2)批量操作

脚本编写通常涉及重复性任务。使用PowerShell,您可以在多台服务器上执行这些任务——甚至是数千台——简化工作并确保一致性,而无需手动进行GUI导航的劳动。

(3)弥合Windows-Linux鸿沟

它为初次接触PowerShell的Linux用户提供了一个专为Windows环境量身定制的交互式shell体验。命令它执行任务、获取信息和交互式配置设置。

(4)任务自动化

PowerShell擅长自动化各种任务,尤其是服务器配置。通过期望状态配置更进一步,允许精确控制服务器状态并在配置偏离时自动纠正。

(5)面向对象

PowerShell将每个元素视为一个对象,无论是服务、进程还是服务器。

(6) .Net框架

基于dot net框架构建,PowerShell是开发者的宝库。见证dot net功能在PowerShell命令中的集成,使其成为开发者在日常编码中的首选工具。

(7)一致的可重复任务:

对于跨服务器重复的任务,PowerShell确保效率,无需手动访问每台服务器。

(8)内置提供者

内置提供者补充了PowerShell的交互式shell。这些提供者允许您使用自然语言提问和与Active Directory、注册表和WMI等元素互动。

(9)PowerShell集成

PowerShell不仅仅是一种独立的语言;它深深植根于Microsoft产品中。它将其范围扩展到第三方产品,如VMware和Citrix,使其成为IT专业人员的首选工具。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1919015.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt开发 | C++ Qt开发环境安装(Qt5.15.2、VS2019、vsaddin2.8) | QtCreator和VS2019的基本使用和设置 | 添加第三方模块

文章目录 一、Qt简介二、C Qt开发环境安装1.Visual Studio 2019安装2.Qt5.15.2安装3.vsaddin2.8安装 三、QtCreator和VS2019的基本使用1.QtCreator的基本使用1.1 创建项目1.2 Qtcreator基本设置 2.VS2019的基本使用2.1 创建项目2.2 Visual Studio 2019的基本设置 3.如何添加第三…

2款强大到离谱电脑软件,都是效率神器

板栗看板 板栗看板是一款在线可视化项目协作工具,旨在通过自动化、数据化和智能化的手段提升团队协作效率。它基于精益生产的看板理论,具有扁平、透明和灵活的特性,能够帮助个人和团队提高生产效率。 该工具支持多人任务协作,用户…

uni-app/vue项目如何封装全局消息提示组件

效果图&#xff1a; 第一步&#xff1a;封装组件和方法&#xff0c;采用插件式注册&#xff01; 在项目目录下新建components文件夹&#xff0c;里面放两个文件&#xff0c;分别是index.vue和index.js. index.vue&#xff1a; <template><div class"toast&quo…

前端埋点数据收集和数据上报

原文地址 什么是埋点 学名叫时间追踪(Event Tracking), 主要针对用户行为或者业务过程进行捕获&#xff0c;处理和发送相关技术及实施过程. 埋点是数据领域的一个专业术语&#xff0c;也是互联网领域的俗称&#xff0c;是互联网领域的俗称 埋点是产品数据分析的基础&#xf…

漏洞扫描器之XRAY的安装及破解

XRAY简介 xray 是一款功能强大的安全评估工具&#xff0c;由多名经验丰富的一线安全从业者呕心打造而成&#xff0c;主要特性有&#xff1a; 检测速度快&#xff1a;发包速度快 ; 漏洞检测算法高效。 支持范围广&#xff1a;大至 OWASP Top 10 通用漏洞检测&#xff0c;小至…

Nginx上配置多个网站

一、需求描述 我们只有一台安装了Nginx的服务器,但是我们需要实现在这台服务器上部署多个网站,用以对外提供服务。 二、Nginx上配置多个网站分析 一般网站的格式为:【http://ip地址:端口号/URI】(比如:http://192.168.3.201:80),IP地址也可用域名表示;那么要实现在Nginx…

Nuxt框架中内置组件详解及使用指南(五)

title: Nuxt框架中内置组件详解及使用指南&#xff08;五&#xff09; date: 2024/7/10 updated: 2024/7/10 author: cmdragon excerpt: 摘要&#xff1a;本文详细介绍了Nuxt框架中和组件的使用方法与配置&#xff0c;包括安装、基本用法、属性详解、示例代码以及高级功能如…

vscode如何自动补全-cnblog

打开设置 输入save选项选afterDelay 详情介绍 afterDelay 这个是在多少毫秒后自动保存。 onFocusChange 编辑器失去焦点的时候保存 onWindowChange 这个是窗口失去焦点的时候保存 自动保存时间设置 Auto Save Delay默认保存时间是1000毫秒,就是1秒,设置成500毫秒可以对应大…

PaintsUndo - 一张照片一键生成绘画过程视频 本地一键整合包下载

这就是ControlNet作者张吕敏大佬的新作&#xff0c;PaintsUndo。只要你有一张图片&#xff0c;PaintsUndo 就能让它变成完整的绘画过程视频。这科技&#xff0c;绝了。 你有没有想过&#xff0c;一张静态图片也能变成一个绘画教程? PaintsUndo 就是这么神奇。你只需要提供一…

C++ 现代教程三

// 模板参数类型区分 template <class T> static std::string cppdemangle() {std::string s{cppdemangle(typeid(std::remove_cv_t<std::remove_reference_t<T>>))};if (std::is_const_v<std::remove_reference_t<T>>)s " const";if…

商家转账到零钱申请必过攻略

商家使用微信支付的“商家转账到零钱”功能需要满足一定的条件&#xff0c;并遵循特定的开通步骤。由于人工审核提高了申请门槛&#xff0c;多数商家在申请中需要一定的操作指南才能开通&#xff0c;以下是我们上万次成功开通“商家转账到零钱”功能的经验总结&#xff0c;希望…

夏令营入门组day1

一. 题目 二. 初步思路 因为是解决区间上的问题&#xff0c;很容易想到用前缀和来解决。前缀和是o ( n ) 的时间复杂度&#xff0c;但后续枚举两个端点要 o ( n^2 )&#xff0c;对于2e10的数据&#xff0c;超时。 for (int i 1; i < n; i )for (int j i; j <n; j ){if…

小程序问题

1.获取节点 wx.createSelectorQuery() wx.createSelectorQuery().in(this) //组件中加in(this)&#xff0c;不然获取不到 2.使用实例 wx.createSelectorQuery().in(this).select(#share).fields({node: true,size: true}).exec(async (res) > {const canvas res[0].node;…

接上一回C++:补继承漏洞+多态原理(带图详解)

引子&#xff1a;接上一回我们讲了继承的分类与六大默认函数&#xff0c;其实继承中的菱形继承是有一个大坑的&#xff0c;我们也要进入多态的学习了。 注意&#xff1a;我学会了&#xff0c;但是讲述上可能有一些不足&#xff0c;希望大家多多包涵 继承复习&#xff1a; 1&…

绿洲生态OAS:探索数字新绿洲,共创价值新纪元

绿洲生态OAS的盛大启航 在数字经济的浩瀚星海中&#xff0c;一颗名为绿洲生态OAS的璀璨明珠即将于7月13日全面正式上线。这是一场对未来的探索&#xff0c;一次对财富自由的勇敢追求。绿洲生态&#xff0c;简称OAS&#xff0c;以其独特的积分发行规划&#xff0c;吸引了无数投…

电脑工具箱神器——uTools

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/ 很多人脑子里都有一些一个月只用两三次的软件&#xff0c;这些软件就这样积满了灰尘&#xff0c;需要的时候又不知道去哪里找。uTools 完美地解决…

C语言补充:指针的基础理解

1.int* 和 char* 的修改字节上的区别及指针的运算 先看两段代码&#xff1a; int a 0x11223344; int* pa &a; *pa 0;int a 0x11223344; char* pa &a; *pa 0;这里我们不难发现对于指针的改变其实是取决于对应的指针类型的&#xff0c;32位环境下char就是一个字节…

干货:如何高效检索和阅读文献

前言:Hello大家好,我是小哥谈。高效检索和阅读文献是科研过程中非常重要的一环,它能够帮助我们快速找到所需的信息并进行深入的学习和理解。本文就说明一下如何高效检索和阅读文献。🌈 目录 🚀1.炼成“高搜商” 🍀🍀1.1 文献检索 🍀🍀1.2 ⽂献树思维 �…

c++初阶知识——类和对象(1)

目录 1.类和对象 1.1 类的定义 1.2 访问限定符 1.3 类域 2.实例化 2.1 实例化概念 2.2 对象大小 内存对齐规则 3.this指针 1.类和对象 1.1 类的定义 &#xff08;1&#xff09;class为定义类的关键字&#xff0c;Stack为类的名字&#xff0c;{}中为类的主体&#xf…

数据(图像)增广

一、数据增强 1、增加一个已有数据集&#xff0c;使得有更多的多样性&#xff0c;比如加入不同的背景噪音、改变图片的颜色和形状。 2、增强数据是在线生成的 3、增强类型&#xff1a; &#xff08;1&#xff09;翻转 &#xff08;2&#xff09;切割 &#xff08;3&#xf…