小编Cli*_*ers的帖子

如何将 cmdlet 插入到 powershell 中的字符串中

假设我想用字符串来表示时间,就像这样

Write-Output "It's now (Get-Date)"
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用,相反:

$time = Get-Date
Write-Output "It's now $time"
Run Code Online (Sandbox Code Playgroud)

如何在不将其资源分配给变量的情况下获得相同的结果?

string variables powershell powershell-cmdlet

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

为什么反转arraylist没有显示任何结果?

我试图反转队列并使其成为堆栈.但它没有显示任何输出.

$queue = [System.Collections.ArrayList]@()

$queue.Add("Object1") | Out-Null
$queue.Add("Object2") | Out-Null
"=========== Queue ================"
foreach ($i in $queue) {
    $i
}

$stack = $queue.Reverse()
"=========== stack ================"
foreach ($i in $stack) {
    $i
}
Run Code Online (Sandbox Code Playgroud)

我期待如下结果

=========== Queue ================
Object1
Object2
=========== stack ================
Object2
Object1
Run Code Online (Sandbox Code Playgroud)

但是堆栈结果没有给出如下任何值

=========== Queue ================
Object1
Object2
=========== stack ================
Run Code Online (Sandbox Code Playgroud)

这有什么不对?怎么纠正呢?

powershell arraylist

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

输出前对带有Get-FileHash的Get-ChildItem结果进行排序

我尝试编写Windows PowerShell脚本。我需要从目录树中的所有文件中获取文件哈希。

这是我到目前为止所得到的:

Get-ChildItem -Path "c:\temp\path" -Recurse -Force -Attributes !Directory | % {Get-FileHash $_.Fullname} | Out-File "c:\temp\report_file.txt"
Run Code Online (Sandbox Code Playgroud)

文件c:\temp\report_file.txt是这样的:

Algorithm Hash Path                                                                         
--------- ---- ----                                                                         
SHA256 E3B0C44298...E4649B934CA495991B7852B855 c:\temp\path\report1.txt                                                        
SHA256 7B989C1C95...6756624B3887E501DCC377DB23 c:\temp\path\report2.txt                                                       
SHA256 EA0155401C...A6D44F1DEBB95E401AEFF4F908 c:\temp\path\report3.txt                                                      
SHA256 06DAA0E452...32E3F3104EA4564EAB67CA6A0A c:\temp\path\report4.txt                                                     
**SHA256 9C7C9FEA96...45F460BA9015C8F0A5CA830B6B c:\temp\path\report5.txt**              
Run Code Online (Sandbox Code Playgroud)

一切正常。

期望:
我每天多次运行此cmdlet。有时会在此目录树中删除并重新创建文件。而且...输出文件中文件的顺序是不相同的。在下面的示例中report5.txt,报告文件中的文件必须在最后一行,但在第二行。我想这是因为选择了递归选项。我需要此递归选项。当我在没有子目录的目录上运行cmdlet时,结果始终是相等的。但是,在带有子目录的目录(目录树)上时-不。

Algorithm Hash Path                                                                         
--------- ---- ----                                                                         
SHA256 E3B0C44298...E4649B934CA495991B7852B855 c:\temp\path\report1.txt                                                        
**SHA256 9C7C9FEA96...45F460BA9015C8F0A5CA830B6B c:\temp\path\report5.txt**              
SHA256 7B989C1C95...6756624B3887E501DCC377DB23 c:\temp\path\report2.txt                                                       
SHA256 EA0155401C...A6D44F1DEBB95E401AEFF4F908 c:\temp\path\report3.txt                                                      
SHA256 06DAA0E452...32E3F3104EA4564EAB67CA6A0A c:\temp\path\report4.txt                                                     
Run Code Online (Sandbox Code Playgroud)

这是一种解决方案,可以在将数据输出到报告文件之前,按列全路径对所有数据进行排序吗?

sorting powershell

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

如果列表中某个项目出现多次,则删除该项目的所有实例

