在Powershell中,如何通过将名称提供为$var来设置环境变量?

通常,在PowerShell中,您将使用 env:VARIABLE = "Some kind of value" 但我的问题是,我在字符串对象中有变量的名称。PowerShell不将其识别为字符串对象,而是使用变量名作为环境变量的名称 例如,如果我这样做: $someVariable = "MY_ENV_VAR" env:$someVariable = "Some kind of value" 结果是,$someVariable被字面上定义为环境变量,而不是MY_ENV_VAR。我尝试过多次

PowerShell webdeploy

我正试图基于此将PowerShell与web部署结合使用 这就是我的脚本的样子 [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Deployment") function Sync-Provider($provider, $sourceLocation, $destLocation) { $destBaseOptions = new-object Microsoft.Web.Deploym

在安装Sharepoint 2010之前卸载PowerShell 1.0

在阅读《开始Sharepoint 2010管理》一书时,作者讨论了如何准备在win2008 R2服务器上安装Sharepoint 2010服务器。在卸载powershell 1.0这一步骤中,我不理解这背后的原因 请帮助我理解为什么要卸载这个 提前感谢。PowerShell V1.0已安装在Windows Server 2008上 在Windows server 2008 R2 PowerShell 2.0上本机存在,因此无需升级。您可以参考以下StackOverflow文章: 升级到Powe

为什么赢了';.Count方法是否在EMS/Powershell会话中针对此输出工作?

我正在为exchange 2007 LCR和SCR复制编写一个监视脚本,以自动化我的一些日常工作,并确保其他人可以看到是否有问题。我的代码在下面,我有一个条件,其中一个数据库在重播队列中超过2000个日志。我知道脚本的resto是有效的,因为如果我在没有.count的情况下检查输出,它会返回事务日志重放队列过高的数据库。有人能给我解释一下我做错了什么,为什么我不能计算输出 #SCR Replay Queue Length Check IF (($SCRstatusTable|? {$_.Repl

如何将powershell与系统间缓存一起使用?

我想用powershell代替Intersystems的控制台/终端。有没有办法通过powershell连接到缓存并对服务器发出缓存命令?缓存终端只是一个telnet会话,因此您可以从powershell使用telnet 您还可以通过评估步骤的任何方式连接到缓存来执行自己的读取-评估-打印循环。尽管您的连接方法可能会使break语句难以工作,或者write语句(或任何其他使用设备的语句)难以正常工作 您也可以在另一个进程中打开终端,并使用从power shell驱动终端,但这开始变得愚蠢。这可能

Powershell 远程转换为CSV格式的Hyper-V服务器列表?

我想这很容易,但我想确保这是可能的 有没有一种简单的方法可以获取机器上所有Hyper-V服务器/VM的列表,并将其导出到CSV文件?(excel电子表格) Get-VM返回相当多的信息,但是有什么方法可以分割这些信息吗?也许将它们存储到一个数组中 这是我第一次使用powershell,所以我主要想确保这是一项容易完成的任务 问题是…这台机器是一台Windows 2008 Server R2,我认为它不支持Hyper-V模块(我认为只有Win 8支持)…所以我一直在远程访问它…所以我可以使用Pow

使用Powershell或WMI在IIS中承载停止/启动服务

我在iis中托管了一些WCF服务。使用powershell脚本,我想停止并启动单个服务(或应用程序)。我找到了很多关于stop App-pool的文章。但我想停止一个特定的应用程序。我听说使用WMI我们可以做到这一点。但我找不到任何相关的脚本 在IIS中,您只能通过停止“应用程序”的关联应用程序池来停止它。因此,停止特定应用程序的必要性要求您将应用程序组织到应用程序池中,以便在停止特定应用程序池时只停止单个(或组)应用程序 通过将应用程序组织到多个应用程序池中,您可以利用app-pool.vbs

Powershell 更改IP地址并使用findtr命令

我不确定CMD是否真的能够做到这一点,所以我也愿意接受powershell的建议 我要做的是在Ip地址的最后一个八位字节中添加20: 10.134.12.150 到 10.134.12.170 我相信这个过程是: 在ipconfig中查找IPv4字符串 找到第四个” +“后20” 拆分地址并将结果强制转换为字节数组。在最后一个元素(如-1)上加上20,然后将数字连接起来 PS> $octet = [byte[]]('10.134.12.150' -split '\.') 10 134 12

PowerShell脚本参数作为数组传递

编辑:我将这里的代码更改为一个简单的测试用例,而不是出现此问题的完整实现 我正试图从一个Powershell脚本调用另一个脚本,但事情并不像我所期望的那样顺利。据我所知,&运算符应该将数组扩展为不同的参数。这对我来说是不可能的 caller.ps1 $scriptfile = ".\callee.ps1" $scriptargs = @( "a", "b", "c" ) & $scriptfile $scriptargs Param ( [string

管道输入时,PowerShell输入到功能不工作

我继承了一个powershell函数。当不使用输入或提供单个服务器名称作为输入时,它可以正常工作 函数在这样运行时工作 获取DiskUtil或 Get-DiskUtil computername 但是如果我尝试 Get Content c:\psfiles\servers.txt | Foreach对象{Get DiskUtil}(如果在servers.txt中列出了三台服务器,则会给出本地计算机的三次输出) 或 结果仅给出本地计算机名的输出,并三次显示此错误 有人能告诉我为什么Get Con

暂停Powershell命令

我已经编写了两个简单的命令,我正试图将它们与Start sleep命令结合起来 命令1 Enable-CsUser –Identity "user" –RegistrarPool pool01.com –SipAddressType EmailAddress 命令2 get-csuser "user" | FL DisplayName,sipaddress | Out-file D:\lync_creation.txt -append 现在,每个命令都可以自己完美地工作,但是当我添加s

尝试使用顺序前缀*递归重命名时,Powershell出错*

在文件名中添加顺序前缀没有问题。下面的内容在有问题的顶级目录中非常有用 $path="E:\path\newtest1" $count=4000 Get-ChildItem $path -recurse | Where-Object {!$_.PSIsContainer -and $_.Name -NotMatch '^\d{4}\s+'} | ForEach -Process {Rename-Item $_ -NewName ("$count " + $_.name -f $count++)

Powershell中的GPU加速

我有一个powershell脚本,我经常运行它。它解析许多文件,并且自然地利用了大部分CPU(2个内核) 有没有办法在powershell中利用GPU加速功能?您的脚本可能没有CPU限制。它绝对不能使用多个核心,即50%。我很有信心,最慢的部分是读写文件 GPU可以非常有效地完成一些任务,但数据必须存储在内存中。也就是说,最慢的部分(读取文件并随后写入)仍然存在 还有一种情况是,GPU非常适合在大量数据上执行相同或类似的操作,但文本替换(regex甚至更少)则是另一回事。请记住,GPU在处理大型

Azure网站-使用PowerShell或跨平台CLI配置SSL绑定

我们的情况是,我们希望经常向许多Azure网站添加新的自定义子域,并且我们需要能够自动化该过程,这样我们就可以最大限度地减少手动干预的需要和出错的风险 Azure跨平台CLI工具和PowerShell cmdlet为我提供了足够的功能来编写脚本,SSL绑定显然是个例外。。。这些网站都是HTTPS,我们添加的每个域都需要SNI SSL绑定 Azure管理门户允许您手动配置网站域的SSL绑定。如何使用PowerShell cmdlet或跨平台CLI工具实现同样的功能?如果无法使用这两种工具中的任何一

powershell将.inf文件传递到pnputil

我正在尝试递归搜索一个目录,查找其中的任何.inf文件,并将这些文件传递到pnputil,以将这些驱动程序添加到windows驱动程序目录 我有以下资料: cd /drivers $x = ls -Path . -Filter "*.inf" -Recurse -ErrorAction SilentlyContinue Foreach ($i in $x){ pnputil /a $i } 我从pnputil得到以下错误: 添加驱动程序包失败:作为参数传递的INF无效 我假设它

在powershell V3中编辑打印机驱动程序设置

我有4台Windows 2008 R2打印服务器,每台都有大约800个打印机对象,我在一台中央Windows机器上使用powershell脚本管理它们 我可以很容易地创建一个新的打印机使用脚本,但我正在寻找一种方法来改变一对夫妇的先进打印机设置自动创建后。如果我使用的是Windows 2012或powershell V4,这似乎是一项简单的任务,但我仍然坚持使用2008 R2和V3 我是否可以在powershell V3中调整高级驱动程序设置(纸张类型、剪切类型等) 我创建打印机对象的方式如下:

Powershell PHP-从Windows进程获取运行脚本的文件名?

我有三个PHP进程正在运行。其中一个进程运行script_One.php,另外两个进程运行script_two.php。当我在命令行中使用Get进程时,所有三个进程都将php列为进程名 是否仍有区别不同脚本的方法?尝试以下方法: Get-WmiObject -Class win32_process -Filter "Name = 'php.exe'" | Where {$_.CommandLine -match 'my_script\.php'} 我从win32_进程中得到一个无效的查询se

Powershell 服务器重新启动时未更新WMI LastBootUpTime

我正在使用PowerShell的cmdlet Get-WMIOObject获取某些服务器的上次启动时间 [Management.ManagementDateTimeConverter]::ToDateTime((获取WmiObject win32\u operatingsystem-ComputerName$server)。LastBootUpTime) 我注意到一些服务器(windows Server 2003、2008 R2和2012 R2)返回的LastBootUpTime的日期为2014

如果查询中有$(美元),如何在powershell中使用sql查询

这听起来可能很愚蠢,但我在Oracle查询和powershell方面遇到了一些问题 select * from v 查询如下 $sql="select * from v$dbase" 这是我签入powershell时的输出 select * from v 但是PuxBar不承认它,并将其视为变量,因为 $>强>此。 谁能告诉我如何解决这个问题。使用单引号而不是双引号: $sql='select * from v$dbase' 另一种方法是使用转义字符` "select * from v`

Powershell 将一个文件的内容复制到另一个文件(不包括几个文件)

我在C:\drive-newfolder1、newfolder2和newfolder3中创建了3个文件夹。 new folder1包含五个.txt文件,new folder2包含相同的五个文件以及更多文件 现在,我想比较两个文件夹1和2,只将普通文件从新文件夹1复制到新文件夹3。(这就像从newfolder1和newfolder2备份常用文件一样) 我想排除复制所有不常见的文件。 我写的代码是: cls $folder1 = dir C:\new folder1 $folder2 = dir C

通过TeamCity将带引号的参数传递给PowerShell脚本

我们正在通过TeamCity调用PowerShell脚本。我们希望传递一个包含引号的参数,例如: Build step : PowerShell Script file : foo/bar/my.ps1 Script arguments : -MyParam "%system.MyParam%" 其中system.MyParam设置为。不幸的是,这在以下方面失败: 无法对参数MyParam进行参数转换。无法转换值“Backtick(`)是PSH转义字符。因此可以使用“`”

使用PowerShell获取主机名和MDT自动命名计算机

我的问题是,是否可以在企业环境中获取计算机的域名,并将其用作MDT部署中的计算机名 我知道MDT在这里有一个设置计算机名的选项:右键单击部署共享规则 我希望使用变量$CNAME(计算机名),我可以使用以下powershell命令成功获取该变量作为deploymentshare设置中“OSDComputerName=”的变量 此ps脚本为我提供了正确的名称: 1获得IP $IP=((ipconfig | findstr [0-9].\.)[0]).Split()[-1] 2.进行IP查找 $L

如何确定PowerShell ISE中控制台窗格行的大小?

在PowerShell控制台中,我可以使用以下任一方法确定屏幕中显示的行数: [console]::WindowHeight $host.UI.RawUI.WindowSize.Height 在PowerShell v4.0 ISE中,这两个都是$null。我可以使用以下命令在控制台窗格缓冲区中找到总行数: $psISE.CurrentPowerShellTab.ConsolePane.LineCount 但是,我还没有找到与$host.UI.RawUI.WindowSize.Height等

Powershell新手希望创建脚本来触发丢失文件的通知

长期潜伏者第一次海报。我正在(主动)寻找是否有一种方法可以检查丢失的文件,我们希望每天都能收到这些文件,并通过电子邮件得到通知 我们的公司有一个我称之为相对混乱的系统结构,自从我来到这里,我就不断地在这里和那里加入一些实践和流程,以便更主动地进行监控 特别是在这种情况下,我们通过FTP接收来自供应商的文件,这些文件概述了我们的销售和其他数据。这些文件经过一些验证,然后将数据导入我们的ERP平台。不过,我有兴趣加入一个检查,当未收到文件时,在预期的情况下,该检查会引发并发出警报 该要求的最后一部分

Powershell 如果/否则获取SPWeb

我正在尝试快速检查网站是否存在。我的IF语句中似乎有错误,但我不确定语法是否正确。这是我的密码: $URLis = "https://ourdevsite.dev.com/sites/flibidyboots" add-pssnapin microsoft.sharepoint.powershell -ea 0 IF ((Get-SPWeb $URLis) -ne 0){ Write-Host "Site does not exist, so we can proceed with

Powershell 从多个文件中读取数字并求和

我有一个日志文件C:\temp\data.log 它包含以下数据: 总大小=222,6GB 总大小=4,2GB 总大小=56,2GB 我的目标是从文件中提取数字,并将其相加,包括逗号后的数字。到目前为止,如果我不在逗号后面正则包含值的数字,而只使用逗号前面的数字,它就可以工作。我遇到的另一个问题是,如果文件只包含一行,如下面的示例所示,如果它只包含一行,它会将数字222拆分为三个文件,其中包含三个文件中的数字2。如果上面的日志文件包含2行或更多行,只要我不使用带逗号的值,它就会正常工作并进行汇总

使用powershell合并Azure Blob中的文件

我需要在Azure Blob中合并具有不同时间戳的相同关键字的多个文件,并将它们从一个文件夹移动到另一个文件夹,以便下游服务可以使用它们 我可以将文件从一个文件夹移动到另一个文件夹,但我找不到使用powershell(带in-Blob文件夹)将它们连接到单个文件的选项。有没有办法专门使用powershell实现这一点 注意:文件夹中的所有文件都是具有相同布局的文本/csv文件。复制Blob操作无法连接/加入/合并Blob,它旨在作为后台复制操作,只能进行“复制”。每次都将覆盖目标Blob 在那里

用于使用EnvDTE删除Visual Studio项目中的文件夹的PowerShell脚本

使用PowerShell我正在尝试使用从项目中删除特定子文件夹 我要删除的文件夹是: MyWebProject\Assets\FolderToDelete 我开始的脚本是: $DTE.Solution.Projects|Where-Object{$_.Name -eq 'MyWebProject'}|Select-Object -Expand ProjectItems 使用循环,然后遍历ProjectItems,找到“FolderToDelete”(类型ProjectItem)。然后我调用并将

Powershell Foreach循环未在每个目录中循环

我正在编写一个脚本,它遍历目录中的每个特定文件夹,按CreationTime对build_info*文件进行排序,从每个目录中获取最新的文件,并将其分配给唯一的变量。我的排序部分正在工作,但问题是我的循环没有遍历每个目录,它只是从第一个目录获取结果并将其放入多个唯一变量中 所以,这就是我想要它做的: servers01 most recent build_info*.txt file --> $servers01 servers02 most recent build_info*.txt

Powershell 传递变量以获取aduser cmdlt时出现问题

刚开始使用Powershell,我遇到了一个障碍。我正试着反复浏览这个广告,并得到一个所有你的列表。从那里我试图获得每个OU中每个用户的用户帐户信息。为了进行测试,我已经能够获取所有OU的DN并将其输出到控制台,但当我尝试将这些值传递给get-aduser cmdlt时,它失败了 这是我的密码: import-module activedirectory $SearchBase = get-adorganizationalunit -filter * -searchbase "ou=users,

Powershell将查找注册表项并将其删除

我创建了一个小的powershell脚本来查找注册表是否存在。如果它存在,则使用命令REG DELETE将其删除。但在第一次成功运行之后,我检查了regedit,发现它被删除了。但若我再次尝试运行该脚本,它仍然会返回发现以前删除了注册表项的消息 $a = Test-Path -Path 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{23170F69-40C1-2702-1604-000001000

Powershell [System.Web.Security.Membership]::GeneratePassword()-找不到类型

为什么在PowerShell中尝试使用此类/方法时找不到类型 [System.Web.Security.Membership]::GeneratePassword() 我是否需要安装模块或其他东西来使用它?首先加载程序集: add-type -AssemblyName System.Web [System.Web.Security.Membership]::GeneratePassword(10,0) 对于在此处登录并使用PowerShell Core的用户,请参见以下链接: .NET

Powershell通过指纹作为字符串与字符串变量检索证书

我正试图拼凑一些PowerShell代码,在服务器列表中循环,返回一些有关其IIS站点和绑定的信息,如果它们有https绑定,则获取证书hash并使用它通过指纹定位证书并返回其过期日期 我遇到的问题是,当我在$binding.certificateHash下运行代码时,似乎会返回我期望的证书哈希字符串,但当我使用certificateHash属性尝试通过其指纹获取证书时,它不起作用。。。但是,当我获取certificateHash值的原始字符串值并对其进行硬编码时,它会起作用 我已经检查了cer

Powershell 转换到Html错误的输出

我想使用ConvertTo HTMLPS命令将下图中的输出保存到一个文件中。 这是我的命令: node index.js -f ..\IT -u 20 -s 0.5 | ConvertTo-Html | Out-File output.htm 这是输出: 我做错了什么?如果您想要的是控制台输出的精确html表示, 你也许会和我一起过得更好 另一种选择是 从$host.ui.rawui.GetBufferContents($rec)复制都使用固定宽度字体并应用颜色。因此,输出可以作为文本

使用powershell从文本文件中读取内容,并将每个单词存储在字符串数组中

我有一个如下的文本文件 约翰,42岁,芝加哥,飞行员,男 大卫,40岁,悉尼,艺术家,男性 埃琳娜,35岁,伦敦,设计师,女性 我想使用Powershell读取此文本文件,并将其存储在变量数组中,如下所示 名称1=约翰 年龄1=42 城市1=芝加哥 职业1=飞行员 性别1=男性 Name2=David 年龄2=40 城市2=悉尼 职业2=艺术家 性别2=男性 其他线路也是如此 我试过: $DB = Get-Content "File.txt" foreach ($Data i

如何在powershellgallery中将脚本声明为预发布?

我希望能够使用updatescript-allowprerelease更新我的脚本。在使用发布脚本发布之前,我不确定如何将脚本标记为prerelease。我该怎么做 我试过了 $Params = @{ PrivateData = @{ PSData = @{ PreRelease = 'Testing' } } } Update-ScriptFileInfo @Params -PassThru 这在

Powershell 需要在CSV中为多个主机运行脚本

我想运行以下代码,从一个CSV文件同时检查多台服务器的连接状态,该文件可以轻松编辑,而不是每次检查一台主机 我意识到我可以在一个bat内多次运行同一个脚本,但是为了便于移植,我希望使用CSV功能 如果你能帮我把结果输出到日志中,就可以获得额外的积分 我想以某种方式结合这个脚本的功能 和下面提供的一个 Param( [参数(必需=$true,ValueFromPipeline=$false,HelpMessage=“主机名或IP地址”)] [字符串]$HostName ) [控制台]::Back

Powershell-IE |旁路-此站点不安全

我的PS1文件正在IE中启动一个站点。由于该站点不安全,我无法导航到该URL。我需要绕过此提示,但我的解决方法不起作用。我想我可能没有正确地选择sslbypass的更多信息。有没有其他的绕道方法 "Starting Internet Explorer in Background" $ie = New-Object -com InternetExplorer.Application $ie.visible=$true $uri = 'https://soti10app1/MobiControl/W

powershell 7中的ssl证书验证

所以问题不是关于powershell,而是如何管理它: 下面是一个脚本(从我们用来管理F5负载平衡器的脚本中提取的部分) 如果您使用powershell 5.1运行,但由于powershell 7.0.1中的以下错误而失败,则此操作有效 The remote certificate is invalid according to the validation procedure. f5确实有一个不受信任的证书-我希望解决这个问题,但我使用TunableSLValidator,我在那里有证书验证

powershell到unescape unicode(utf8)

我准备了以下函数 function UnescapeNonIsoChar($inputString) { return [regex]::replace($inputString, '(?:\\u[0-9a-f]{4})+', { param($m) $utf8Bytes = (-split ($m.Value -replace '\\u([0-9a-f]{4})', '0x$1 ')).ForEach([byte]) [text.en

使用PowerShell中的移动项将主机名和日期附加到文件名

完整的PowerShell新手,所以请原谅我,因为我可能会搞砸我的要求 我有一个名为debug.log的文件,我需要重命名并移动它 我知道我可以用Move Item来实现这一点,但是我想在文件名的前面加上主机名,在文件的末尾加上日期戳 例如: 在:C:\Temp\debug.log中 输出:\\\sharename\MyHostdebug20201006.log 这些文件复制到共享后将进行日志解析,主机名和日期戳将导入到我的跟踪中,跟踪处理的日志。我必须每月为8台单独的服务器执行此操作。我计划在

发送带有powershell问题的电子邮件

Ian使用下面的PowerShell发送电子邮件 从wins10测试工作,但从windows Server 2016测试工作不起作用 $Username = "XXX@XXX.com" $EmailPassword = "XXX" $Attachment= "D:\test\test.txt" $EmailTo = "YYY@YYY.com" $EmailFrom = "XXX@XXX.com&qu

Powershell可在任何按键时中断等待

我有以下命令 Get-Content -Path out.log -Wait 它读取文件并等待 我想打破任何按键的等待(或一个特定的键,没有关系) 可能吗 更新 Ctrl+C不是一个选项,因为我无法摆脱“终止批处理作业(Y/N)”消息。最接近的方法是生成另一个PowerShell进程,并在按下某个键时终止该进程。或者,用户可以在完成后简单地关闭新shell # Start Get-Content -Wait # Get the Process ID. $command = 'get-cont

Powershell函数测试ping

我不明白为什么我的函数不能工作,所以写了这个错误 由于调用深度溢出,脚本失败。 +CategoryInfo:InvalidOperation:(0:Int32)[],ParentContainesErrorRecordException +FullyQualifiedErrorId:CallDepthOverflow 我的代码 $table= @("WIN-BFA8HOP8PUQ","WIN-AFI9HOP5PUQ") > > functi

  1    2   3   4   5   6  ... 下一页 最后一页 共 507 页