Articles of PowerShell

无法通过winrm安装Office 2010

我试图安装Microsoft Office 2010,我已经创build了一个MSP和config.xml文件,所以我可以使用以下命令从Powershell执行此操作: Start-Process "C:\temp\Office2010\x86\setup.exe" -ArgumentList "/config `"Config.xml`" /adminfile `"custom.MSP`"" -Wait -NoNewWindow 这完美的作品。 等待setup.exe完成后,安装Office。 但是使用以下命令从远程机器运行相同的命令: Invoke-Command -computer computer -Credential user -ScriptBlock { Start-Process "C:\temp\Office2010\x86\setup.exe" -ArgumentList "/config `"Config.xml`" /adminfile `"custom.MSP`"" -Wait -NoNewWindow} 我知道命令正在执行,因为安装程序正在创build一个日志文件,但日志只是突然停止https://gist.github.com/smudgerdan/62a5e44300a9590d6174 有什么意思,winrm不会等待setup.exe来完成? 我如何通过winrm安装Office 2010?

如何检索MDT任务序列variables并在Powershell中正确使用它

我试图检索Powershell脚本中的MDT任务序列variables,然后在Powershell函数中使用该variables。 我的问题在于我想要检索的variables包含Powershellvariables,将无法正确parsing。 这是如何设置的: 在MDT中,我使用“设置任务序列variables” – 命名为“TS-Destination”和值“$($ env:systemdrive)\ dep”(不带引号)。 通过“运行Powershell脚本”任务添加一个PowerShell脚本,并以参数“-Source”Z:\ someprogram'“(不带引号)的forms运行为”%scriptroot%\ Script.ps1“(不带引号)。 在Powershell脚本中,我的问题所在的部分是这样的: 脚本的开始 [CmdletBinding()] Param( [Parameter(Mandatory=$True,Position=0)] [string]$Source, [Parameter(Mandatory=$False)] [string]$Destination ) $tsenv = New-Object -ComObject Microsoft.SMS.TSEnvironment If ($Destination -eq "") { $Destination = $tsenv.Value('TS-Destination') } Copy-Item $Source -Destination $Destination -Recurse 脚本结束 首先,我想说的是,如果我在脚本中手动设置variables,那么脚本就可以工作,但是我希望它可以根据用户的喜好轻松改变和灵活(使用参数或TSvariables)。 我觉得这将工作是它会从“TS目的地”variables的值,并在$目标variables(并解决它)中使用它,但是当脚本运行它无法parsingvariables。 它得到一个错误,名称为“$($ env)”的驱动器不存在(这是从Copy-Item的错误,因为该variables没有解决)似乎停止读取冒号后面的variables值,但我无法弄清楚为什么。 当手动排除故障并设置值(通过使用$ tsenv.Value('TS-Destination')=“$($ env:systemdrive)\ dep”),然后使用该工程并正确地parsingvariables。转义字符和设置variables,但似乎没有工作。variables是否被定义为一个[string]参数的事实防止像这样的工作? 我需要这个值才能接受variables格式,因为这个脚本在任务序列的多个部分中使用,并且在部署过程中系统驱动器发生了变化。 我可以在任务序列中多次设置variables,但是这会使任务序列复杂化,而且我希望复杂的部分在脚本中:) 所以主要的问题是: 我如何正确地工作?

如何自动创build自动注册的代码签名证书

在我的组织中,所有开发者都将通过自动注册获得代码签名证书。 另外,PowerShell是由组策略configuration的,要求所有脚本都要签名。 但是,PowerShell不信任任何代码签名证书而无需手动干预。 我看到如果根CA是可信的,是否在域中自动信任代码签名证书? 并已validation代码签名证书是根的子项,并且根在我的组织中的所有计算机上列为可信CA. 但是,根据此https://serverfault.com/a/542179 AuthentiCode(PowerShell用于validation签名的内容)不符合证书链。 所以,我不能简单地添加一个根,并完成。 我必须手动添加每个证书。 因此导致我的问题。 我如何获得所有自动注册生成的代码签名证书自动添加到“受信任的发布者”? 我所能find的所有文档都是关于如何使用组策略一次性手动执行的。 (即http://technet.microsoft.com/en-us/library/cc772491.aspx )。 我真的希望在创build自动注册证书时能够无缝地进行自动化过程。 我怎样才能做到这一点?

远程桌面服务上的注销脚本

我有一个在Server 2012 R2上运行的远程桌面服务。 我的超时设置已设置为在断开连接后60分钟结束会话。 除了一个用户外,这对所有的用户都有好处:只要他断开连接,那个用户的会话就必须结束。 我无法创build另一个集合,因为我没有第二个会话主机。 我决定创build一个超级简单的batch file,强制用户注销,例如: @ECHO off logoff f 这,由于某种原因需要pipe理员权限,并提出了提升提示。 所以在这一点上是没有问题的。 然后我创build了一个像这样的PowerShell脚本: If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { $arguments = "& '" + $myinvocation.mycommand.definition + "'" Start-Process powershell -Verb runAs -ArgumentList $arguments Break } import-module RemoteDesktop $name = [Environment]::Username $session = get-rdusersession | Where-Object -Filter {$_.username -eq $name} Invoke-RDUserLogoff -UnifiedSessionID $session.SessionID -HostServer $session.HostServer […]

使用WDS和答案文件部署具有DNSangular色的Server 2012

我想在Server 2012上使用WDS部署映像。我将尽可能使用无人值守安装的答案文件。 我的答案文件效果很好,但我不能让自动login工作和FirstLogonCommand运行。 我使用Windows映像pipe理器将Components\7 oobeSystem\amd64_ Microsoft-Windows- Shell-Setup _neutral\FirstLogonCommands到我的答案文件中,并添加了以下值: CommandLine = powershell -command Install-WindowsFeature DNS –IncludeManagementTools -IncludeAllSubFeature -Restart Description =Install dns server Order = 1 然后我做了位于Components\7 oobeSystem\amd64_ Microsoft-Windows- Shell-Setup _neutral\Autologon自动login,并添加了这些值: Domain = contoso Enabled = true LogonCount = 1 Typed the password Username = Administrator 这两个组件单独不起作用。 它安装Server 2012确定并绕过我想绕过的所有屏幕,甚至成功join域contoso。 我必须手动login,然后当我login没有脚本或任何运行。 当服务器pipe理器打开DNSangular色没有安装,甚至没有位于工具下。 我试过的东西: 以pipe理员身份打开cmd并键入: powershell -command Install-WindowsFeature DNS […]

查看物理磁盘的存储空间分配

我有一台服务器,在服务器2012 R2存储池中有四个磁盘(2个4TB和2个3TB驱动器)。 池中有两个虚拟磁盘 – 一个奇偶校验磁盘和一个镜像磁盘。 我们的想法是添加两个4TB磁盘,淘汰不匹配的3TB驱动器,然后扩展存储池容量以使用4x 4TB磁盘的额外空间。 我添加了两个额外的4TB驱动器,并成功从池中移除了3TB驱动器之一。 然而,在试图删除最后的3TB硬盘时,我被告知池中没有足够的备用硬盘来保持在线池。 咦? 所以当我去查看每个磁盘上使用的空间时,我所看到的似乎对我没有任何意义: 不知何故,目前服务器中的所有5个磁盘都被分配,并且它们的分配量(通过“空闲空间”列来判断)没有任何意义。 我期望看到3TB磁盘完全分配,三个分配了3TB和1TB的4TB磁盘,以及一个没有任何分配的4TB磁盘。 但是我真正看到的是在各地。 有没有办法看到一个特定的磁盘如何分配? 即我想在PhysicalDisk2上运行一个命令,找出为什么它只有6.75GB的未分配空间。

在共享上自动创build共享文件夹

我知道有一个组策略,我可以映射一个特定的份额。 如果我希望组策略在该共享上创build文件夹并在login时映射它,该怎么办? 我知道在PowerShell中一定有办法做到这一点。 或者我不必担心使用PowerShell? 我可以只在组策略\\servername\share\$username指定UNCpath。 我应该期望Windows自动创build文件夹并映射给用户,或者这是更复杂?

如何解决尝试从脱机Windows 8.1映像中删除设置的应用程序时出现“无法获取程序包的分阶段包”错误?

当我尝试从脱机Windows 8.1映像中删除置备的应用程序时,大多数要删除的应用程序都不会造成问题,但尝试删除Microsoft.Office.OneNote会导致错误。 以下PowerShell代码演示了这个问题。 操作系统是Windows PE 5.0。 (为什么selectWinPE?我的目标是在首次启动全新安装之前,在System Center Configuration Manager 2012 R2任务序列期间删除一些已部署的应用程序。)脱机映像是Windows 8.1,安装时已更新至2015年4月30日,以及它位于驱动器G:的根部。 PS> Get-AppxProvisionedPackage -Path G:\ … [行省略] … DisplayName:Microsoft.Office.OneNote 版本:2014.215.704.4136 架构:中立 ResourceId:〜 PackageName:Microsoft.Office.OneNote_2014.215.704.4136_neutral_〜_8wekyb3d8bbwe … [行省略] … DisplayName:Microsoft.ZuneMusic 版本:2014.228.1317.652 架构:中立 ResourceId:〜 软件包名称:Microsoft.ZuneMusic_2014.228.1317.652_neutral_〜_8wekyb3d8bbwe … PS>删除-AppxProvisionedPackage -Path G:\ -PackageName Microsoft.ZuneMusic_2014.228.1317.652_neutral_〜_8wekyb3d8bbwe path:G:\ 在线:错误 需要重新启动:False PS>删除-AppxProvisionedPackage -Path G:\ -PackageName Microsoft.Office.OneNote_2014.215.704.4136_neutral_〜_8wekyb3d8bbwe Remove-AppxProvisionedPackage:系统找不到指定的文件。 在行:1 char:1 +删除-AppxProvisionedPackage -Path G:\ -PackageName Microsoft.Office.OneNote_20 […]

如何正确部署内部自签名脚本(Powershell)

完全新的证书使用,所以要温和。 我想部署Powershell脚本,我做了其他员工的计算机,以便他们可以使用它们,但我将需要签署他们,以便他们作为默认执行策略是RemoteSigned运行。 我们很遗憾不在AD域上。 我目前的做法是安装一个带有导出的自签名CER证书文件的脚本,将脚本安装到他们的计算机上,并将证书添加到相应的证书存储区。 这虽然有一些限制(例如没有扩展属性)。 这是足够的,还是我必须由一个CA签名,每年咳嗽面团?

如何在Server 2012上使用PowerShell和Webadministration查找IIS Web应用程序依赖项

想知道是否有人可以帮助这个。 我有一些主机IIS 7.5和IIS 8.5 Web应用程序的各种types的服务器。 由于这些是生产Web应用程序和服务器,我不能在服务器上安装任何软件,所以我必须find一种方法来远程询问服务器,以检索每个Web应用程序的Windowsfunction依赖关系。 我知道我已经可以使用msdeploy来获得依赖关系,但这意味着我需要在服务器上安装msdeploy软件,我不能这样做。 另外我知道我可以使用Get-OSFeature来远程检索安装在特定服务器上的Windowsfunction。 这也没有用,因为我需要连接到Web应用程序来获得应用程序的依赖关系。 那么可以使用powershell和Get-WebConfiguration来完成,如果有的话,可以有人展示我,因为我迄今为止只能使用这种方法获得已安装的function,例如。 Get-WebConfiguration system.webServer/* 'IIS:\sites' -Recurse 谢谢