Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
 Powershell_IT技术博客_编程技术问答 - 「Fatal编程技术网」

Powershell从阵列中选择对象不工作

我试图分离数组中的值,以便将它们传递给另一个函数 我在for循环中使用select Object函数遍历每一行,并分隔时间戳和值字段 但是,无论我做什么,下面的代码只显示每行的第一个select对象变量。第二个“选择对象”命令似乎不起作用,因为我的输出是6行中每一行的一个空行 关于如何获得这两种价值观有什么想法吗 $ReportData = $SystemStats.get_performance_graph_csv_statistics( (,$Query) ) ### Allocate

如何阅读PowerShell';是来自PowerShell的调试流吗?

我正在使用PowerShell 2.0通过函数将数据写入PowerShell的调试流。现在我想从同一个PowerShell脚本读取该流。我试图用“2>&1”重定向调试流,但这只适用于错误流 有没有办法从PowerShell脚本读取PowerShell调试流?可以这样做,但很复杂。请看Oisin的文章。一般来说,这个能够重定向stdout和stderr以外的流的问题已经解决了。您可能希望对此进行投票。您还可以尝试将调用的函数,而不是cmdletWrite Debug。下面是一个非常快速的实现: $

Powershell Virtual Machine Manager-按运行时间搜索虚拟机

我正在使用Virtual Machine Manager 2008 R2,不知道你们中是否有人知道如何通过运行时间搜索虚拟机 我想找到那些运行时间最长的机器,这样我就可以检查并重新启动任何已经运行了6个月以上的机器 也许使用powershell可以实现这一点?GUI中的任何东西都会更好 更新:刚刚找到了一种更好、更短的方法: Get-VM | Where-Object { (Get-VMPerformance -VM $_.Name).UpTime.Days -gt 180 } | Select

如何将选项标志传递到PowerShell中的Folder.CopyHere?

我正在尝试编写一个脚本,自动地、无声地将一组字体移动到中,这样它们就可以像您从资源管理器“安装”它们一样使用(通过拖放、复制或右键单击并选择“安装”)。我将Shell.Application部分一直保存到副本 $FONTS = 0x14 $shell = New-Object -ComObject Shell.Application $source = $shell.Namespace($downloaded_path) $target = $shell.Namespace($FONTS) $t

Powershell WiX:从远程计算机安装时,安装程序在ConfigureUsers操作中失败

我有一个WixMSI安装程序,用于运行在my\u服务器上的ASP.NET网站。该软件包是通过一个非常简单的Powershell脚本install.ps1安装的,该脚本只调用带有一些参数的msiexec 问题 当我直接在我的服务器上运行install.ps1时,一切正常。但是,当我想从远程计算机(例如,build\u server)上运行install.ps1时,安装失败,错误代码为1603,MSI安装日志显示以下错误: 操作开始14:22:30:配置用户 ConfigureUsers:错误0x8

Powershell CSV,标题为哈希表

我有一个带有标题行的csv文件,我想将其转换为哈希表 例如,这是我的输入: #Version1.0 #Fields:ID,Data 1,data1 2,data2 3,data3 我希望输出是一个哈希表,其中Key=ID,Value=Data 这就是我所拥有的,但结果并不是我想要的 $mytable = Import-Csv -Path $filePath -Header ID,Data $HashTable=@{} foreach($r in $mytable) { $HashTab

PowerShell可用的所有颜色列表?

