Powershell在一个会话中只允许执行指定命令的方法
支持所有PS版本
Powershell处理可执行程序(如EXE)类似其它语言。然而你也可以让PS阻止执行任何程序或仅允许执行授权文件。
默认是允许执行任何程序:
PS> $ExecutionContext.SessionState.Applications *
下面将授权PS只允许执行ping.exe和regedit.exe命令。
$ExecutionContext.SessionState.Applications.Clear() $ExecutionContext.SessionState.Applications.Add('ping.exe') $ExecutionContext.SessionState.Applications.Add('regedit.exe')
请看结果:
$ExecutionContext.SessionState.Applications ping.exe regedit.exe
比如,我此时执行ipconfig时就应当报错:
PS> ipconfig ipconfig : 无法将“ipconfig.exe”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请 确保路径正确,然后再试一次。 所在位置 行:1 字符: 1 + ipconfig + ~~~~~~~~ + CategoryInfo : ObjectNotFound: (ipconfig.exe:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
当然,你也可以还原到初始设置:
$ExecutionContext.SessionState.Applications.Add('*') PS> explorer PS>
所以,它能较好的防止EXE的执行(或意外执行非法EXE),使用它作为一种安全模式,你就可以关闭。当关闭了它,你将不能执行访问.net对象,于是在当前会话你将不能在恢复这些设置。
Powershell中创建自定义对象例子
支持3.0及以后版本下面是一个简单有效的创建一个自定义对象的方法:$object=[PSCustomObject]@{Name='Weltner'ID=123Active=$true}这将产生一个含初始值的对象:PS$obj
Powershell中使用WMI工具例子
支持所有版本WMI是一个强大的技术:只需要简单的指定一个WMI类名就能返回它类的所有实例:PSGet-WmiObject-ClassWin32_BIOSSMBIOSBIOSVersion:76CN27WWManufacturer:LENOVON
PowerShell查看Windows功能选项的方法
在WindowsServer2012中使用PowerShell添加和删除Windows角色和功能非常方便,但是在windows8.1上启用和禁用Windows选项却略显鸡肋。比如Get-WindowsOptionalFeature获取当