Articles of winrm

无法使CredSSP身份validation在PowerShell中工作

在尝试使用远程创buildPowerShell脚本时,遇到了我认为是双跳问题 。 在那篇文章中,Perriman给出了这个问题的简洁描述以及解决这个问题的具体步骤(如果你知道命令,那么几乎是微不足道的,但是对于像我这样不那么熟悉的人来说,这个信息是非常宝贵的)。 我在Win7服务器上运行了Enable-WSManCredSSP Server ,但没有发生意外,但是试图在我的Win7客户端上运行Enable-WSManCredSSP Client –DelegateComputer <FQDN of the server>产生了这个错误: Enable-WSManCredSSP : The client cannot connect to the destination specified in the request. Verify that the service on the destination is running and is accepting requests. Consult the logs and documentation for the WS-Management service running on the destination, most commonly IIS or […]

什么是Windows事件转发的有效目标日志

尝试在Windows 2008 R2服务器上使用自定义日志日志来存储转发事件(通过订阅)时遇到问题,自定义日志被描述为不是“有效的目标日志”。 我目前正在使用内置的事件转发和收集function(通过WS-management和wecutil)build立一个集中化Windows事件的体系结构。 我的要求之一是能够在收集器计算机上创build多个订阅,并将转发的事件存储在不同的日志文件中。 为此,我testing了创build一个自定义日志(称为CustomLog)。 此日志显示在“应用程序和服务日志”类别下的“事件查看器”中。 但是,我无法将转发的事件redirect到此CustomLog。 在事件查看器用户界面中创build订阅时,CustomLog不会显示在可能的目标列表中。 为了尝试可能的错误,我将它作为目的地的默认ForwardedEvents,我试图通过Powershell进行更改。 我运行了下面的命令,应该把目标日志设置为CustomLog: wecutil ss "Collect from both sources" /lf:CustomLog 它运行没有错误。 虽然没有事件被logging到CustomLog中,当我回到GUI来创build/修改订阅,并尝试打开我设置的订阅时,出现一个popup窗口,说明以下内容: 此计算机上的有效目标日志列表中找不到此预订中定义的目标日志。 validation此日志是否存在于计算机上,并且作为转发事件的目标是有效的。 请注意,传统日志,分析和debugging日志以及安全日志不能用作目标。 有谁知道什么是“有效的目的地日志”,以及如何将我的CustomLog变成这样一个有效的目的地?

powershell:如何检查是否在远程机器上启用SMART

我试图获取远程计算机的磁盘信息,包括是否使用win32_diskdrive类在驱动器上启用了SMART。 这比我想象的更复杂。 尽pipe读取状态属性足够简单,但我发现Capabilities属性中有一些有趣的内容 – 即表示是否有“SMART Notification”的值。 除非命令在提升的安全上下文中运行,否则不会显示此值。 因此,例如,如果我运行(gwmi win32_diskdrive).Capabilities SMART值(10)不会出现在值的数组中,但如果我运行在它出现的提升的提示。 据我所知,你不能在一个提升的背景下运行一个winrm会话(我对cheesy schtasks hacks或者psexec没有兴趣)。 那么我试图将win32_diskdrive映射到MSStorageDriver_FailurePredictStatus类。 我想我必须这样做,因为即使SMART出现在Capabilities属性中,这并不一定意味着它的启用权限? 我将win32_diskdrive的PNPDeviceID属性映射到MSStorageDriver_FailurePredictStatus的InstanceName属性,但现在我的问题是,我不认为InstanceName属性是足够独特的这个工作。 例如这里是我的InstanceName: IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0_0 它显示了接口types(IDE)型号(ST3250312AS)固件版本(JC47),我认为是某种types的唯一标识符( 5&350bf0c3&0&0.0.0 ),那么看起来像索引号(_0)。 当我谷歌5&350bf0c3&0&0.0.0它出现在驱动器上的一些信息,所以我不认为这个数字是唯一的。 这意味着唯一性是在没有包含在win32_diskdrive类的PNPDeviceID属性中的索引号中。 这是一个问题,因为我们的许多服务器有多个相同的磁盘。 我担心的是MSStorageDriver_FailurePredictStatus会代表多个磁盘: IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0_0 IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0_1 IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0_2 win32_diskdrive的PNPDeviceID属性都是IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0 如何可靠地将从win32_diskdrive检索到的对象映射到MSStorageDriver_FailurePredictStatus或者通过远程会话以MSStorageDriver_FailurePredictStatus方式执行此操作? 编辑 : 那么看起来我反应过度了。 当我检查了一堆服务器,我发现InstanceNames \ PNPDeviceIDs是这样的: SCSI\Disk&Ven_TOSHIBA&Prod_MBF2600RC\5&354ecb35&0&000200_0 SCSI\Disk&Ven_TOSHIBA&Prod_MBF2600RC\5&354ecb35&0&000300_0 如果没有人能够肯定地证实这一点,那么在一天左右,我只会假设这个价值实际上是独一无二的,并将其标记为“答案”。

使用winrm和Microsoft.Update.Session远程修补服务器时出现问题

