Articles of PowerShell

从多个XML中提取数据并生成CSV报告–PowerShell

我有几个连接string是XML文件。 我需要使用以下输出生成一个使用所有这些连接string的CSV报告: 下面是我的PS脚本工作正常的1个文件,并给我所需的输出。 我一直在玩,使其适用于所有的文件 function extractValues ($string, $values){ return ($values | %{ $string -match "$_=([^;]+)" | Out-Null; $matches} | %{$_[1]}) } [string]$Value1 = '/connectionStrings/add[@name="Value1"]/@connectionString' [string]$Value2 = '/connectionStrings/add[@name="Value2"]/@connectionString' [string]$Value3 = '/connectionStrings/add[@name="Value3"]/@connectionString' $files = Get-Childitem –Path C:\inetpub\wwwroot\*\ConfigSections\connectionStrings.config.New.config foreach ($file in $files) { [xml]$xml = Get-Content $file $connectionString = ($xml | Select-Xml -XPath $Value1).ToString() ($serverName, $dbName, $user) = […]

如果匹配(如果存在),则从ini创build输出到powershell,然后跳过

我正在尝试使用PSIni ( Get-IniContent )从.ini文件中提取数据。 我有一个工作的格式,但生成太多的数据。 我的ini文件如下所示: [General settings] gensetting1=random gensetting2=random gensetting3=random [KPROD] setting1=1 setting2=2 setting3=3 setting4=4 [KTEST] setting1=1 setting2=2 setting3=3 setting4=4 [KDEV] setting1=1 setting2=2 setting3=55 setting4=4 我想从[General settings]排除任何东西在我的输出中填充。 因为他们显示空白,因为我不需要收集这些信息,我在下面的代码中指定。 我唯一能看到的数据是[KPROD]键和值, 但如果[KDEV]和[KTEST]的值不同,我想显示不匹配的值。 这是我现在的代码: Import-Module psini $ini = Get-IniContent "D:\PShell\SF\871753.ini" Foreach ($key in $ini.keys) { Write-Host $key ; Write-Host "Settings1 and Settings2 are set to:" ($ini[$key].GetEnumerator() | […]

New-InboxRule不会将电子邮件复制到文件夹| Exchange 365 Powershell

我有一个使用Exchange 365的小企业。 我正在尝试为其中一个用户设置一个规则,通过这个规则,他们发送给特定客户端的任何电子邮件都将被处理到一个文件夹中。 例如: [email protected]发送邮件“Hello”给[email protected] 发送的电子邮件“Hello”的副本被保存到; 用户:\收件箱\ CLIENTNAME 我曾尝试使用PowerShell命令; New-InboxRule "UserToClient" -From "[email protected]" -SentTo "[email protected]" -MoveToFolder "user:\Inbox\ClientName" 规则创build好(没有错误消息),但它不起作用。 有任何想法吗? PS。 我已经尝试在365上设置Outlook 2016,OWA和Exchangepipe理控制台上的相同的规则,并没有一个似乎工作,这就是为什么我使用PowerShell。 谢谢

如何使用PowerShellpipe理Hyper-V Cluser

我有2台主机都与Server 2016 Datacenter 在每个主机上,我有2个虚拟机当前使用共享存储的Dev 我可以做所有的集群事情,即实时迁移,移动存储, 我一直在寻找一个脚本,以便能够同时保存群集中的所有虚拟机。 如果我运行这个: $clusterNodes = Get-ClusterNode; $Name = ForEach($item in $clusterNodes){Get-VM -ComputerName $item.Name; } {save-VM -ComputerName $item.Name; } 它将保存虚拟机的然而,它会提示我两次为每个主机虚拟机的名称。 我的最终目标是能够从一台PC重新configuration群集中的所有虚拟机,而虚拟机的移动也非常多,所以它们并不总是在同一台主机上。 例: 保存所有的虚拟机 移动共享存储器的位置: Set-VM pv02 -SnapshotFileLocation C:\ClusterStorage\Volume1\pv02 Set-VM pv02 -SmartPagingFilePath C:\ClusterStorage\Volume1\pv02 Set-VMHardDiskDrive -VMName pv02 -ControllerType SCSI -Path C:\ClusterStorage\Volume1\pv02\pv02.vhdx 启动虚拟机 如果我单独login到每个主机,命令将运行良好,但是在我的生产中,我有7台主机,大约有100个虚拟机。

公钥authenticationOpenSSH的Windows端口

我一直在尝试将Public Key Authentication与OpenSSH的PowerShell端口一起使用到运行Windows Server 2012 R2的虚拟机上。 我有信心遵循安装说明 ,并确保我的文件权限是正确的.ssh\authorized_keys 。 (无法发布链接到Win32-OpenSSH wiki中的特定指令,因为我发布的链接太less,不能发布两个以上的链接,请参阅下面的评论)。 我可以按照预期的用户名/密码从linux主机login到Windows主机。 但是,密钥authentication没有运气。 本地(linux主机)configuration 我的本地 .ssh/config文件包含: Host remotehostname HostName remotehostname User remoteuser Port 22 IdentityFile /home/myusername/.ssh/id_dsa 本地.ssh目录中的权限显示正确: [[email protected]]$ ls -ltrh total 56K -rw——- 1 cengadmin cengadmin 1.6K Sep 11 10:01 known_hosts -r——– 1 cengadmin cengadmin 672 Sep 11 10:06 id_dsa -r——– 1 cengadmin cengadmin 580 […]

Get-NetAdapterBinding失败并出现一般错误

在pipe理员提示符的PowerShell中,我不带任何参数运行Get-NetAdapterBinding ,并得到: Get-NetAdapterBinding : A general error occurred that is not covered by a more specific error code. At line:1 char:1 + Get-NetAdapterBinding + ~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (MSFT_NetAdapterBindingSettingData:ROOT/StandardCi…dingSettingData) [Get-NetA dapterBinding], CimException + FullyQualifiedErrorId : MI RESULT 54024,Get-NetAdapterBinding 为什么是这样? 系统是Windows 10 32位物联网企业1607.它在其他Windows 10机器上工作正常。

Invoke-Command(PSSessionStateBroken)上的WSMan错误

我有一个奇妙地使用Invoke-Command cmdlet运行进程并从另一台服务器获取信息的脚本。 每隔几个星期脚本错误与下面的错误: [IP] Connecting to remote server <IP> failed with the following error message : The WSMan service could not launch a host process to process the given request. Make sure the WSMan provider host server and proxy are properly registered. For more information, see the about_Remote_Troubleshooting Help topic. + CategoryInfo : OpenError: (<IP>:String) […]

从Powershell更改MS SQL Server数据库大小

我需要使用Powershell来自动更改MS SQL 2014实例上的数据库大小。 目前,我们执行以下手动步骤。 打开SQL Server Management Studio 连接到实例 用鼠标右键单击数据库上的属性 selectFiles页面 将ROWS Data和LOG数据库文件的Initial Size值加倍 Powershell如何执行此操作? Powershell远程处理不是必需的。 这可以从SQL服务器主机执行。

需要PowerShell远程会话客户端用户权限?

尝试使用PowerShell New-PSSession命令连接到远程服务器时遇到问题。 我使用的命令是: New-PSSession -ComputerName $MachineName -Credential $VmCred -Authentication Negotiate 其中$MachineName是远程服务器的主机名(而不是FQDN)(即“myserver”), $VmCred是我之前创build的凭证对象。 目标服务器是干净的安装,没有join域。 除了启用防火墙规则允许WinRM之外,安装后没有更改。 如果我在Windows Server 2012 R2(使用PowerShell 4)中的会话中运行PS-Command,而我是一个拥有高权限的pipe理员(但不是域pipe理员),则可以连接。 所以我知道,这在远程系统上不是问题,而是在本地系统上。 我的本地系统是使用PowerShell 5的Windows 7。在这里,我有我的常规非pipe理用户和本地pipe理员。 两者都是域帐户。 另外,在具有PowerShell 4和非Admin用户的Windows Server 2012 R2上,错误也是一样的。 如果我尝试在Windows 7上执行上面的命令,则会出现此错误(对不起,某些部分是德语): New-PSSession : [MyServer] Connecting to remote server MyServer failed with the following error message : Der WinRM-Client kann die Anforderung nicht verarbeiten. Derzeit ist […]

使用powercli排队VMware虚拟机vMotion

我编写了这个快速的Powershell脚本,它将VM的vMotion排队,并且一次只运行4个vMotion任务。 我认为这可能会帮助别人,所以你可以自由地修改代码。 我们正在将虚拟机迁移到2个不同的数据存储库,以便在一夜之间进行DR操作 我已经在脚本中添加了评论,但如果您有任何疑问,请在下面评论。 我相信这可以以更好的方式完成,但是这是一个很快的事情,因为我不得不离开它,所以虚拟机在一夜之间迁移。 帮助我的主要命令是获得任务。 我不知道为什么我不需要为vMotion指定主机,但是虚拟机已迁移到正确的主机,也许DRS处理