whi*_*kid 7 windows powershell
如何检查 PowerShell v2.0 是否安装在服务器列表中?服务器列表是 Windows Server 2003 和 Windows Server 2008 的组合。vbscript 或 PS 脚本会很棒。
我知道 PowerShell 默认安装在 Windows Server 2008 中,但我只是想确保有人没有弄乱服务器。
在四处挖掘并找到几个在我的环境中没有任何可用的地方之后,我找到了这个。这适用于没有 Powershell 的系统,因此它可以用于其他注册表扫描。
\n\n$hostA = \xe2\x80\x9cRemoteComputer\xe2\x80\x9d\n$cred = Get-Credential "domain\\username"\n$RegPath = "SOFTWARE\\Microsoft\\PowerShell\\1\\PowerShellEngine"\n$ValueName = "PowerShellVersion"\n$tmp = $(gwmi -computername $hostA -class win32_service -Credential $cred | Where-Object { $_.Name -eq \xe2\x80\x9cRemoteRegistry\xe2\x80\x9d })\nif ( $($tmp.State) -eq "Stopped") {$tmp.StartService()}\n$reg = Get-WmiObject -credential $Cred -List -Namespace root\\default -computername $hosta | Where-Object {$_.Name -eq "StdRegProv"}\n$ref = ($reg.GetStringValue(2147483650,$RegPath,$ValueName)).sValue\nif ($ref -eq $null ) {Write-Host $hostA "doesn\'t have Powershell"} else {Write-Host $hostA "has Powershell version" $ref}\nRun Code Online (Sandbox Code Playgroud)\n\n编辑:环顾四周后,发现如果远程注册表服务未运行,这将不起作用。我添加了代码来检查远程注册表并在停止时启动。可以根据您的域设置将其$cred = Get-Credential "domain\\username"删除。-Credential $cred
Edit2:好的,我发现使用 .OpenSubKey() 存在权限问题。我将其切换为 .GetValueKind(),因为我们需要做的就是验证密钥是否存在。希望这对你有用。我没有工作的权限来为您进行全面测试。
\n\nEdit3:由于我跨越了不受信任的域,因此我在环境中遇到了很多权限问题。我重写了上面的代码以在我的环境中工作。它可以远程工作,并且不需要安装 Powershell。如果您遇到任何其他错误,请告诉我。
\n| 归档时间: |
|
| 查看次数: |
6926 次 |
| 最近记录: |