Powershell-在其他两个节点之间插入节点

我想在已经存在的2个其他节点之间插入一个节点。 在我的脚本中,我收到一个xml变量,我想更新这个变量 例: 结果应该是: 当我使用appendChild时,插入总是在末尾完成 一个主意 谢谢 我建议使用appendChild是您的问题-它会将节点追加到列表的末尾 Prehaps您可以使用InsertBefore或InsertAfter来代替(假设您可以获得对所需插入点任一侧的节点的引用) 有关或上的文档,请参见MSDN。正如@Grhm所回答的,您可以通过InsertAfter来完成。我建

PowerShell:筛选器字符串列表

这似乎是一个非常基本的事情要做,但我是新的PowerShell,不能明白这一点,或找到一个在线的例子 我正在尝试筛选字符串列表。此字符串列表是“svn list”命令(存储库文件的Subversion列表)的结果,如: 我试过了 svn list -R PATHTOREPOSITORY | where {$_ -like "stringtomatch"} 这是行不通的。如何修复它?使用: svn list -R PATHTOREPOSITORY | where {$_ -like "*stri

如何使用TFS PowerShell获取变更集和关联工作项的列表?

我是PowerShell和TFS cmdlet的新手,我正在尝试检索区域路径中的变更集列表及其关联的工作项 从某个日期起,我已经列出了变更集: Get-TfsItemHistory "$/Project/Branch" -Version “D01/12/10~” -Recurse 并列出自同一日期起的工作项: Get-TfsItemHistory "$/Project/Branch" -Version "D01/12/10~" -Recurse | %{ $_.workitems } 每个

PowerShell中拆分的对立面(非cmdlet)

以下的相反功能是什么 $tmp = $domain.split(".") 换句话说,如何将数组转换为字符串。我听说过“加入”,但我无法让它发挥作用 非cmdlet,非quest,这必须与PowerShell v1和所有旧系统一起使用 Powershell中有一个连接操作符: $result = [string]::join(".", $array) $tmp -join "." 除了连接运算符(在v2中引入)和.NET连接方法外,还可以将特殊变量(Ouptut字段分隔符)的值更改为

Powershell 从远程FTP服务器上的文件获取日期

要获取文件,方法如下所示: $ftprequest.Method = [System.Net.WebRequestMethods+Ftp]::DownloadFile 因此,我试图将该方法更改为等效于下面的C代码: request.Method = System.Net.WebRequestMethods.Ftp.GetDateTimestamp; 如何在powershell中使用GetDateTimestamp 我已经尝试了以下变化,但没有任何运气: $ftprequest.Metho

Powershell 确定服务器是否为打印服务器

该脚本工作正常,将在服务器上的打印机之间切换,并确定打印机是否共享(TRUE)。但是,如果服务器上的最后一台打印机碰巧没有共享,则会出现问题,然后将共享打印机更改为(False)。这会扭曲电子表格中的结果,说明该服务器虽然是打印服务器,但不是打印服务器。我需要了解如何创建一个循环,说明如果我们在服务器上找到一台共享打印机,请停止搜索并将服务器放置在标记为打印服务器的电子表格中 我想加入一些类似于 $Printers=gwmi Win32_打印机-computername$StrComputer

Powershell 如何确定事件日志是否已存在

我使用下面的行创建一个新的事件日志 new-eventlog -LogName "Visual Studio Builds" -Source "Visual Studio" Get-EventLog -list | Where-Object {$_.logdisplayname -eq "Visual Studio Builds"} 我希望每次都运行它,因为如果我从新计算机运行构建,我仍然希望看到事件日志 问题是,每次在创建日志后运行脚本时,都会抛出一个错误 新建事件日志:“Visual

在PowerShell v3中运行并行调用WebRequest作业

在PowerShell中以非常简单的方式同时运行后台作业,但我似乎无法让它与新的(在v3中)cmdlet Invoke-WebRequest一起工作 我通过PowerShell以脚本方式下载了数千个文件。效果很好,但连续进行这些操作需要几天时间: for($f=0;$f -lt $urlList.Count;$f++) { $remote = $urlList[$f] + $fileList[$f] $local = 'C:\folder\' + $fileList[$f]

通过在Windows GUI中工作生成Powershell脚本

我的理解是,Windows Server 2012中各种GUI组件(例如,在磁盘管理中)所完成的几乎所有“实际工作”都是通过调用Powershell来执行的。(也就是说,在GUI中没有任何事情是Powershell无法完成的。) 在您使用GUI时,能够查看和/或收集Windows执行的各种Powershell操作将非常有价值。您可以打开此功能,执行需要执行的配置工作,然后将其关闭,从而生成一个或多个Powershell脚本,自动完成您刚才手动完成的操作。(当然,脚本可能会以各种方式进行参数化。)

如何从Get-WMIObject输出powershell中删除额外的行

我正在运行以下查询以获取视频驱动程序版本号 Get-WmiObject Win32_videoController | where {$_.Name -like "Nvidia*"} | Format-table -HideTableHeaders DriverVersion 它返回我想要的数据加上大约4行额外的数据。输出前一个,输出后三个。它看起来不会在帖子中正确出现 PS F:\> Get-WmiObject Win32_videoController | where {$_.Na

Powershell 替换特殊字符?

我想替换“,*”。下面的命令不起作用。请帮忙 $inputmatch = ",<*abc*>,<*>,<*abc*>,<*abc*>" $inputmatch = $inputmatch -replace "^\,\<\*","\*\<" $inputmatch = $inputmatch -replace "\*\>$","\>\*" $inputmatch=“,,,” $inputmatch=$inpu

Powershell:can';t以csv格式生成当前时间

我用行填充csv文件,每行在第一列中有$timestamp和3个其他值 $timestamp = get-date -format "d-M-yyyy-H-mm" 当我打开csv文件时,我看到每个字符串都有相同的日期和时间,这不可能是真的。csv示例如下所示: #script actions1 $line = "$timestamp;value1;value2;value3" $line | out-file $file -encoding utf8 -append -force #scrip

仅从PowerShell中的路径获取驱动器号

我想在PowerShell中制作一个脚本,以帮助轻松转换如下路径: H:\MyDoc.docx \\FileServer\UserShares\Organization\Department\Me\MyDoc.docx 进入其真正的绝对路径,如下所示: H:\MyDoc.docx \\FileServer\UserShares\Organization\Department\Me\MyDoc.docx 在这种情况下,我在本地计算机上创建了一个网络驱动器映射,指向H:\到\\FileSer

在powershell中提取ipv4和ipv6

好的,我是powershell的新手,所以我正在做一个简单的练习,从ipconfig命令中提取ipv4和v6。我要起诉这个命令 $ip = (ipconfig | select-string ipv4) -split ":",2 | select -last 1 我不敢相信,仅仅获取ipv4并分配给var就这么困难。有人知道更简单的方法吗 谢谢简单的一行: $ipv4 = ( Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerNa

Powershell 尝试捕获不使用Get ChildItem

我有以下Powershell代码: Function blah { ... try { $numct = ( Get-ChildItem "\\devicename\c$\Users\user\Documents\ShareFile\Folders" -ea "Stop" | Measure-Object ).Count; } catch { "Error: " + $($_.Exception.Message) return $false } 它在一个成功的场景中工作

TeamCity 8构建步骤中的PowerShell退出代码始终为0

我们正在使用TeamCity Enterprise 8.0.5 我有一个TeamCity构建步骤,该步骤运行PowerShell(.ps1)脚本,如下所示: try { # Break something $a = 1 / 0 } catch { Exit 1 } 尽管如此,在构建日志中,步骤成功并退出,代码为0 [10:02:18][步骤2/3]进程已退出,代码为0 如果脚本中有任何失败,我希望该步骤失败。我怎样才能做到这一点呢?我刚刚发现了这篇文章: TeamCi

Powershell-从以前的命令中选择对象

我似乎不明白如何在powershell的最后一个表中显示上一个命令对象。我明白我并没有很好地解释自己,所以我会举一些例子:) 这会让我得到这样的结果: ScopeID、子网掩码、名称 10.0.10.0255.255.255.0,范围1 10.5.0.0255.255.248.0,范围2 现在,当我运行此命令时,我无法使用第二个命令结果显示ScopeID: get-dhcpserverv4scope -computername server01 | ForEach-Object {get-dhc

如何在powershell中创建自定义阵列?

我正在尝试用PS对阵列进行排序。我试图解决的问题是返回一个复制VM列表和一些基本统计数据 在阅读了大量的网站和建议后,我能得到的最好的脚本如下: $myArray = @() $vms = get-vm | where-object { $_.replicationstate -ne "Disabled" } foreach ($vm in $vms) { $vmRepl = Get-VMReplication $replfreq = (New-TimeSpan -seco

在PowerShell脚本中使用括号?

有谁能解释一下下面两种说法的区别吗 gc-ReadCount 2。\input.txt |%{“@”+$} (gc-ReadCount 2.\input.txt)|%{“@”+$} 我使用下面的文件作为上述命令的输入 input.txt 1 2 输出 1 2 gc-ReadCount 2。\input.txt |%{“@”+$} @@十二, (gc-ReadCount 2.\input.txt)|%{“@”+$} @@1 @@二, 如果输入文件包含2条以上的记录,则两条记录的输出相同。 我可

Powershell 移动具有相同名称但扩展名不同的文件。动力壳

我是一名初级技术人员,任务是编写一个简短的powershell脚本。问题是,我已经开始学习PS 5小时前-一旦我的老板告诉我被分配到这个任务。我有点担心明天不能完工,所以希望你们能帮我一点忙。任务是: 我需要根据特定条件将文件移动到不同的文件夹,让我从he文件夹结构开始: c:\LostFiles: This folder includes a long list of .mov, .jpg and .png files c:\Media: This folder includes many s

Powershell 在.ps1文件中调用IIS相关cmdlet时内存增加

在C#中,我有以下代码以文本方式运行脚本 在脚本中,我只是执行以下cmdlet Get-WebsiteState -Name "Default Web Site" 每次执行脚本时,我的记忆力都在不断提高。诚然,这最终将成为一个更大的脚本的一部分,该脚本不仅仅完成这一个功能,但似乎IIS命令的任何组合最终都会占用越来越多的内存。我试图: 直接在脚本中调用[System.GC]::Collect() 将Get WebsiteState-Name“Default Web Site”分配给一个变

在查询中使用联接时,为什么缺少一些系统属性?(powershell,获取wmiobject)

我遇到了以下问题: 当我运行一个内部有连接的查询时,systemproperty“\uuuu PATH”为空。当我在没有连接的情况下运行它时,一切正常: 工作: 输出:“\SCCM\root\SMS\site\u CMT:SMS\u Application.CI\u ID=16781953” 不工作: 我的问题: 有人能解释一下为什么这条路是空的吗? 非常感谢,在非工作示例中,您是否从$apps获得任何输出?实际上,我认为您的问题是WQL不支持联接。实际上,我有点惊讶Get WmiObject没

Powershell 选择对象-唯一和成员类型

作为一个更大脚本的一部分,我正在制作一个服务器名引用列表,其中应该包含我们基础架构中的所有服务器。为此,我有4个服务器名来自不同系统(AD、SQL等)的阵列,我计划使用以下方法将它们连接在一起: $Refrencelist = $var1.Name + $var2.Name + $var3.Name + $var4.Name | Select-Object -Unique 尽管这主要起到了作用,但我仍然在结果列表中看到一些重复项,从我收集的数据来看,这是因为SQL$var中.Name属性的M

Powershell 以日期作为文件名覆盖现有文件

我对PowerShell脚本非常陌生。我试图用文件名中的日期和时间覆盖现有文件 这是我正在使用的 $LogName = "Security" $EventID = 4725 $Date = ((get-date).addDays(-1)) $CurrentDate = Get-Date $CurrentDate = $CurrentDate.ToString('MM-dd-yyyy_hh.mm.ss') get-eventlog $LogName $EventID -after $Date |

Powershell:正在等待更改的目录

简而言之,我想连接到运行虚拟机的服务器,然后获取所有已安装机器的列表,我用于此操作的命令是: Invoke-Command -ScriptBlock {enter-pssession -ComputerName <name>}; Invoke-Command -ScriptBlock {Get-VM} | select-Object -Property name 此命令获取服务器上当前VM的列表,并返回这些服务器的特定属性 但是,由于连接在建立之前需要很短的时间,因此“get vm

Powershell 如何从DriveLetter中删除冒号

如何从手动输入的驱动器号中删除冒号 $OutDrive = Read-Host -Prompt 'Please select a drive letter to create output folders (e.g. c:)' $DriveLetter = $OutDrive minus ":" ->trying to figure out what to put here 使用使用正则表达式的-replace操作符。请注意,美元符号确保只删除单个尾随冒号: $DriveL

Powershell到可执行文件.bat

我正在尝试将下面的脚本(位于Powershell中)转换为可执行的.bat文件。基本思想是我有一堆文件,其中文件名由三部分组成: 第1部分:TKSYSTEMID 第2部分:变量名 第3部分:YYYY-MM-DD-HHMM 因此,一个简单的示例如下:TKSYSTEMID NOTES YYYY-MM-DD-HHMM 我正在寻找一个.bat文件,它可以用提示用户输入的内容替换TKSYSTEM ID和YYYY MM DD HHMM 到目前为止,我使用的powershell脚本是: $NEWSYSTE

Powershell 替换包含符号和的XML节点中的文本

我有一个PowerShell脚本,它试图用不同的值替换XML文件节点中的值 例如,在SectorDesc节点中,将“&”替换为“and” <?xml version="1.0" encoding="UTF-8"?> <OrganisationUnits> <OrganisationUnitsRow num="8"> <OrganisationId>ACME24/7HOME</OrganisationId> <O

Powershell 将iso文件转换为要在azure中部署的.VHD文件

我尝试了几种将ISO文件转换为.VHD文件的方法(使用MVMC工具和powershell中的Hyper-V模块),但部署时转换的.VHD文件在azure中不起作用。 我正在寻找将ISO文件转换为.VHD文件并将其部署到azure的最佳方法 如果您的ISO是针对Linux发行版的,Azure需要在上载之前准备映像。在这种情况下,我会按照官方文档中的说明进行操作(即创建虚拟机,按照说明进行修改,上传) 如果您的ISO是针对Windows版本的,那么创建SYSPREP的VHD似乎是一种有效的方法。我在

从脚本vs cli运行时,Powershell命令没有输出

在脚本中运行此命令时,它不会将输出写入屏幕,但在PowerShell ISE cli中执行此命令时,它会起作用: $toptenseverity = $csvData | select Severity, Title -Unique | sort Severity -Descending | select -First 11 $toptenseverity 代码: 输出: Generating P1 report. Please wait... Total P1 count: 352

Powershell Tcp IP,如何连接/SendData/ReadResult/Disconnect

我需要通过JetDirect协议(Tcp IP端口9100)查询打印机 我已经编写了连接和断开连接的代码,但对于输入和读取数据,我遇到了一些问题:( 结果 TcpDestNodes IsOpen Latency Query ------------ ------ ------- ----- printer.local:9100 True 0,7065 {} 我的代码 function Connect-TcpHost ( [Parameter(ValueFromPi

如何从powershell在csv文件上创建换行符

我被困在一个点上,我有两个像这样的数组变量 $name=@(“A”、“B”、“C”) $roll=@(“1”、“2”、“3”) 我正试图用这些数据制作一个csv文件。我正在使用这个代码 $name = @("A","B","C") $roll = @("1","2","3") $report = New-Object psobject $report | Add-Member

从TFS为powershell任务配置Azure RM环境

如何通过Visual Studio Online(TFS)中的Azure资源模板(Web应用程序、Sql Server等)设置对Azure订阅的访问以在那里调配资源?这将授予在TFS上运行发布定义的代理访问权限。现在它在Get AzureRmContext处中断,需要调用Login AzureRmAccount。但这应该是无需弹出登录窗口的自动部署。通过TFS中的“Azure应用程序服务部署”任务,我们可以连接Azure订阅(不可能用于Powershell任务)。是否应该成立一个政府?TFS代理

Powershell 自托管vsts生成代理上的signtool命令未完成

我有一个自托管的构建代理,用于从VSTS构建.NET 4.7.2应用程序。在我的管道中,我使用Squirrel.Windows构建了一个安装程序,除了二进制文件的签名和随后的安装程序外,其他一切都运行顺利 代理在nt授权/网络服务下运行 该用户的个人证书存储中安装了正确的证书 下面是我的powershell脚本中打包安装程序的部分: function Squirrelify{ param( $AppName, $BuildConfiguration, $Binarie

由于目录名中有空格,PowerShell执行失败

我收到了一个PowerShell脚本,它执行该脚本以安装位于同一目录中的可执行文件。这将打包到SCCM(System Center Configuration Manager)中进行部署。但是,如果在包部署期间,推送包的临时控制器在文件路径中的任何位置都有空间,则部署将失败 例如: C:\temp\deployment--这将通过,软件将安装 C:\temp\deployment1\--由于部署和1之间的空间,此操作将失败 C:\temporarydirectory\deployment\-由于

Powershell 使用foreach循环重命名文件夹匹配模式

我正在构建一个简单的Powershell脚本,该脚本递归地循环遍历一个目录,并从特定文件夹中删除“My”前缀,但我似乎无法实现这一点。 我可以列出目录只是罚款,但重命名项目没有影响 任何帮助都将不胜感激 Clear-Host pushd $homeDrivesDir = 'E:\test\users' $reportmode = $false foreach($homeFolder in (Get-ChildItem -Recurse $homeDrivesDi

在PowerShell中将CSV导入变量时,不会返回任何信息

非常有用-当我使用$CSVInfo=Import CSV c:\datatable.CSV 当我从命令行打开变量时,没有返回任何内容。为什么会这样?没有道理 我正在Excel中打开并编辑CSV。在被难倒了很长一段时间后,我在记事本+中打开它并检查了一遍。编码是UTF-8 我把它改成了ANSI,瞧!当询问命令行($CSVInfo中包含的内容时,返回了数据。您不必更改文件的编码,只需使用函数的-encoding参数:Import Csv-Path C:\datatable.Csv-encoding

Powershell 如何阅读姓名和姓名;文件中的IP地址?

我有一个文件(.txt),其内容的每行格式如下: <Name> <IPAddress> 如何有效地将IP地址读入阵列?以上评论的意思是,您应该展示您的工作、您研究的内容、您有问题的地方等。因为您是PowerShell新手,所以其他人可以猜测您可能知道或不知道的内容 例如,您知道如何读取文件、解析文件、使用正则表达式、pscustomobject等吗 $datafile = @' Tampa Server 10.73.202.91 Hollywood

Powershell 使用perl-WSDLURL的SOAP客户端可用

我有一个powershell脚本,它将进行soap调用,并执行以下操作: 1.连接到承载WSDL的服务器(在应用程序术语中称为单元) 2.在其中创建事件(警报)。 3.断开与承载WSDL的服务器的连接(在应用程序术语中称为单元) 我想创建这个脚本的perl版本。。它执行相同的精确操作,请帮助我提供函数和示例。或者,如果可能的话,用perl重写下面的脚本。 提前非常感谢您: PS脚本如下所示: ====================================================

Powershell 转换;System.String[]”;对“类型”进行修改;System.String“; 函数GpuPreference { [CmdletBinding()] Param ( [参数(必需=$true)] [string[]]$app ) $app=$app.Replace(“`“).Split(“,”).Trim() #$app.GetType() 新项目属性-路径HKCU:\Software\Microsoft\DirectX\UserGpuPreferences-Name$app-PropertyType字符串-值“GpuPreference=2;”-Force } $app=读取主机-提示“” GpuPreference$app

函数可以正常工作,但不能与New ItemProperty一起使用: 控制台输出: Type paths: "D:\", "D:\1", "D:\2" New-ItemProperty : Cannot convert "System.String[]" to the type "System.String" required bt parameter "Name". Specified metod is not supported. line:12 char:83 + ... KCU:\So

如何在Azure Devops部署之前使用powershell或任何脚本删除Azure app service文件夹

你能帮我解决下面的问题吗 1.我已经在Azure DevOps中配置了CI 2.在CD中,我需要Powerhell或任何脚本,以便在部署之前删除Azure应用程序服务文件夹。 3.我也知道工藤的流程,但这个流程是手动的。 $WebAppName=“插入Web应用名称” $slotName=“插入插槽名称” $username='从发布配置文件插入用户名'#从发布配置文件 $password=“从发布配置文件插入密码”#从发布配置文件 #初始化Invoke rest方法的参数 $apiUrl=“h

Powershell复制项创建文件夹而不是复制文件

我将带有新psdrive、cd的webdav文件夹映射到一个文件夹,然后尝试将一个文件复制到本地文件夹。脚本代码(草稿)如下所示: New-PSDrive -Name WEBDAV -PSProvider FileSystem -Root "\\testserver@SSL\davwwwroot\myApp" cd WEBDAV: cd "notes\user" Copy-Item -Path ".\important.txt" -De

&引用;给定路径';不支持s格式";在Powershell中使用相对路径时

我有一个Powershell脚本,我已经成功地使用了一段时间,但直到最近它才不再喜欢设置的相对路径。你知道为什么会发生这种情况吗 我试图调用的脚本的位置是C:\Scripts\01\u Upload.sql $scripts = "C:\Scripts" cd $scripts Invoke-Sqlcmd -ServerInstance 'xxx-xx-xxxx' -Database 'TestDB' -InputFIle .\01_Upload.sql 为了安全起见,我对

Powershell 使用相等比较运算符运行Cmdlet

在Powershell 7.0.3中运行以下命令将返回true [datetime]'2020-08-09' -eq 'August 9, 2020' 但是,我想用Get Date替换命令的右侧。我不知道我怎样才能做到。如果我没有错(如果我错了,请纠正我),我们可以在bash中使用,将命令括在记号(`)中 我尝试了Invoke Command cmdlet,但出现了相同的错误: > [datetime]'2020-08-09' -eq Invoke-Command Get-Date Pa

Powershell 如何将Exchange Online中的组与Azure广告进行匹配?

我希望唯一标识Exchange Online中使用的组,以便我可以在Azure AD中找到相同的组。在我的情况下,该组拥有PowerShell中Get MailboxPermission返回的邮箱权限 使用ExchangePowerShell模块中的Get Groupcmdlet时,我会获得一些标识属性,但这些属性都无助于在Azure AD中标识同一组: DisplayName(不唯一且不可更改) SamAccountName(无法通过图形API或AzureAD PowerShell模块获得)

使用模式[Powershell]重命名目录中的所有文件

我在Windows OneDrive和我的操作系统上的很多文件重命名时遇到一些问题,如: index.js 致: 如何使用help cmd/powershell从目录中的所有文件中删除该模式 param( $targetPath = "d:\tmp", $pattern = "-DESKTOP-9T6I5F5" ) Get-ChildItem $targetPath -Recurse -File | ForEach-Object {

在PowerShell中,您可以为外部命令编写主机调用和参数吗?

在我的PowerShell(v5)中,我调用了许多外部命令,如msbuild、dotnet等(我正在编写PowerShell构建脚本) 我想记录正在运行的命令。我该怎么做 下面是一个示例,但我不想将该命令复制为Write Host语句 Write-Host "dotnet restore --source $MyNuGet --source $NuGet" dotnet restore --source $MyNuGet --source $NuGet 我希望日志中的输出为