我有一个与Windows 2003,2008和2008r2服务器的networking。 我有一个PowerShell脚本,我写了使用“Microsoft.Update”COM对象修补本地机器。 (类似于Windows Update PowerShell Remoting 。)我的脚本在本地非常有效,但是我想远程使用它的function,因为我有相当数量的服务器来pipe理。 在这种情况下,这种情况就会下降(类似于另一个没有解决的情况)。 然而,我却能够把失败的范围缩小到特定class级的两种方法。 (New-Object -ComObject "Microsoft.Update.Session").CreateUpdateDownloader() (New-Object -ComObject "Microsoft.Update.Session").CreateUpdateInstaller() 如果您以pipe理员身份在本地运行这些PowerShell,则不会有任何问题。 如果您尝试使用invoke-command(或enter-session或winrs),则会出现以下错误。 (这是使用本地主机进行testing,但任何主机都可以,我也尝试了不同的authentication方法,例如:credssp和Kerberos。 PS C:\> Invoke-Command -ComputerName localhost -ScriptBlock { (New-Object -ComObject "microsoft.update.session").createUpdateDownloader()} Exception calling "CreateUpdateDownloader" with "0" argument(s): "Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))" + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : ComMethodTargetInvocation 我曾经在博客中看到过这个bug,但没有对这个声明做任何备份。 […]

如何远程检测窗口已重新启动后完成修补程序configuration

我们计划自动为我们的构build基础设施创build虚拟机,以便我们能够: 根据需求扩展构build资源,例如在需要时添加更多构build代理,并在不需要时删除它们 当机器死亡时,重新创build全部或部分构build环境 当我们需要testing设置时复制构build环境 此过程中的一个步骤是自动创buildVM基本映像(在我们的情况下使用Hyper-V)。 为此,我们有一个脚本: 使用Convert-WindowsImage脚本从ISO创build新的VHDX。 目前我们正在使用Windows 2012R2,但一旦可用,我们将尽快开始使用。 使用我们所需的全部基本configuration将无人参与脚本添加到新的VHDX 使用Apply-WindowsUpdate脚本使用最新的Windows修补程序更新VHDX 基于VHDX创build一个新的Hyper-V VM并启动它 等待VM启动并等待WinRM服务准备好接受远程连接 等待Windows完成初始configuration和新修补程序的configuration 应用所有更多的修补程序 重新启动完成最新补丁的configuration 等待Windows完成configuration补丁 将sysprep脚本推送到机器并调用该脚本。 这将运行sysprep,然后closures机器 删除VM但保留VHDX 从VHDX中删除sysprep和unattend文件,然后压缩VHDX 将VHDX移动到模板位置并标记为只读 我们遇到的问题是在第6步和第9步。理想情况下,我们等待所有的configuration完成之前,我们重新启动/closures机器,但似乎没有一种方法来检测窗口已完成configuration阶段。 当通过用户界面时,任何一个步骤完成时都非常清楚,因为login用户界面在进程准备就绪之前不会显示出来。 但是,当使用WinRM远程连接到计算机时,这是不太清楚的,因为WinRM在完成configuration工作之前提供对计算机的访问。 所以问题是什么是最有远见的方式来检测远程连接的Windows已经完成configuration更新等,以便我们可以重新启动/closures机器,而不会导致问题以后。 ——编辑—– 最后,我们正在使用Katherine的答案的修改版本,因为我们的脚本还等待windeploy和windeploy完成。 鉴于ngen在操作系统完成初始化之后才能完成,作为奖励,最终的VHDX将拥有所有的.NET框架,这意味着当我们创build时,我们不需要处理这个框架新模板磁盘的虚拟机。 我们用来创buildVHDX模板的脚本和创build本地testing环境的脚本都在github上,以防有人感兴趣。

通过不受信任的域进行Windows远程pipe理

我目前正试图启用2个不受信任的域之间的Windows远程pipe理(特别是,Powershell远程),并没有运气。 我的设置简要说明: domain1 – 我的工作站在这个域上 域2 – 我想连接到的服务器是在这个域 这些领域之间没有信任。 我试图从我的工作站(join到domain1)使用以下命令来创buildPowershell远程连接: 参数( [参数(强制性= $真)] $服务器 ) $ username =“domain \ user” $ password = read-host“为$ usernameinput密码”-AsSecureString $ credential = New-Object System.Management.Automation.PSCredential($ username,$ password) $ session = New-PSSession“$ server”-Authentication CredSSP -Credential $ credential -UseSSL -SessionOption(New-PSSessionOption -SkipCACheck -SkipCNCheck) input-PSSession $会话 这会导致以下错误消息: New-PSSession:[computername.domain2.com]连接到远程服务器computername.domain2.com失败,并显示以下错误消息:WinRM客户端 无法处理请求。 计算机策略不允许将用户凭据委派给目标计算机,因为计算机不受信任。 目标的身份 如果使用以下命令将WSMAN服务configuration为使用有效证书,则可以validation计算机:winrm set winrm […]

从命令行回收远程IIS应用程序池?

是否有可能从命令行在不同的机器上回收IIS7应用程序池? 我find了APPCMD( appcmd recycle apppool my-app-pool ),但它只能运行在它运行的主机,AFAICT。 我听说有传闻说有可能是用Powershell做的,但我对此一无所知,而且我显然不是很擅长使用它。 如果有问题,我正在使用Vista / Server 2008。 编辑:我发现了一个叫WinRM的东西,有人声称是能够运行APPCMD本身,但我不确定如何,但。