我想在已经存在的2个其他节点之间插入一个节点。
在我的脚本中,我收到一个xml变量,我想更新这个变量
例:
结果应该是:
当我使用appendChild时,插入总是在末尾完成
一个主意
谢谢 我建议使用appendChild是您的问题-它会将节点追加到列表的末尾
Prehaps您可以使用InsertBefore或InsertAfter来代替(假设您可以获得对所需插入点任一侧的节点的引用)
有关或上的文档,请参见MSDN。正如@Grhm所回答的,您可以通过InsertAfter来完成。我建
这似乎是一个非常基本的事情要做,但我是新的PowerShell,不能明白这一点,或找到一个在线的例子
我正在尝试筛选字符串列表。此字符串列表是“svn list”命令(存储库文件的Subversion列表)的结果,如:
我试过了
svn list -R PATHTOREPOSITORY | where {$_ -like "stringtomatch"}
这是行不通的。如何修复它?使用:
svn list -R PATHTOREPOSITORY | where {$_ -like "*stri
我是PowerShell和TFS cmdlet的新手,我正在尝试检索区域路径中的变更集列表及其关联的工作项
从某个日期起,我已经列出了变更集:
Get-TfsItemHistory "$/Project/Branch" -Version “D01/12/10~” -Recurse
并列出自同一日期起的工作项:
Get-TfsItemHistory "$/Project/Branch" -Version "D01/12/10~" -Recurse | %{ $_.workitems }
每个
以下的相反功能是什么
$tmp = $domain.split(".")
换句话说,如何将数组转换为字符串。我听说过“加入”,但我无法让它发挥作用
非cmdlet,非quest,这必须与PowerShell v1和所有旧系统一起使用 Powershell中有一个连接操作符:
$result = [string]::join(".", $array)
$tmp -join "."
除了连接运算符(在v2中引入)和.NET连接方法外,还可以将特殊变量(Ouptut字段分隔符)的值更改为
要获取文件,方法如下所示:
$ftprequest.Method = [System.Net.WebRequestMethods+Ftp]::DownloadFile
因此,我试图将该方法更改为等效于下面的C代码:
request.Method = System.Net.WebRequestMethods.Ftp.GetDateTimestamp;
如何在powershell中使用GetDateTimestamp
我已经尝试了以下变化,但没有任何运气:
$ftprequest.Metho
在Win2008R2上的PowerShell 2.0中,如果我希望从注册表项获得与“REG QUERY”以可读格式提供给我的相同的输出,以及特定注册表项的值,如下所示:
reg query hkcu\Software\Microsoft\CharMap
HKEY_CURRENT_USER\Software\Microsoft\CharMap
Advanced REG_DWORD 0x0
CodePage REG_SZ Unicode
Fon
该脚本工作正常,将在服务器上的打印机之间切换,并确定打印机是否共享(TRUE)。但是,如果服务器上的最后一台打印机碰巧没有共享,则会出现问题,然后将共享打印机更改为(False)。这会扭曲电子表格中的结果,说明该服务器虽然是打印服务器,但不是打印服务器。我需要了解如何创建一个循环,说明如果我们在服务器上找到一台共享打印机,请停止搜索并将服务器放置在标记为打印服务器的电子表格中
我想加入一些类似于
$Printers=gwmi Win32_打印机-computername$StrComputer
我使用下面的行创建一个新的事件日志
new-eventlog -LogName "Visual Studio Builds" -Source "Visual Studio"
Get-EventLog -list | Where-Object {$_.logdisplayname -eq "Visual Studio Builds"}
我希望每次都运行它,因为如果我从新计算机运行构建,我仍然希望看到事件日志
问题是,每次在创建日志后运行脚本时,都会抛出一个错误
新建事件日志:“Visual
在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 Server 2012中各种GUI组件(例如,在磁盘管理中)所完成的几乎所有“实际工作”都是通过调用Powershell来执行的。(也就是说,在GUI中没有任何事情是Powershell无法完成的。)
在您使用GUI时,能够查看和/或收集Windows执行的各种Powershell操作将非常有价值。您可以打开此功能,执行需要执行的配置工作,然后将其关闭,从而生成一个或多个Powershell脚本,自动完成您刚才手动完成的操作。(当然,脚本可能会以各种方式进行参数化。)
我正在运行以下查询以获取视频驱动程序版本号
Get-WmiObject Win32_videoController | where {$_.Name -like "Nvidia*"} | Format-table -HideTableHeaders DriverVersion
它返回我想要的数据加上大约4行额外的数据。输出前一个,输出后三个。它看起来不会在帖子中正确出现
PS F:\>
Get-WmiObject Win32_videoController | where {$_.Na
如果我编写以下代码,并且如您所见,我使用Get Member,则会得到null:
$UserToAdd = New-Object psobject
$UserToAdd | Add-Member -membertype NoteProperty -Name "Name" -Value ([adsi]$_.path).name[0]
$UserToAdd | Add-Member -membertype NoteProperty -Name "Email" -Value ([adsi]$_.pat
我正在尝试使用powershell命令在Azure上创建Windows 7虚拟机
$dclocation = 'East Asia'
$cloudSvcName = 'MyNewCloudServiceName'
$image = '03f55de797f546a1b29d1b8d66be687a__Windows-7-Enterprise-x64-en.us-201407.01'
$adminPassword = 'Admin@123'
$vmname = 'MyVMName'
New-
我想替换“,*”。下面的命令不起作用。请帮忙
$inputmatch = ",<*abc*>,<*>,<*abc*>,<*abc*>"
$inputmatch = $inputmatch -replace "^\,\<\*","\*\<"
$inputmatch = $inputmatch -replace "\*\>$","\>\*"
$inputmatch=“,,,”
$inputmatch=$inpu
我用行填充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中制作一个脚本,以帮助轻松转换如下路径:
H:\MyDoc.docx
\\FileServer\UserShares\Organization\Department\Me\MyDoc.docx
进入其真正的绝对路径,如下所示:
H:\MyDoc.docx
\\FileServer\UserShares\Organization\Department\Me\MyDoc.docx
在这种情况下,我在本地计算机上创建了一个网络驱动器映射,指向H:\到\\FileSer
好的,我是powershell的新手,所以我正在做一个简单的练习,从ipconfig命令中提取ipv4和v6。我要起诉这个命令
$ip = (ipconfig | select-string ipv4) -split ":",2 | select -last 1
我不敢相信,仅仅获取ipv4并分配给var就这么困难。有人知道更简单的方法吗
谢谢简单的一行:
$ipv4 = ( Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerNa
我有以下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 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的最后一个表中显示上一个命令对象。我明白我并没有很好地解释自己,所以我会举一些例子:)
这会让我得到这样的结果:
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
我正在尝试用PS对阵列进行排序。我试图解决的问题是返回一个复制VM列表和一些基本统计数据
在阅读了大量的网站和建议后,我能得到的最好的脚本如下:
$myArray = @()
$vms = get-vm | where-object { $_.replicationstate -ne "Disabled" }
foreach ($vm in $vms)
{
$vmRepl = Get-VMReplication
$replfreq = (New-TimeSpan -seco
有谁能解释一下下面两种说法的区别吗
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脚本。问题是,我已经开始学习PS 5小时前-一旦我的老板告诉我被分配到这个任务。我有点担心明天不能完工,所以希望你们能帮我一点忙。任务是:
我需要根据特定条件将文件移动到不同的文件夹,让我从he文件夹结构开始:
c:\LostFiles: This folder includes a long list of .mov, .jpg and .png files
c:\Media: This folder includes many s
在C#中,我有以下代码以文本方式运行脚本
在脚本中,我只是执行以下cmdlet
Get-WebsiteState -Name "Default Web Site"
每次执行脚本时,我的记忆力都在不断提高。诚然,这最终将成为一个更大的脚本的一部分,该脚本不仅仅完成这一个功能,但似乎IIS命令的任何组合最终都会占用越来越多的内存。我试图:
直接在脚本中调用[System.GC]::Collect()
将Get WebsiteState-Name“Default Web Site”分配给一个变
我遇到了以下问题:
当我运行一个内部有连接的查询时,systemproperty“\uuuu PATH”为空。当我在没有连接的情况下运行它时,一切正常:
工作:
输出:“\SCCM\root\SMS\site\u CMT:SMS\u Application.CI\u ID=16781953”
不工作:
我的问题:
有人能解释一下为什么这条路是空的吗?
非常感谢,在非工作示例中,您是否从$apps获得任何输出?实际上,我认为您的问题是WQL不支持联接。实际上,我有点惊讶Get WmiObject没
作为一个更大脚本的一部分,我正在制作一个服务器名引用列表,其中应该包含我们基础架构中的所有服务器。为此,我有4个服务器名来自不同系统(AD、SQL等)的阵列,我计划使用以下方法将它们连接在一起:
$Refrencelist = $var1.Name + $var2.Name + $var3.Name + $var4.Name | Select-Object -Unique
尽管这主要起到了作用,但我仍然在结果列表中看到一些重复项,从我收集的数据来看,这是因为SQL$var中.Name属性的M
我对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 |
简而言之,我想连接到运行虚拟机的服务器,然后获取所有已安装机器的列表,我用于此操作的命令是:
Invoke-Command -ScriptBlock {enter-pssession -ComputerName <name>}; Invoke-Command -ScriptBlock {Get-VM} | select-Object -Property name
此命令获取服务器上当前VM的列表,并返回这些服务器的特定属性
但是,由于连接在建立之前需要很短的时间,因此“get vm
如何从手动输入的驱动器号中删除冒号
$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文件。基本思想是我有一堆文件,其中文件名由三部分组成:
第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文件节点中的值
例如,在SectorDesc节点中,将“&”替换为“and”
<?xml version="1.0" encoding="UTF-8"?>
<OrganisationUnits>
<OrganisationUnitsRow num="8">
<OrganisationId>ACME24/7HOME</OrganisationId>
<O
我尝试了几种将ISO文件转换为.VHD文件的方法(使用MVMC工具和powershell中的Hyper-V模块),但部署时转换的.VHD文件在azure中不起作用。
我正在寻找将ISO文件转换为.VHD文件并将其部署到azure的最佳方法 如果您的ISO是针对Linux发行版的,Azure需要在上载之前准备映像。在这种情况下,我会按照官方文档中的说明进行操作(即创建虚拟机,按照说明进行修改,上传)
如果您的ISO是针对Windows版本的,那么创建SYSPREP的VHD似乎是一种有效的方法。我在
在脚本中运行此命令时,它不会将输出写入屏幕,但在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-ippowershell-remotingnetwork-printers
我需要通过JetDirect协议(Tcp IP端口9100)查询打印机
我已经编写了连接和断开连接的代码,但对于输入和读取数据,我遇到了一些问题:(
结果
TcpDestNodes IsOpen Latency Query
------------ ------ ------- -----
printer.local:9100 True 0,7065 {}
我的代码
function Connect-TcpHost (
[Parameter(ValueFromPi
我被困在一个点上,我有两个像这样的数组变量
$name=@(“A”、“B”、“C”)
$roll=@(“1”、“2”、“3”)
我正试图用这些数据制作一个csv文件。我正在使用这个代码
$name = @("A","B","C")
$roll = @("1","2","3")
$report = New-Object psobject
$report | Add-Member
如何通过Visual Studio Online(TFS)中的Azure资源模板(Web应用程序、Sql Server等)设置对Azure订阅的访问以在那里调配资源?这将授予在TFS上运行发布定义的代理访问权限。现在它在Get AzureRmContext处中断,需要调用Login AzureRmAccount。但这应该是无需弹出登录窗口的自动部署。通过TFS中的“Azure应用程序服务部署”任务,我们可以连接Azure订阅(不可能用于Powershell任务)。是否应该成立一个政府?TFS代理
标签: Powershell
code-signingbuild-automationazure-pipelines
我有一个自托管的构建代理,用于从VSTS构建.NET 4.7.2应用程序。在我的管道中,我使用Squirrel.Windows构建了一个安装程序,除了二进制文件的签名和随后的安装程序外,其他一切都运行顺利
代理在nt授权/网络服务下运行
该用户的个人证书存储中安装了正确的证书
下面是我的powershell脚本中打包安装程序的部分:
function Squirrelify{
param(
$AppName,
$BuildConfiguration,
$Binarie
我收到了一个PowerShell脚本,它执行该脚本以安装位于同一目录中的可执行文件。这将打包到SCCM(System Center Configuration Manager)中进行部署。但是,如果在包部署期间,推送包的临时控制器在文件路径中的任何位置都有空间,则部署将失败
例如:
C:\temp\deployment--这将通过,软件将安装
C:\temp\deployment1\--由于部署和1之间的空间,此操作将失败
C:\temporarydirectory\deployment\-由于
我正在构建一个简单的Powershell脚本,该脚本递归地循环遍历一个目录,并从特定文件夹中删除“My”前缀,但我似乎无法实现这一点。
我可以列出目录只是罚款,但重命名项目没有影响
任何帮助都将不胜感激
Clear-Host
pushd
$homeDrivesDir = 'E:\test\users'
$reportmode = $false
foreach($homeFolder in (Get-ChildItem -Recurse $homeDrivesDi
非常有用-当我使用$CSVInfo=Import CSV c:\datatable.CSV
当我从命令行打开变量时,没有返回任何内容。为什么会这样?没有道理 我正在Excel中打开并编辑CSV。在被难倒了很长一段时间后,我在记事本+中打开它并检查了一遍。编码是UTF-8
我把它改成了ANSI,瞧!当询问命令行($CSVInfo中包含的内容时,返回了数据。您不必更改文件的编码,只需使用函数的-encoding参数:Import Csv-Path C:\datatable.Csv-encoding
我有一个文件(.txt),其内容的每行格式如下:
<Name> <IPAddress>
如何有效地将IP地址读入阵列?以上评论的意思是,您应该展示您的工作、您研究的内容、您有问题的地方等。因为您是PowerShell新手,所以其他人可以猜测您可能知道或不知道的内容
例如,您知道如何读取文件、解析文件、使用正则表达式、pscustomobject等吗
$datafile = @'
Tampa Server 10.73.202.91
Hollywood
我有一个powershell脚本,它将进行soap调用,并执行以下操作:
1.连接到承载WSDL的服务器(在应用程序术语中称为单元)
2.在其中创建事件(警报)。
3.断开与承载WSDL的服务器的连接(在应用程序术语中称为单元)
我想创建这个脚本的perl版本。。它执行相同的精确操作,请帮助我提供函数和示例。或者,如果可能的话,用perl重写下面的脚本。
提前非常感谢您:
PS脚本如下所示:
====================================================
函数可以正常工作,但不能与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
你能帮我解决下面的问题吗
1.我已经在Azure DevOps中配置了CI
2.在CD中,我需要Powerhell或任何脚本,以便在部署之前删除Azure应用程序服务文件夹。
3.我也知道工藤的流程,但这个流程是手动的。
$WebAppName=“插入Web应用名称”
$slotName=“插入插槽名称”
$username='从发布配置文件插入用户名'#从发布配置文件
$password=“从发布配置文件插入密码”#从发布配置文件
#初始化Invoke rest方法的参数
$apiUrl=“h
我将带有新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
我有一个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 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
我希望唯一标识Exchange Online中使用的组,以便我可以在Azure AD中找到相同的组。在我的情况下,该组拥有PowerShell中Get MailboxPermission返回的邮箱权限
使用ExchangePowerShell模块中的Get Groupcmdlet时,我会获得一些标识属性,但这些属性都无助于在Azure AD中标识同一组:
DisplayName(不唯一且不可更改)
SamAccountName(无法通过图形API或AzureAD PowerShell模块获得)
我在Windows OneDrive和我的操作系统上的很多文件重命名时遇到一些问题,如:
index.js
致:
如何使用help cmd/powershell从目录中的所有文件中删除该模式
param(
$targetPath = "d:\tmp",
$pattern = "-DESKTOP-9T6I5F5"
)
Get-ChildItem $targetPath -Recurse -File | ForEach-Object {
在我的PowerShell(v5)中,我调用了许多外部命令,如msbuild、dotnet等(我正在编写PowerShell构建脚本)
我想记录正在运行的命令。我该怎么做
下面是一个示例,但我不想将该命令复制为Write Host语句
Write-Host "dotnet restore --source $MyNuGet --source $NuGet"
dotnet restore --source $MyNuGet --source $NuGet
我希望日志中的输出为