教 程 目 录
Powershell教程
Windows PowerShell是命令行shell 和脚本语言专为系统管理而设计.它在Linux中的类比称为Bash Scripting. Windows PowerShell构建于.NET Framework之上,可帮助IT专业人员控制和自动管理在Windows Server环境中运行的Windows操作系统和应用程序.
Windows PowerShell命令,称为 cmdlet ,让您从命令行管理计算机. Windows PowerShell提供程序允许您像访问文件系统一样轻松访问数据存储,例如注册表和证书存储.
此外,Windows PowerShell具有丰富的表达式解析器和完整的开发脚本语言.因此,简单来说,您可以完成使用GUI执行的所有任务.
受众
本教程专为所有人设计想要学习Windows Server 2012功能的读者.对于那些需要安装和使用该操作系统在各自组织中履行各种职责的专业人员来说,它尤其有用.
先决条件
我们假设本教程的读者具有处理基于Windows的服务器的实际经验.此外,如果读者具备如何安装和使用操作系统的基本知识,它将会有所帮助.
本文地址:https://www.itbaoku.cn/tutorial/powershell-index.html
相关问答
你好, 我正在运行以下 powershell 脚本以在多台服务器计算机上运行可执行文件.此可执行文件大约需要 1 分钟才能完成并将结果输出到控制台窗口: $servers = 'Srv001', 'Srv002'; $ErrorActionPreference = "STOP"; $credentials = Get-Credential 'adm\runner'; foreach($srv in $servers){ $session = New-PSSession -ComputerName $srv -Credential $credentials; Invoke-Command -Session $session -ScriptBlock { Write-Host ('Executing task on ' + $args) -ForegroundColor Green; PowerShell.exe -Command "& ""cmd.exe /C C:\Miner.exe"""; Write-Host '---TEST COMPLETE---' -ForegroundColor Green; } -ArgumentList $srv; #-AsJob } Rem
)
我正在使用PowerShell.EXENT ENGINE事件来保存我的命令历史记录,并在关闭PowerShell会话时进行其他整理,因此将其注册在我的个人资料中: # Set up automatic functionality on engine exit. Register-EngineEvent PowerShell.Exiting -SupportEvent -Action ` { #stuff ... } 当我在控制台窗口中使用powershell时,这很好地工作,但是当我在ISE中运行PowerShell时,PowerShell似乎以某种方式从未开火,因为我什么都没有放在那里,无论是通常的东西还是通常的东西或测试代码,曾经运行. 这是一个已知的问题,如果是这样,是否有已知的解决方法或替代方案? 解决方案 好吧,这很奇怪. 在寄存器 - 发动机呼叫之外完全删除了轮廓后,才发现它仍然没有起作用,我也开始降低其中的内容,并将其余的配置文件恢复到其原始状态.这是我的发现: 如果您的write-host或对PowerShell主机的其他输出,则在Register-EngineEvent PowerShell.Exited的scriptBlock中,它不会在退出ISE时运行(即使您退出控制台时它可以正常运行). 实际上,您已经针
)
我有一个powershell脚本,该脚本是一个函数,并具有参数.从PowerShell命令Shell中,如何执行函数?似乎对不同用户的工作方式不同. 解决方案 您的脚本只是脚本还是包含函数?如果是脚本并采用参数,它将看起来像这样: -- top of file foo.ps1 -- param($param1, $param2) 您像CMDLET剥离一样调用,如果您从当前DIR运行,则必须指定脚本的路径: .\foo.ps1 a b 在 您提到了功能,因此,如果您看起来像这样,则有几个选项: -- top of file foo.ps1 -- function foo ($param1, $param2) { } 如果您像上面一样运行foo.ps1,除了定义临时范围中称为foo的函数外,什么也不会发生,当脚本退出时,该范围将消失.您可以在脚本的底部添加一行,该行实际上称为FOO函数.但是,也许您打算更多地将此脚本用作可重复使用的函数库.在这种情况下,您可能要load将功能纳入当前范围.您可以使用点源操作员.这样做: C:\PS> . .\foo.ps1 C:\PS> foo a b 现在函数FOO将在全球级别定义.请注意,您可以在另一个脚本中执行相同的操作,该脚本
)
您属于哪些Powershell陷阱? :-) 我的是: # ----------------------------------- function foo() { @("text") } # Expected 1, actually 4. (foo).length # ----------------------------------- if(@($null, $null)) { Write-Host "Expected to be here, and I am here." } if(@($null)) { Write-Host "Expected to be here, BUT NEVER EVER." } # ----------------------------------- function foo($a) { # I thought this is right. #if($a -eq $null) #{ # throw "You can't pass $null as argument." #} # But actually it should be: if($null -eq $a) { throw "You can't pass
)
这是我的第一个脚本,所以不要击败我不好! 我正在研究一个基于用户输入的网络目录和广告组的脚本.以下是我到目前为止所得到的.它有效,但我想进行一些增强. 我想验证用户输入的长度.我能够找到一篇文章( powerShell with powerShell dalotateLength带有read-host )要使用valialatElength字符串来检查用户的输入.但是,这很棒,但是,我想将其包括在循环中.示例如果用户未精确输入X字符 - 然后重试.现在它只是错误. 任何帮助将不胜感激! [ValidateLength(2,2)]$Division = [string](Read-Host -Prompt 'Please enter the TWO digit division number ') [ValidateLength(4,4)]$Matter = [string](Read-Host -Prompt 'Please enter the FOUR digit matter number ') [ValidateLength(4,4)]$Client = [string](Read-Host -Prompt 'Please enter the FOUR digit client number ') 解决方案 尽管各种[Validate ...属性
)
我正在编写一个部署应用程序的大脚本.该脚本基于几个嵌套函数调用. 有什么方法可以根据深度"识别"输出? 例如,我有: function myFn() { Write-Host "Start of myfn" myFnNested() Write-Host "End of myfn" } function myFnNested() { Write-Host "Start of myFnNested" Write-Host "End of myFnNested" } Write-Host "Start of myscript" Write-Host "End of myscript" 脚本的输出将是: Start of myscript Start of myfn Start of myfnNested End of myFnNested End of myFn End of myscript 我要实现的是此输出: Start of myscript Start of myfn Start of myfnNested End of myFnNested End of myFn End of myscript 由于我几乎不想编码空间的数量(因为我不知道复杂脚本中的深度级别).我如何
)