小编Jam*_*own的帖子

Win32_Product 的替代品?

Win32_Product尝试查询以找到软件版本后,我无法理解为什么结果如此之慢。比查询Win32_serviceWin32_process. 所以来到这里看看我是否遗漏了什么,我发现其他人报告了同样的问题,这篇文章解释了原因。

查找已安装软件的最常建议替代方法是查询一个或三个注册表项。这将是我的第一个解决方案,但我的公司尚未开始配置服务器以接受PSRemoting。任何 reg 查询只会返回 Kerberos 身份验证错误。我可以PSRemoting在单个服务器上启用,但我的团队支持 30K 系统。所以这个解决方案已经出来了。

最重要的是,我们正在将 Symantec Endpoint Protection 从 v. 11 升级到 v. 12,我想要一个简单的检查来查找服务器上安装的版本。除了Win32_Product注册表查询之外,还有其他方法可以找到版本吗?

windows powershell wmi-query

6
推荐指数
1
解决办法
9782
查看次数

使用PowerShell查找字符串的差异

所以我正在使用 Compare-Object,它对于比较文件效果很好。但如果只是字符串呢?有没有办法找出字符串之间的差异?CompareTo() 擅长报告存在差异,但不报告差异是什么。例如:

PS:> $a = "PowerShell rocks"
PS:> $b = "Powershell rocks"
PS:> $a.CompareTo($b)
1
PS:> Compare-Object -ReferenceObject $a -DifferenceObject $b
PS:>
Run Code Online (Sandbox Code Playgroud)

什么也没有返回。

有什么方法可以让我了解字符串之间的实际差异,而不仅仅是存在差异?

string powershell compareto difference compareobject

5
推荐指数
1
解决办法
1万
查看次数

PowerShell-替换方括号?

因此,我最近了解到要用-replace删除大括号,我需要将它们括在方括号中。像这样:

$server = '{Server123}'
$server -replace '[{}]',''
Run Code Online (Sandbox Code Playgroud)

因此,我想知道如何去除方括号?

$server1 = '[Serverxyz]'
Run Code Online (Sandbox Code Playgroud)

我尝试使用正斜杠,反斜杠转义,使用更多的方括号,括号,花括号,将每个方括号放入变量中并替换变量。

我什么都没想。我找到了一些有关该过程的在线资源,但它们是用Javascript,C ++或PowerShell以外的方法完成的。

regex powershell replace

4
推荐指数
1
解决办法
1万
查看次数

修剪字符串的结尾

我无法修剪字符串末尾的某些字符.字符串通常如下所示:

C:\blah1\blah2
Run Code Online (Sandbox Code Playgroud)

但有时它看起来像:

C:\blah1\blah2.extra
Run Code Online (Sandbox Code Playgroud)

我需要提取字符串'blah2'.大多数情况下,使用substring命令很容易.但是在极少数情况下,当存在'.extra'部分时,我需要首先修剪该部分.

问题是,'.extra'总是以点开头,然后是各种长度的字母的各种组合.所以通配符是必要的.本质上,我需要编写脚本,"如果字符串包含一个点,则修剪点和后面的任何内容."

$string.replace(".*","")不起作用.也没有$string.replace(".\*","").也没有$string.replace(".[A-Z]","").

此外,我无法从字符串的开头得到它.'blah1'未知且长度各异.我必须从字符串的末尾开始'blah2'.

regex string powershell

1
推荐指数
1
解决办法
827
查看次数

Powershell功能失败

我发誓我在这里错过了一些简单的东西......

这是一个获取磁盘信息的简单脚本:

function get-disks {
try { $disks = gwmi win32_logicaldisk -co $server}
catch { write "$server : Can't connect"}
}
get-disks
$disk.deviceid
Run Code Online (Sandbox Code Playgroud)

仅gwmi命令就完美无缺.单独的"$ disks = gwmi ..."命令完美无缺.try {...} catch {...}行单独运行完美.

但是只要我加载函数并调用'get-disks',我就不会收到任何错误,但是$ disks是空的.

powershell

0
推荐指数
1
解决办法
81
查看次数