很长一段时间后,我从bash返回到powershell,我发现where对象的行为非常令人困惑。为什么以下代码片段会返回成功?没有找到!为什么这不像grep那样返回失败?C:>Get-Process|?{$_.name-like"laksdjfajsdfkjasdkf"}C:>echo$?True 最佳答案 tl;dr#Runthecommandand,inadditiontooutputtingtotheconsole,#collecttheresultsinvariable$result,viacommonparameter-O
我知道-List获取WMI存储库命名空间中WMI类的名称,但我不太明白它在以下上下文中的含义:(Get-WmiObject-listWin32_ShadowCopy).Create("C:\","ClientAcessible") 最佳答案 注意:CIMcmdlet已取代WMIcmdlet,但答案有些类似,不同之处在于Get-CimInstance不支持-List,但有一个专用的Get-CimClasscmdlet和调用类方法的最简单方法是始终使用专用的Invoke-CimMethodcmdlet。(Get-WmiObject-li
我在完成powershell脚本时遇到了一些问题。我有一个程序可以将图像下载到一个临时文件夹中,然后在一小时内它会删除图像文件。有时我想保留一些文件,所以我创建了一个powershell脚本,将图像文件从临时文件夹复制到一个新文件夹,以便我可以对它们进行分类并保留我想要的。这是从下载文件夹复制到目标文件夹的一种方式。由于脚本将由Windows任务计划程序每20分钟运行一次,我希望脚本将它在下载文件夹中找到的文件与目标文件夹中的文件进行比较,看看它是否已经存在。如果文件是新的,则复制它,如果它已经在目标文件夹中,则忽略它。这只是纯粹匹配文件名,而不是进行二进制比较。在网上搜索,我在Tom
我需要找出计算机在一天内第一次启动和最后关闭的时间。例如。我会在早上10点启动我的计算机,并且我会多次重新启动或处于闲置状态。最后在一天结束时(晚上9点)我会关闭机器。我想知道过去2周我在电脑前大致花费了多长时间。下面的命令在事件日志消息中给出了一天的正常运行时间,但它以秒为单位显示了多个正常运行时间。相反,如果我可以获得首次启动时间和上次关闭时间,我就可以轻松计算出来。(get-eventlog-EntryTypeInformation-LogNameSystem-InstanceId2147489661-newest25) 最佳答案
我是powershell的新手,目前遇到了一个问题。我导入一个包含2列(服务器名称和大小)的CSV文件像这样:Server|Size-------------SRV1|140SRV2|120SRV1|100SRV1|140SRV2|200我想为每个服务器添加所有大小值,例如:SRV2=120+200SRV1=140+100+140我不知道该怎么做。我尝试使用for循环,但是对每一行都进行了操作,所以我的结果是错误的。谁能帮帮我? 最佳答案 使用:Group-Objectcmdlet按服务器名称(Server)对CSV行进行分组然后使
我看到here,它可以在WindowsPowerShell中点源脚本。如何取而代之获取用户的环境变量(或者用户变量保存在哪个文件路径中)?例子.ps1:[Environment]::SetEnvironmentVariable("PATH","C:\newapp\bin","User")newapp--do-something#failsuntilPSrestart 最佳答案 环境变量存储在注册表中,而不是文件中¹,并且会在PowerShell启动时自动加载。没有什么可以点源的。您可以通过列出env:PSDrive:的内容来显示环境
这是我的脚本:机器远程服务关系Set-ExecutionPolicy-ExecutionPolicyUnrestricted-ScopeCurrentUser-Force$passwd=ConvertTo-SecureString-AsPlainText-Force-StringPASSWORD#Remplacer'Password'parvotreMotdepasseDatacenter$cred=New-Object-TypeNameSystem.Management.Automation.PSCredential-ArgumentList"LOGIN",$passwd#Rempl
我正在编写一个PowerShell脚本来收集计算机的一些数据。我快完成了,但我不知道如何获取计算机上所有磁盘的大小。我知道如何用几个If语句来完成它,但我希望它自动检测驱动器,而不是如果连接了新磁盘我必须编写一个新的If语句。我想要的输出如下:“A:,250GB”。“A:”位有效,但磁盘大小位无效。这是我使用和调整过的代码,但无济于事:$Drives=Get-WmiObjectWin32_logicaldisk|?{$_.DriveType-eq3}|ForEach-Object{$_.name}ForEach($Drivenamein$Drives){$Drivenames=Get-
我有以下power-shell脚本,我想在其中获取我们服务器的ServiceTag:-((Get-VMHost|Get-View).Hardware.SystemInfo.OtherIdentifyingInfo|?{$_.IdentifierType.Key-like"ServiceTag"}).IdentifierValue但我注意到,对于某些服务器,我会得到2个代表服务标签的值,这正常吗?如果是这样,那么我可以使用哪个来识别服务器?编辑当我运行这个脚本时:-((Get-VMHost|Get-View).Hardware.SystemInfo.OtherIdentifyingInf
有没有一种方法可以使用Compress-Archive脚本,当从路径运行时:归档所有匹配通配符过滤器的文件(例如*.doc)将此类文件归档到当前文件夹和所有子文件夹中保存相对文件夹结构(不过,使用相对或绝对选项会更好)我很难同时完成所有这三个。编辑:以下过滤器和递归,但不维护文件夹结构Get-ChildItem-Path".\"-Filter"*.docx"-Recurse|Compress-Archive-CompressionLevelOptimal-DestinationPath"$pwd\doc.archive-$(Get-Date-fyyyyMMdd.hhmmss).zip"