我正在搜索PowerShell中可以使用的所有颜色的列表。因为我们需要提供名称和数字,所以很难确定颜色是否存在,至少如果您不知道如何使用:)) 例如,as-foregroundcolor write-host "hello world" -foregroundcolor "red" 查看帮助怎么样?与此类似,get help write host将告诉您: [-BackgroundColor {Black | DarkBlue | DarkGreen | DarkCyan | DarkRed

PowerShell DSC复合资源

我已经成功创建了DSC配置并将其部署到服务器上。作为下一步,我尝试将服务器中常见的配置块部分拆分为可重用部分,或者用DSC术语“复合资源”。经过大量的研究,我仍然无法使用复合资源,它们在运行“Get-DSCResource”时没有列出 在查看了“Get-DSCResource”函数后,它似乎需要一个“DSCResources”子文件夹,PowerShell.org电子书没有说明,但PowerShell博客有说明。Get DSCResources函数使用资源名称(示例中为SimpleConfig)

使用Powershell修改本地安全策略

我使用Windows Server 2012 我可以这样做: 在“管理工具”文件夹中,双击“本地安全策略”图标,展开“帐户策略”,然后单击“密码策略” 在右侧窗格中,双击“密码必须满足复杂性要求”并将其设置为“禁用”。单击“确定”保存策略更改 如何使用Powershell以编程方式完成此操作?根据@Kayasax的回答,没有纯粹的Powershell方法,您必须将secedit包装到Powershell中 secedit /export /cfg c:\secpol.cfg (gc C:\sec

Powershell-获取QADUser-排除

我经常在周末收到电子邮件说“我想我的密码过期了,你能帮我查一下吗?”。所以我创建了一个简单的脚本,在周五检查它,然后通过电子邮件发送给我,这样我就可以在周末参考它。我们有一堆共享邮箱,我试图将它们排除在外,但已经有一段时间了,我觉得我忘记了什么 Get-QADUser -SearchRoot $root | Select Name,PasswordStatus| Where-Object FirstName -notlike "Shared" | Sort Name,PasswordStatus

Powershell 使用DSACL向用户对象授予安全权限

我正在尝试使用DSACLS命令向用户对象授予特定权限DSACLS命令仅在安装了AD管理单元时可用 在用户对象上运行此命令时,它将列出其所有对象安全权限: dsacls“CN=aaronooi,OU=Users,OU=IT,DC=Domain” 我想要的权限来自名为: 允许内置\Windows授权访问组 tokenGroupsGlobalAndUniversal的特殊访问权限 读取属性 如何使用此命令将上述类似权限应用于其他用户帐户?我似乎无法从“帮助”菜单中找到答案 如果类似的要求可以在Powe

Powershell DSC:无法加载模块xPSDesiredStateConfiguration

我正在阅读powershell.org上的DSC手册,并尝试使用手册中指定的配置代码设置拉取服务器 configuration CreatePullServer { param ( [string[]]$ComputerName = 'localhost' ) Import-DSCResource -ModuleName xPSDesiredStateConfiguration Node $ComputerName {

PowerShell使用密码PFX文件获取证书指纹

我正在尝试使用以下代码获取受密码保护的pfx文件的指纹: function Get-CertificateThumbprint { # # This will return a certificate thumbprint, null if the file isn't found or throw an exception. # param ( [parameter(Mandatory = $true)][string] $Certifica

Powershell InstallShield Automation can';不创建对象

我在2014年和2011年与Installshield合作。我正在使用主要升级和自动构建脚本来处理构建。InstallShield是独立的构建版本。两者都有 现在,windows 2003服务器上的Installshield 2011一切正常。我可以使用自动化界面打开一个项目,更改产品代码(用于主要升级),然后在构建安装程序之前保存它 此类代码在vbs文件中,如下所示: Dim oISM, oGUID Set oGUID = CreateObject("InstallShield.GUID")

创建powershell批处理文件以从现有的永久性网络共享创建磁盘标签

我正在尝试使用windows powershell创建一个批处理文件,该文件将查找现有的持久性网络共享,并采用它们的路径创建名称,非常类似于自定义磁盘标签 我是一个新手,但知道起点可以基于以下内容,尽管这需要进一步查找现有共享,在stratup上运行,并在每次添加新共享时可执行 谢谢 $Net = New-Object -ComObject WScript.Network $Rename = New-Object -ComObject Shell.Application #### #

Powershell 获取内容的替代方案

我目前有以下代码行 (Get-Content 'file.txt') | ForEach-Object {$_ -replace '"', ''} | Set-Content 'file.txt' 这在测试时起作用,但现在我尝试在真实数据文件(13 GB)上使用它,使用Get Content的过程会导致Powershell消耗大量RAM,最终会消耗机器上的所有可用RAM 有没有更好的方法可以在没有相同开销的情况下实现相同的结果 似乎我在做与最佳实践相反的事情,但不确定还有什么比上述方法

Powershell -包含返回false而不是true

我试过这个 $arrColors=import csv-header colors.txt $arrColors-包含“蓝色” 其中colors.txt包含 blue red green 结果为false而不是true为什么?获取CSV对象的颜色属性: $arrColors = (import-csv colors.txt).color $arrColors -contains "blue" 获取CSV对象上的color属性: $arrColors = (import-csv colors

在powershell中写入输出

我使用get childitem获取文件名、位置和大小 $agh=get childitem E:\Documents \-recurse |%{Write output$\.FullName$\.length} 我得到如下输出 E:\Documents\Application Recovery-要查找的内容。pptx 55956 E:\Documents\变更所需时间的估算。xlsx 10509 我在一行中得到文件名,在新行中得到大小 我期待输出如下 文件名位置大小 应用程序修正-查找内容。p

Powershell脚本,用于搜索广告上有限数量用户的属性

我正在尝试运行一个有限用户数的PS脚本。因为我有太多的广告用户,这需要很长时间 有人知道如何在有限数量的用户上运行脚本吗?例如:200将用户存储在一个变量中,根据需要循环: $user = Get-ADUser -Filter "*" $start = 0; for ($i = $start; $i -lt $start + 200; $i++) { $user[$i] # run your code here } 现在增加$start并重新开始。您可以限制使用-ResultSetSiz

TFSBuild Powershell将脚本参数转换为字符串的步骤。如何避免这种情况?

我已在Powershell构建步骤中配置了以下参数:-protocol:http-portsToOpen 951295139512 TFSBuild运行整个脚本后,将抛出以下错误: “System.Int32[]”。错误:“无法转换 “951295139515”到“System.Int32” 问题是TFSBuild正在运行带有引号的脚本SOR951295139515(即'951295139515') 有什么解决方案吗?一种可能的解决方法是从命令生成步骤运行powershell.exe,但我想知道

Powershell 请求帮助以分析字符串

我正在使用Invoke WebRequest获取HtmlWebResponseObject对象。当描述字段与特定字符串(在本例中为“server1”)匹配时,我希望获取ID字段的值。Invoke WebRequest返回了数百个结果(因此字符串非常长)。给定下面的示例,如何提取ID { “地位”:200, “数据”:[ { “nextRecipient”:0, “Clearnet”:是的, “lastSentNotificationOn”:0, “netscanVersion”:“0”, “su

Powershell新项命令

我添加了newitem命令,但它不喜欢我的语法。请帮助: $Dir = get-childitem -path "\\ahs-bind01\ftptest01\CRAR" -recurse $Source = $Dir | where {$_.extension -eq ".txt"} #Declare the file path and sheet name $file = "C:\Users\us6205\Desktop\DatabaseNameConfigs\Test\CareMov

为什么Powershell会被执行2到4次?

我正在为批处理制作API。它的一个功能是colortext,它使用PowerShell(如果机器上不支持PowerShell,则使用findstr)来完成工作。(它只需转换给定的批处理颜色,如3C,将其转换为PowerShell友好的名称,如DarkCyan和Red,并使用更多内容打印以颜色给出的文本。) 但是,当我尝试将前台设置为F(White)时,出于某种原因,它会尝试执行2到4次(取决于是否启用了延迟扩展) 如果假定的%fcn%和%bcn%从未应用,则在上次运行/尝试显示相同内容时,它有时

Google Drive Api,使用powershell下载文件

我可以从GoogleDriveAPI下载一个文件,但是,它只适用于文本文件 如何下载其他类型的文件 示例:word文件已下载,但当我打开它时 “很抱歉,我们无法打开文件,因为我们发现其内容有问题” 这是代码。多谢各位 function getfile($uri){ $results = Invoke-RestMethod ` -Method GET ` -Uri $uri ` -Headers @{Authorization = Get-Token} `

Powershell Xml属性转换为具体数据类型

我有下面这个简单的xml文件 <?xml version="1.0" encoding="utf-8"?> <MyRoot MyGuid="99999999-9999-9999-9999-999999999999" > </MyRoot> 第三行输出: unTypeVariable = '@{MyGuid=99999999-9999-9999-9999-999999999999}' 在最后一行,我一直在下面得到一个强制转换异常。我明白,但我不知道如

Powershell 如何使用7Zip按月压缩文件

我有下面的PowerShell脚本,它将所有文件压缩到一个zip文件中,当前月份为zip文件名(2017年6月7日) 如何修改脚本,使其能够压缩每个月分别创建的所有文件?例如,aaa1、aaa2、aaa3将压缩到2016年8月7日,bbb1、bbb2、bbb3将压缩到2017年2月7日,依此类推,然后删除存档文件 8/29/2016 11:09 PM 88583 aaa1.log 8/30/2016 6:06 AM 88590 aaa2.log 8/30

Powershell 压缩Azure Blob存储中已存在的图像

我已经接管了一个项目,并试图优化一些已经到位的东西。当前最大的问题之一是所提供的图像是次优的。 存储中有80000多个图像,我一直在寻找一个脚本,它可以循环遍历所有图像,压缩图像并覆盖旧文件 我必须承认,我对powershell完全没有兴趣 这就是我发现的: 虽然此脚本成功地优化了图像,但它没有将图像放回正确的位置。它将其放入blob容器的根中 我已经报告了这个问题,但没有回应 有没有人能帮我,这样当它重新保存图像时,它就可以去它应该去的地方 剧本: <# .SYNOPSIS

使用PowerShell递归查找文件扩展名计数

正在查找PowerShell代码段,该代码段将递归列出文件夹中的所有文件扩展名以及计数 /abc/(1).cfc /abc/john/(265).cfm, (1).html /abc/john/js/(25).js /abc/john/css/(6).css 您可以按多个条件进行分组: Get-ChildItem 'C:\projects\newfolder\edit' -Recurse | Where-Object { -not $_.PSIsContainer } | Gro

除了VisualStudio使用powershell启动的chrome进程外,我如何杀死所有chrome进程?

有时我在VisualStudio调试器中运行一个或多个web服务。它们都有一个chrome浏览器,打开时带有自定义配置文件。如果关闭这些浏览器窗口,VisualStudio将停止调试。然后我会运行“常规”chrome标签 有时我想杀死所有的chrome进程,除了那些由VisualStudio调试器控制的进程。有没有办法过滤它们?Visual Studio启动的Chrome进程在%USER\u PROFILE%\AppData\Local\Microsoft\VisualStudio中有一个自定义

PowerShell使用get.aduser命令将SID添加到csv文件中

我有一个.csv文件,看起来像这样: "UserName" , "GroupName" "t123","G-Q-TAT" "t124","G-Q-ABC" "t234","G-Q-ABD" "UserName" , "GroupName" , "SID" "t123","G-Q-TAT","S-1-5-21-2079806555-1600217444-939750222-15100" "t124","G-Q-ABC","S-1-5-21-2079806555-1600217444-93975

Powershell 新员工脚本问题

我编写了一个脚本,它从CSV文件中获取信息,并根据列中的变量创建一个AD帐户和一个MSOL帐户。该脚本只与我测试的一个用户一起工作 $AccountList = import-csv "C:\File\path\input.csv" ForEach ($Person in $AccountList) { $Accountname = $firstname.Trim().ToLower() + "." + $lastname.Trim().ToLower() $Firstname

Powershell事件日志报告

我正在编写一个PS脚本来收集某些事件ID,并每隔一个小时左右将它们吐回。我这样做是因为我想把它发到电子邮件里,以便阅读 我现在的问题是脚本将运行到某个点并挂起。如果我删除日期过滤器,它运行良好。只要我通过变量或硬编码重新添加它们,它就会再次挂起。然而,我需要日期过滤器,因为否则,当我寻找每小时的数据块时,我会得到所有信息 寻找建议,因为我想使用一次性或修改变量!我也希望在其他方面的报道中使用衍生产品 $filedate = (get-date).ToString("MM_dd_yy-hh_mm"

单击';远程桌面连接';使用Powershell的横幅

我正在尝试使用powershell自动化下面的步骤。我能够执行步骤1 步骤1:使用用户凭据打开RDP连接。 第二步:点击确定窗口横幅。 我无法在powershell中执行步骤2。欢迎提出任何意见或建议 我使用以下代码完成此操作: 步骤#1如以下URL所述完成: 步骤2:使用下面的代码完成 [system.Reflection.Assembly]::LoadWithPartialName("####TITLE OF THE WINDOW####") | out-null # Set the ex

Powershell 将CSV中的测试字符串与

我有一个CSV文件,其中包含first.last name格式的用户别名 我试图一个接一个地提取这些别名,并将它们与我们的域合并,以创建它们的电子邮件地址 这是我的密码: $CSV = Import-CSV "\\this\is\thepath\to\the\csv.csv" $domain = "@domain.co.uk" $CSV.Alias | ForEach-Object ( Write-Host ($CSV.Alias + $domain) ) 我需要的输出是: John

来自文件的powershell电子邮件正文

我正在尝试使用powershell将文本文件的内容读入字符串变量,以便使用它(通过smtp)发送电子邮件 使用Get Content将文件内容读入变量没有问题: $body = Get-Content 'C:\somewhere\some-file.html' 问题是 Send-MailMessage -To [recipient] -From [sender] -Subject [subject] -Body $body -SmtpServer [ip address] 与消息一起失败 无

获取用户';使用powershell上的skype online connector设置skype状态

我正在编写一个小脚本,用于输出用户当前Skype的业务状态 可用,忙碌,请勿打扰。等等 我已经做了一些实验,可以输出很多信息。脚本工作正常,但我找不到状态条目 这是我目前的代码: $userCredential = Get-Credential $sfbSession = New-CsOnlineSession -Credential $userCredential Import-Module SkypeOnlineConnector Import-PSSession $sfbSession

当脚本设置为“以管理员身份运行”时,是否有方法在powershell中映射本地驱动器?

这是我的powershell脚本的一部分,我必须将本地文件夹映射到S:驱动器。当我的脚本“以管理员身份运行”时,我无法映射新的PSDrive。如果我这样做,它在“我的电脑”上不可见。我已经运行了Get-PSDrive,它显示它在“我的电脑”上不可见 我在PS中尝试过网络使用。 我试过新的地图 New-SMBmapping -localpath 'S:' -remotepath '\\$comName\pos' -persistent $true 我的脚本需要在脚本的其余部分作为管理员运行。 目

完成后关闭PowerShell脚本打开的WinSCP窗口

我编写了一个脚本,它使用WinSCP在文件夹上循环并转换文件 WinSCP.exe/keygen$filePath/output=$filePathdest 该脚本可以工作,但会打开几个WinSCP窗口,说明它完成了任务的内容。我希望抑制此操作,或在完成后强制PowerShell关闭其所有子级。这可能吗?使用 winscp.com是一个控制台应用程序,其功能与winscp.exe相同。作为控制台应用程序,它从PowerShell继承控制台,而不打开自己的控制台。完成后,它也不会等待按键。在控制

Powershell 如何批量下载文件并从名称列表中重命名它们

我正在寻找一种方法从网站列表下载mp4文件,并根据名称列表重命名它们,因为我不能使用URL,它们太长太复杂了 有没有办法下载这些文件并根据我的单独列表给它们命名 $Videos= get-content "C:\temp\VidList.txt" $VideoNames = Get-Content "C:\temp\NameList.txt" foreach ($site in $Videos){ $uri= $site $file='F:\CEH Saved videos\test\te

Powershell 用于比较一个文件的文件大小的脚本

我试图写一个脚本,告诉我如果一个文件大小大于一个数字,下面是我写的脚本,但它一直显示1999,即使我知道文件大小大于这个数字 @echo off setlocal enabledelayedexpansion for /f "delims=" %%a in (' powershell -c "(Get-ChildItem -Recurse "C:\XSTOREDB\xstore_data.mdf" | Measure-Object -Property Length -Sum).Sum" ')

如何逐个比较阵列与powershell

如何逐个比较阵列与powershell 我试过使用eq/match/like/contains/in。但仍然不能很好地工作。非常感谢 输入【数组】: $array=@('OK'、'OK'、'OK'、'OK') $array1=@('OK'、'failed'、'OK'、'OK') $array2=@(“确定”) 预期产出: $Array比较阵列2输出 $Array1比较Array2输出False如果两个数组的元素顺序(不仅仅是值)很重要(即两个数组的元素数应该相同,元素值必须相同,元素的显示顺序应

Powershell 重定向StandardError$日志文件并附加?

我有一个PowerShell脚本,在其中我使用启动进程并将输出重定向到日志文件。cmd在for循环中,我希望每次运行时都能追加输出。现在,它每次运行时都会清除日志文件。有没有重定向和附加的方法 Start-Process $cmd -ArgumentList $cmdArgs -RedirectStandardError $logFile -Wait -NoNewWindow 注意:要同步执行控制台应用程序,请直接调用它们c:\path\To\some.exe。。。或&$exePath…,不要

Powershell 如何连接字符串并转换为大写

首先对不起我的英语 我不使用powershell,但我必须编写一个脚本来生成一些SSR报告。我需要连接两个变量并将结果转换为大写,下面的代码工作正常,但我不知道如何将结果转换为大写并将其放入其他变量。非常感谢 $direxcel = "C:\Users\Administrador\Documents\SSRS" $rdl = "Sin Título" write-host ${direxcel}\$rdl.xls 要连接字符串,可以使用多个选项 $a = "first string" $b =

在PowerShell中的静态类上设置静态属性

我有一个类,其中类上有属性,但我只希望能够在内部设置它们的值,但允许对其使用公共get访问器。因为在C#中这样的类中没有PS等价物: 公共字符串属性名称{ 得到; 私人设置; } 我研究了在我的类上实现以下变通方法,以便“私有”成员通过属性的公共访问器保持隐藏状态: class-MyClass{ 隐藏的[字符串]$\u属性名称 MyClass($propertyValue){ $this.\u PropertyName=$PropertyValue $this | Add Member-Scr

将两个PSCustomObjects合并为一个-PowerShell

我需要PowerShell中的帮助以将两个输出或两个PSCustomObjects合并为一个。 比如说, $services = Get-Service | Select Name, Starttype,Status $processes = Get-Process | Select ID 我需要带有表格标题的输出 名称、开始类型、状态、ID 我已经尝试创建CSV并加入它们,但问题是当服务的整个输出结束时,进程ID开始。我需要一个平行的 第二,我尝试创建PSCustomObjects,但没有成

PowerShell-为什么在这行代码中使用数组?

我有以下代码在多个文件中查找字符串,我找到了其中的一部分 我想我不明白的语法是最后一行的这一部分: @{n='SearchWord';e={$sw}} 我会解释我认为我理解的内容,然后提问 @我想这意味着它是一个数组 n=是“名称”的缩写 冒号(;)用于分隔列的名称和填充列的表达式 e=是表达式的简写 {$sw}-括号是封装表达式所必需的 问题: 为什么使用数组填充此列 为什么必须使用表达式而不仅仅是变量“$sw” 谢谢你的帮助 它不是数组,而是哈希表。在引用的代码中,使用了a。通常,计算属性

Powershell 递归替换win10上文件夹和文件中的非标准字符

我有许多文件夹,其中包含我从同事那里获得的文件的子文件夹,这些文件具有特殊甚至隐藏的字符,如: 非标准字符:{µ,市, ', &, 「看不见的字符,Ü,é,…} 我正在寻找一个脚本或windows工具,将重命名所有子文件夹 通过根据列表X中的字符将任何非标准字符替换为标准字符,一次完成文件的创建。另外,如果工具选中列表R,并使用替换规则(如果已定义),则更好。如果没有,则应将非标准字符替换为“\u1” 感谢对工具或脚本的任何提示。我会解析文件/目录名,如果每个字符不在ascii范围内,请用任意字