给定一个数字列表: { 4, 5, 7, 3, 5, 4, 2, 4 }

所需的输出是: { 7, 3, 2 }

我正在考虑的解决方案是从给定的列表中在 HashMap 下创建:

Map<Integer, Integer> numbersCountMap = new HashMap();
Run Code Online (Sandbox Code Playgroud)

其中键是列表中的值,值是出现次数。

然后循环遍历 HashMap 条目集,只要数字包含的计数大于 1,就从列表中删除该数字。

for (Map.Entry<Int, Int> numberCountEntry : numbersCountMap.entrySet()) {
     if(numberCountEntry.getValue() > 1) {  
        testList.remove(numberCountEntry.getKey());
     }
}
Run Code Online (Sandbox Code Playgroud)

我不确定这是否是解决此问题的有效方法,因为remove(Integer)对列表的操作可能很昂贵。此外,我正在创建额外的 Map 数据结构。并循环两次,一次在原始列表上创建地图,然后在地图上删除重复项。

你能不能提出一个更好的方法。可能是 Java 8 有更好的实现方式。我们还可以在 Java 8 中使用 Streams 和其他新结构在几行中完成吗?

java collections data-structures java-8 java-stream

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

如何在Grails的Config.groovy中模拟单元测试的值

我想写一些测试用例,我必须模拟配置文件的一些属性.

下面显示的是实际代码

if (password.length() < grailsApplication.config.user.password.min.length) {
    return false
}
Run Code Online (Sandbox Code Playgroud)

我想模拟grailsApplication.config.user.password.min.length 在我的配置文件中,user.password.min.length已设置为6

我试着用以下方式嘲笑:

  1. mockConfig = new ConfigObject()
    mockConfig.user.password.min.length = 6

  2. mockConfig("user.password.min.length")

  3. mockConfig(user.password.min.length)
  4. mockConfig(mockConfig.user.password.min.length)

但这一切都没有效果.我的代码NullPointerException有时会抛出.有人可以建议正确的方法来模拟配置文件吗?

grails groovy unit-testing mocking

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

批处理文件,我想抑制 Windows 脚本主机弹出窗口

我在我的组织中使用 MDT(Microsoft 部署工具包)和 WDS(Windows 部署服务)。我cmd /c %scriptroot%\HP_Win_7.bat在任务序列中调用了一个 CMD 文件。

批处理文件的内容:

slmgr /ilc c:\support\zertifikate\HP.xrm-ms
slmgr /ipk 74T2M-DKDBC-788W3-H689G-6P6GT
slmgr /ato
Run Code Online (Sandbox Code Playgroud)

在批处理文件的执行过程中,我从 Windows Script Host 收到 3 个弹出窗口,我必须按“确定”或“输入”确认。批处理暂停,直到我确认弹出窗口。如果没有,cmd 文件将暂停。

我想要一个解决方案来隐藏这些弹出窗口或自动确认它们。

该脚本加载证书文件和通用密钥并激活窗口。(Windows 键是通用的,适用于 HP Win 7 PC)

windows vbscript batch-file mdt

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

带变量的路径

只是观看并不多解释.

$env = '@PROD'
$LogTime = Get-Date -Format "MM-dd-yyyy_hh:mm:ss"
$LogFile = '"C:/Test/test/test/Log/"+$LogTime+"_Log_"+$env+".log"'
Write-Host $LogFile
Run Code Online (Sandbox Code Playgroud)

但$ LogFile不对.输出="C:\ Test\test\test\Log \"+ $ LogTime +" Log "+ $ env +".log"

variables powershell path

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

使用Powershell卸载exe软件

我正在按照此线程从Windows 10系统中卸载mozilla firefox。

我最初使用exe安装程序安装了mozilla firefox,但没有执行mozilla条目gwmi -Class Win32_Product

有什么方法可以触发Windows系统上该软件的卸载程序?

注意:我将无法为此目的使用msi安装程序。

powershell wmi uninstall powershell-4.0

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