powershell脚本格式表输出中的颜色字

是否可以使用格式表仅为powershell输出的某些字(非完整行)上色。例如,此脚本递归扫描文件夹中的字符串,然后使用format table输出结果 dir -r -i *.* | Select-String $args[0] | format-table -Property @{label="Line #"; Expression={$_.LineNumber}; width=6}, Path, Line -wrap 如果能够将我们正在搜索的单词格式化为特定颜色,这样您就可以准确地看到它在

如何删除PowerShell要求脚本和可执行文件前面加“quot;”的要求\&引用;?

如何删除脚本和可执行文件前面加“\”的PowerShell要求 输入“a.exe”而不是“\a.exe”时显示的PowerShell警告消息: 在路径(环境变量)中添加通常放置脚本和exe文件的路径。这是一项安全功能,因此您可以运行您认为正在运行的脚本。这就是为什么与cmd不同,PATH中没有(当前目录),而必须执行\my.exe等操作 如果您不想这样做并破坏此预防措施,请将添加到您的路径: $env:PATH =$env:PATH+";." 重命名脚本文件,使其以“.”开头 请参见按如下方式

使PowerShell脚本在全局范围内运行cmdlet

我编写了以下PowerShell脚本: function Reload-Module ([string]$moduleName) { $module = Get-Module $moduleName Remove-Module $moduleName -ErrorAction SilentlyContinue Import-Module $module } 此脚本的唯一问题是导入模块仅在该脚本的作用域内应用-它不在全局作用域中导入模块。有没有办法让脚本导入一个模块,以便

来自函数结果的Powershell设置变量

我不确定我到底做错了什么,但下面的代码返回以下错误消息: 术语“identityTest”不能识别为cmdlet、函数、脚本文件或可操作程序的名称。请检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试 以下是我的示例/测试代码: #Bunch of Global vars $UrlToUse = identityTest function identityTest { $internalMatch = ".*inbound" $externalMatch = ".*

将多个值传递给单个PowerShell脚本参数

我有一个脚本,用$args向其传递服务器名称 这样,我就可以使用foreach对这个(这些)服务器进行操作: .\script.ps1 host1 host2 host3 foreach ($i in $args) { Do-Stuff $i } 我想添加一个名为vlan的命名可选参数。我试过: Param( [string]$vlan ) foreach ($i in $args) { Write-Host $i } Write-Host $vlan 如果您传递

Powershell 如何在TeamCity的概览页面上显示msbuild错误

我想将PowerShell与Psake和TeamCity一起使用来配置我的CI。我以前使用标准的Msbuild运行程序,但现在我为构建解决方案编写了自己的脚本,但当Msbuild失败时,我遇到了问题 当我使用Msbuild runner时,生成失败,然后在概览页面上出现新的“生成错误”部分,我有来自Msbuild的详细信息。但当我编写自定义脚本时,我只得到了一个错误“processexittedwithcode1”,我不知道如何“创建”这个构建错误部分。你知道怎么做吗?我知道我可以使用,但我无法

Powershell使用通配符将变量传递到过滤器

我在这一点上有点困难,我知道这可能是一个简单的语法问题。我不知道如何将这个变量传递到代码块中并正确地确认它 $user = "Some.Person" 这是我所期望的 get-aduser -filter {(Samaccountname -eq $user)} 这是不可能的 get-aduser -filter {(userprincipalname -like $user*)} 尝试了“$user*”,“$user*”以及其他一些变体,但均无效 最终的结果将是使用如下,因为我们有广告帐

Powershell 如何添加Visual Studio 2013脚手架中使用的新脚手架?

是否有方法添加新的脚手架或覆盖新的Visual Studio 2013脚手架中使用的脚手架功能 我能在互联网上找到的唯一文档是如何使用CodeTemplates文件夹覆盖T4模板。添加…>新脚手架项目。。。在VisualStudio2013中,它似乎已被卷入一个库(Microsoft.AspNet.Scaffolding.Mvc.5.0.dll),并在GAC中注册或作为VS扩展 我想覆盖调用T4模板的机制,以便创建不同的文件并增强功能。我的具体需要是构建旧的CreateOrEdit.cshtm

