PowerShell学习笔记

1. 获取一个集合的数量

@(get-process | where-object {$_.Name -eq "SERVICE1"}).count

注意:

如果不加“@”,当count为0时将返回空(而非0)。

2. 创建自定义方法

function FindDefaultPrinter

{

    Get-WMIObject -query "Select * From Win32_Printer Where Default = TRUE"

}

3. 显示计算字段
C:\PS>get-process | select-object -property ProcessName,@{Name="Start Day"; Expression = {$_.StartTime.DayOfWeek}}

ProcessName  StartDay

----         --------

alg          Wednesday

ati2evxx     Wednesday

ati2evxx     Thursday

...

说明

-----------

此命令显示计算机上正在运行的进程的名称和启动日期。

Property 参数的值为 ProcessName 和名为“Start Day”的计算属性。通过使用具有 Name 和 Expression 键的哈希表来添加“Start Day”属性。

4. 获取命令别名
get-alias

5. 创建profile文件
New-Item -path $profile -type file –force

编辑profile文件:

notepad $profile

6. 获取/设置执行策略
Get-ExecutionPolicy

Set-ExecutionPolicy RemoteSigned

获取签名帮助信息

Get-Help About_Signing

7. 改变当前路径
PS C:\scripts> Set-Location C:\Windows

PS C:\WINDOWS>

8. 在VBScript中执行PowerShell脚本
Set objShell = CreateObject("Wscript.Shell")

objShell.Run("powershell.exe -noexit c:\scripts\test.ps1")

9. 在Windows环境中执行PowerShell脚本

powershell.exe -noexit get-childitem C:\Users\Administrator\Desktop

powershell.exe "C:\Users\Administrator\Desktop\test.ps1"

powershell.exe -noexit "C:\Users\Administrator\Desktop\test.ps1"

注意:

1)powershell.exe后面的文件路径字符串前不能加“&”,否则此脚本文件会被在Notepad中打开,而非被PowerShell执行。

2)文件路径字符串不能用单引号,否则会直接“回显”此字符串,而不是执行。

10. 读取和添加环境变量

$a = $env:path; $a.Split(";")

$env:path = $env:path + ";c:\scripts"

11. 管道示例

get-PsSnapin |select name|Where-Object {$_.name -contains "Microsoft.SharePoint.PowerShell"}

Get-ChildItem C:\Windows | Where-Object {$_.Length -gt 200KB} | Sort-Object Length

Get-Service | Sort-Object Status | Format-Table

12. 如何显示字符串

foreach ($service in get-content c:\services.txt) {

set-service $service -startuptype disabled

"Disabling $service"

}

13. 如何使用管道符(|)

PS C:\> get-content c:\services.txt |

 set-service -startuptype disabled

PS C:\>

以下为将发生的情况:

1)Get-Content cmdlet 执行,从而读取整个文件。将文件中的每一行都作为唯一的对象进行处理,将它们放在一起就是对象的集合。

2)将对象的集合通过管道输送到 Set-Service。

3)对于每个输入对象,管道都执行一次 Set-Service cmdlet。对于每次执行,都要将输入对象作为 cmdlet 的第一个参数(即服务名称)传递到 Set-Service。

4)Set-Service 使用其第一个参数的输入对象和指定的任何其他参数(在本例中是 -startuptype 参数)执行。

原文地址:https://www.cnblogs.com/jancco/p/2489075.html