使用powershell从文件名中删除随机字符串

我有一系列包含如下字符串的文件 (AEDOGRES) 一个示例文件名是 "Test 1(DOWKFUET).png" 我想使用powershell命令除去括号中的整个字符串,以获得类似的结果 "Test 1.png" 我希望能够使用这样的命令 dir | rename-item –NewName { $_.name –replace “(*)“,”” } 然而,这对我不起作用。非常感谢您的帮助 我正在运行powershell 3.0,正则表达式和通配符匹配有不同的规则。在正则表达

在PowerShell中作为工作流运行时,Where Object子句失败

我正在尝试使用Get-NetRoute cmdlet从所有AD计算机提取静态路由。当在工作流外部运行时,它工作得很好,但一旦我尝试在工作流中运行相同的代码,它就会失败,出现以下异常: System.Management.Automation.ParameterBindingException: Parameter set cannot be resolved using the specified named parameters. 我可以追溯到Where对象“?”过滤器。注释代码行中的“{}

如何使用powershell安装Azure cmdlet

我正在尝试使用powershell而不是Microsoft提供的向导安装Azure cmdlet 这是因为我的脚本(包含Azure cmdlet)将在Azure中的新虚拟机中使用,如果我的脚本尝试运行Azure的某些cmdlet,肯定会失败 我希望将powershell cmdlet的安装行放在脚本的顶部,以便安装整个cmdlet,然后,我的脚本可以毫无问题地执行其他cmdlet 有人知道吗 谢谢 如果虚拟机中有Web平台安装程序,则可以使用我在PowerShell杂志上发布的脚本 或者从获取

想要powershell询问计算机名吗

我正在使用powershell在映像后重命名计算机,希望脚本向我询问新的计算机名,这样我就不必每次都编辑脚本。以下是我所拥有的: Rename-Computer -NewName ComputerNameHere -LocalCredential Administrator 使用cmdlet: $name = Read-Host 'New Computer Name' Rename-Computer -NewName $name -LocalCredential Administrator

Powershell 用于重命名和移动文件的Windows脚本

我的任务是使用Windows批处理或PowerShell脚本创建存档进程。我在StackExchange上看到了一些例子,但没有什么能完全满足我的需要,我遇到了一些问题 背景如下: 我有3个文件夹 传入 档案馆 外向的 我们的主系统将xml文件放入传入目录,我必须创建一个脚本,每5分钟运行一次,并执行以下操作 遍历传入文件夹中的所有xml文件 将它们重命名为OriginalFilename.ready\u to\u存档 将所有就绪\u到\u存档\u文件复制到存档目录中 进入归档目录后,将其重

制作powershell';s参数集使用FileInfo和FileInfo[]

我有以下代码: Function SCCE { [CmdletBinding()] Param( [Parameter(Position=0, Mandatory=$True, ValueFromPipeLine=$True,ParameterSetName="Files")] [System.IO.FileInfo[]]$sourceFiles, [Parameter(Position=0, Mandatory=$True, ValueFromPipeLine=$Tru

Powershell 我可以从Windows 8.1中删除Windows应用商店吗?

我的任务是从一台全新的宏碁笔记本电脑上卸下臃肿的软件。我(和笔记本电脑用户)对bloatware的定义包括所有预安装的应用程序和Winstore本身。你可能不同意,但那不是重点 我使用Winstore的ID尝试了remove-appxpackagePowershell命令,但出现了一个错误,其中重要的部分是 此应用是Windows的一部分,无法按每个用户卸载。一 管理员可以尝试使用打开或关闭Windows功能从计算机中删除应用。但是,可能无法卸载该应用程序 我在Windows功能菜单中没有看到任

Powershell 命令在ISE中运行,但在控制台中不作为ps1运行

我找到了许多线索,仔细研究了一遍,但没有一条真正解决了我的问题。我尽量简短 New-PSDrive –Name "G" –PSProvider FileSystem –Root "\\dom\dfs\dom-loc-Share" –Persist 如果我从ISE运行它,它工作得非常好。 当我将它复制粘贴到控制台时,它工作正常。 如果我尝试在控制台中运行ps1,它将不起作用 我重新启动了ISE 我查过了,都在单线程公寓里运行 执行策略不受限制 我都以管理员的身份运行 你能帮我一下吗?你是如何

为PowerShell中的快捷方式定义快捷键

我想创建制作快捷方式的PowerShell脚本,但找不到为创建的快捷方式定义快捷键的函数:。我的意思是,当快捷键的属性打开时,快捷键有一个输入字段,在PowerShell中是否有任何函数来定义它?我刚刚找到了解决方案: 功能是热键。类似这样的内容:$shortcut.HotKey=“CTRL+1”

PowerShell/任务计划程序/任务存在检查

在使用schtasks命令删除任务计划程序中的任务之前,如何使用PowerShell检查目标任务是否已存在 我的问题与你的不同,索达维洛解决了我的问题!谢谢。您可以检查它是否在此列表中: Get-ScheduledTask | Select -ExpandProperty TaskName 可能重复的

Powershell 如何仅从事件日志中检索事件的消息?

根据示例,使用: Get-EventLog system -newest 5 -After 09202016 -Message "Something", 我认为“某物”可能是我所寻找的信息类型 虽然我没有找到任何匹配项: Get-EventLog : No matches found At line:1 char:13 + Get-EventLog <<<< system -newest 5 -After 09202016 -Message The + Ca

使用Powershell从windows注册表值设置的文件夹中删除文件

很抱歉,如果以前有人回答过这个问题,我已经不知疲倦地搜索过了,但找不到确切的答案。我是Mac用户,以前没有进入过Windows注册表 我正在创建一个音频插件安装程序,并有一个单独的演示版本的标题。在演示版本的注册表中,我有一个条目 Demo=1 并且还为插件的各个组件设置了路径,这些组件是可选安装的,它们存储在注册表中,因为用户可以根据其主机软件将它们安装到不同的目录中 VST3=C:\Somepath\VST3 VST32=C\AnotherPath\VSTPlugins VST64=C\A

Powershell PSExec和安全密码

我目前正在使用PSexec,其凭证存储在CSV中,因此我可以迭代每一行。这方面的一个基本例子是 $computerlist = Import-Csv C:\XXXXX\computerlist.csv foreach( $user in $computerlist ) { $results = psexec ( "\\" + $user.ip ) -u ( $user.ip + "\" + $user.username ) -p $user.password query sessio

Powershell 将CSV下载到包含当前时间戳的文件中

我正在尝试从API下载CSVfile,我想将它保存在一个带有时间戳的文件夹中,以便将它与文件夹中以前的每个文件区分开来 下面的脚本是我要做的,但我遇到了一个块,文件似乎没有保存。剧本有什么根本性的问题吗 $client = new-object System.Net.WebClient $client.DownloadFile("https://www.url.com/csvdownload" ((Get-Date)).ToString('MM-dd-yyyy_hh-mm-ss')) expor

Powershell 在Scriptblock中使用Begin、Process、End

是否可以在脚本块中使用高级功能功能Begin、Process、End 例如,我有以下脚本块: $startStopService = { Param( [bool] $startService) if ($startService){ ... Start-Service "My-Service" } else { Stop-Service "My-Service" } } 由于我希望能够控制scriptblock的详细输出,因此我

PowerShell脚本以替换逗号';s在CSV文件中,没有任何内容

下面是我在现有CSV文件中替换逗号的脚本。使用的分隔符是|脚本运行得非常好,但需要很长时间才能替换。我们是否有一种更快的方法来将逗号的所有实例替换为零 $inform = Get-Content C:\product.csv $inform | % { $info = $_.ToString().Replace(",","") $info | Out-file C:

Powershell 菜单和子菜单

主菜单: 1 Delete 2 Create 3 Modify 4 Remove X Exit 子菜单1 $su1 = Read-Host " Please select an option 1 Delete a file 2 Delete a folder 3 Delete another file 4 Delete another folder 5 Back to main menu " 如何选择选项5并将其返回主菜单?您可以通过开关为每个菜单创建函数,以便继续调用新菜单 function

Powershell 尝试编写一个函数,该函数接受带有参数和参数列表的scriptblock,编辑该scriptblock,然后运行invoke命令

我正在编辑一个函数,它将直接在VM上调用命令。我经常遇到的问题是,如果有人将函数声明作为脚本块传递,则调用create时会出现错误,因为params()不在脚本块的顶部 试图弄清楚如何仍然先设置fulllanguage,然后使用params执行函数 function Invoke-DirectOnVM { [CmdletBinding()] Param ( [Parameter(Mandatory = $true)] [CloudEngine.Configurat

按组织单位获取机器正常运行时间的Powershell脚本

我已经找到了一些脚本,但是没有任何有效的,并且尝试将它们结合起来,失败得很惨。我找不到任何东西可以解释如何使我找到的那些做我想要的,所以这里是我的尝试,但它不工作,所以我想知道是否有人可以帮助我让它工作?我删除了标识域信息 $wmi = Get-WmiObject -ComputerName $pc -Class Win32_OperatingSystem 因此,您有几个步骤: 获取机器列表 $list = Get-ADComputer -Filter 'Name -like "*"'

通过PowerShell在远程服务器上运行批处理脚本

我需要从客户端(与服务器相同的域)连接到一些远程服务器连接后,我需要运行批处理文件: 我使用以下代码完成了此操作: $Username = 'USER' $Password = 'PASSWORD' $pass = ConvertTo-SecureString -AsPlainText $Password -Force $Cred = New-Object System.Management.Automation.PSCredential -ArgumentList $Username,$pas

Powershell 获取每个子文件夹的文件列表|每个文件列表放在txt文件中,该文件放在它描述和命名的文件夹中,如此文件夹 解决了的

对于包含图像的每个子文件夹*。jpg需要创建图像名称的文本文件列表(不带扩展名)。文本文件的名称应与其目录相同 例如,您有相同的目录方案: C:\scriptfolder \-filelist_script.ps1的父文件夹 C:\scriptfolder\subfolder1 \-包含一些jpg文件 C:\scriptfolder\subfolder2 \-包含一些jpg文件 C:\scriptfolder\subfolderN \-包含一些jpg文件 脚本工作的结果将是: C:\script

如何在Powershell中存储MFA凭据

在基本身份验证下,您过去可以在变量中存储凭据 $cred = Get-Credential 现在我们使用的是现代身份验证,我们的多因素身份验证是Duo 如何将MFA的凭据存储到变量中,以便将其插入脚本 范例 $mfacred = *whateverthecodeis* Connect-MsolService -Credential $mfacred Connect-AzureAD -Credential $mfacred 编辑 我不想绕过MFA,我想提示输入它,并以这样的方式存储凭据和令牌,

Powershell 针对动态变量的If语句

我正在尝试做类似以下的事情 New-Variable -Name "state_$name" -Value "True" if ("state_$name" -eq "True") { Write-Host "Pass" } else { Write-Host "Fail" } 我尝试了许多不同的方法,但它并没有完全按照我希望的方式工作。我需要编写if语句来解释动态变量,因为这些值将在foreach循环中更改 我在上面提供了一个简单的例子来证明概念。替换 if ("state_

PowerShell访问按枚举逐项列出的多维数组

我正在与PowerShell进行斗争。我想访问按枚举逐项列出的数据结构。 执行下面的演示代码时,我收到一条错误消息,我不明白: 索引操作失败;数组索引的计算结果为空 任何帮助都将不胜感激 谢谢 Powershell代码: Enum X { X1 X2 } Enum Y { Y1 Y2 } $map = @{ [X]::X1=@{ [Y]::Y1="Hello World" }; [X]::X2=@{ [Y]::Y1="

Powershell 读取文件元数据时发生DateTime错误

我正在尝试编写一些PowerShell代码来对照片和其他媒体文件进行排序。文件的修改/创建日期并不总是准确的,因此我正在读取文件的元数据。我已成功完成并提取了创建日期。但我无法让PowerShell将字符串识别为日期 我想要的是能够以这种方式将日期重新排序为年-月日期格式: $metaDate.ToString("yyyy-MM-dd") 但我不相信metaDate是日期类型,它是一个字符串 因此,我尝试使用以下代码将字符串转换为日期: $date = [datetime]::ParseExa

PSModulePath PowerShell启动前的变量要求

WPS=Windows PowerShell PSC=PowerShell核心 开始时,我有三(3)条路径作为系统环境变量PSModulePath的一部分 %ProgramFiles%\WindowsPowerShell\Modules %SystemRoot%\system32\WindowsPowerShell\v1.0\Modules C:\Program Files (x86)\Microsoft SQL Server\140\Tools\PowerShell\Modules\ 我假设

在PowerShell中发送带有附件的电子邮件

我想在此电子邮件中发送CSV文件。 我可以发送电子邮件没有问题,但我尝试了很多发送附件与它,但在最后的电子邮件发送没有附件 function sendmail($Body) { $Smtp = New-Object System.Net.Mail.SmtpClient $MailMessage = New-Object System.Net.Mail.MailMessage $Smtp.Host = "smtp-server" $MailMessage.From

如何更改PowerShell提示符以仅显示父目录和当前目录?

我想缩短我的PowerShell提示符,以便它只显示父目录和当前目录。例如,如果pwd是 C:\Users\ndunn\OneDrive\Documents\Webucator\ClassFiles\python-basics\Demos 我希望提示是: PS ..\python-basics\Demos> 我可以通过更改配置文件中的prompt()函数将其设置为PS..\Demos>: 通过在PowerShell中运行$Profile查找配置文件的位置 打开(或创建并打开)配置文件

如何使用Powershell打开二进制管道

据我所知,Powershell无法重定向输入流。相反,必须使用Get Content将结果传输到目标程序。但这似乎创建了文本流 我尝试通过管道将二进制数据传输到plink: Get-Content client.zip | & 'C:\Program Files (x86)\PuTTY\plink.exe' unix nop 目标系统“unix”是一个Debian,在authorized\u key文件中有一个固定命令 这是我尝试传输的文件的第一个字节: 00000000 50 4b

Powershell 在正文中为每个邮件发送邮件消息

我有一个脚本,它在一个变量中返回几个用户名。我现在需要一封邮件,每个用户都有一个特定的文本(在一封邮件中)。 我得到了用户名“abcdef,popefp,nvmwmn” 假设我需要文本: 你好,abcdef 你好,波普 你好,nvmwmn 如何用代码创建foreach?我在迷路的地方写了$help Get-ADObject -SearchBase "OU=Mailbox,OU=Global,OU=Group,OU=1,DC=test,DC=it,DC=nl" -Filt

Powershell 如何在没有PID的情况下终止子进程

如何使用Powershell杀死子进程/windows 屏幕截图显示,我有一个skype对话窗口和3个windows资源管理器,它们没有PID。有没有办法把他们都杀了? 谢谢 一个进程可以绘制多个窗口。如果终止进程,它将停止绘制所有窗口(它们将关闭)。Windows资源管理器正在绘制一个特殊的“窗口”:任务栏。如果您关闭资源管理器,您的任务栏将消失,直到windows重新启动资源管理器。如果您希望一个进程停止绘制一个窗口,但继续绘制其他窗口,那么最好的方法就是询问。您可以通过向要关闭的窗口发送W

Powershell:选择字符串&;正则表达式

关于我为什么首先使用正则表达式的一些背景故事: 我正在为多个客户端编写一个脚本,该脚本将集成到我们的每两周维护中。脚本设置为将计划任务的日期更改为脚本运行的日期,但不调整时间 现在,这本身很容易,但是我们有多个客户端,任务将在多个不同的时间运行,我不想为每个客户端手动更新每个脚本,因为如果我们更新脚本,我们将不得不为每个客户端手动更新它 所以我求助于selectstring和Regex来解决这个问题 关于这个问题: 我正在运行下面的代码 $test = Get-ScheduledTaskInfo

使用Powershell对CSV目录中具有标题的列求和

我在一个目录中有一批.csv文件,每个目录中都有一列需要求和的值。.csv文件都有相同的标题,如ID、大小、文件路径等,“大小”是我需要求和的列。我找到了一个方便的一行程序来逐个执行(如下所示),但当我尝试使用通配符运算符在每个CSV中循环时,我不断收到以下错误消息:“度量对象:输入对象‘大小’不是数字。”命令执行时,只给出所有行的总计数,而不是总大小 一个接一个的有效版本是: Get Content“file.csv”| ConvertFrom csv | Measure Object“SIZ

所有子文件夹中每个文件中的Powershell更新字符串

我有一组配置文件存储在目录中的每个子文件夹中。这些配置文件仅包含格式为XXX\u YYYYMMDD的单个字符串,其中XXX是一个数字,例如006、007等,因此示例字符串为006\u 20150101。我希望powershell脚本在每个配置文件中用新的编号替换XXX编号。我正在使用下面的脚本来实现这一点,它工作得很好。但是,问题是它在字符串的末尾添加了一个新行字符(ENTER),这是我不想要的。有办法解决这个问题吗 $sourceDir = "C:\Users\001" $

Powershell 获取要合并到输出的WmiObject

我正在执行下面的脚本以获取Skype for business server的服务器修补程序版本 我需要作为服务器补丁名,版本和计算机名输出 $x = Get-Content "E:\temp\servers.txt" foreach ($y in $x) { Invoke-Command -ComputerName $y -scriptblock {Get-WmiObject -query ‘select name, version from win32_product

Powershell 使用Get Job测试连接,但完全不同

这是我在这里的第一篇文章,我尝试自己在PS上编写脚本,现在我的目标是编写脚本,检查计算机是否在网络上联机,例如:测试连接192.168.0.1、2、3等。在循环中逐个执行此操作需要一些时间。如果一些计算机脱机,我在该网站上找到了一些可使用的教程-AsJob param,但我真的不确定它是怎么工作的。我的意思是我想把每台检查过的电脑输出到excel,所以我需要if操作员。例如: 如果(作业1已完成成功(计算机ping)){ 做smth} 我需要从Job boolean(真/假)中获得输出,但要逐个

powershell.net连接器sap功能模块

我尝试接收一个带有powershell脚本的“订单账单”,该脚本正在使用.net connector for sap。我用vbs编写了同样的sript,但我无法将其转换为powershell符号。我想将以下部分转换为powershell: 'load SAP function modules Set fuba = sap.Add("Z_GET_ARCHIVE") 'fill Import-Params fuba.Exports("SAP_OBJECT"

更改Powershell 5中的PSModulePath

我已使用以下命令永久更改PSModulePath: [Environment]::SetEnvironmentVariable('PSModulePath', "ABC", "Machine") 当我调用下面的函数时(它返回“ABC”): 但在我运行的任何Powershell会话中: $env:PSModulePath 我得到: C:\Users\myname\Documents\WindowsPowerShell\Modules;ABC 这条路从哪

';域用户';使用PowerShell脚本在Active Directory上报告时未显示组

下面的代码查询AD以获取有关用户帐户的信息,并希望导出一个excel文件,其中包含名称、用户名、AccountEnabled(是/否)、部门、说明、LastLogonDate以及AD中每个用户拥有的组。目前,该脚本按预期工作,除了在用户组下,它没有在所有用户组中都包含的任何用户上列出“域用户”。我正在试图确定为什么以及如何修复 Import-Module ActiveDirectory $Report = @() #Collect all users $Users = Get-ADUser -

Powershell 如何使用WMI限定符,以便将字符串变量分配给WMI属性

有人能给我举个例子,或者告诉我使用什么限定符的方向,这样我就可以为WMI属性分配字符串值了吗 我可以为WMI属性指定数值,但我想为特定WMI属性指定字符串值 我真的迷路了 这是我的示例脚本 $mess = "sample output text" $newClass = New-Object System.Management.ManagementClass ("root\cimv2", [String]::Empty, $null); $newCla

从函数应用程序Powershell脚本验证Azure DevOps

如何使用函数应用程序中的Powershell脚本向Azure DevOps进行身份验证以创建工作项?我正在调用DevOpsAPI,它正在使用个人访问令牌。但我想避免PAT,因为它与用户帐户绑定。我当前的脚本如下所示 $AzureDevOpsPAT = 'njr2jXXXXXXXXXXXXXXXXXXXXXXXXXXX' $Header = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.G