是否可以在另一台机器上从命令行回收 IIS7 应用程序池?
我找到了 APPCMD ( appcmd recycle apppool my-app-pool),但它只能在运行它的主机上运行,AFAICT。
我听说有一种方法可以用 Powershell 做到这一点,但我对此一无所知,而且我显然不擅长谷歌搜索。
如果重要的话,我使用的是 Vista / Server 2008。
编辑:我发现了一个叫做WinRM 的东西,有人声称它可以自己运行 APPCMD,但我还不确定具体是如何运行的。
我想使用 bat 文件在我的所有客户端中配置 winrm。运行 bat filewinrm quickconfig命令后,会提示是/否答案。我不知道如何在批处理文件中回答“是”。
我目前正在尝试在 2 个不受信任的域之间启用 Windows 远程管理(特别是 Powershell 远程处理),但没有成功。
我的设置的简要说明:
这些域之间不存在信任。
我正在尝试从我的工作站(加入 domain1)使用以下命令创建 Powershell 远程连接:
参数 (
[参数(强制=$True)]
$服务器
)
$username = "域\用户"
$password = read-host "输入 $username 的密码" -AsSecureString
$credential = 新对象 System.Management.Automation.PSCredential($username, $password)
$session = New-PSSession "$server" -Authentication CredSSP -Credential $credential -UseSSL -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck)
Enter-PSSession $session
这会导致以下错误消息:
New-PSSession : [computername.domain2.com] 连接到远程服务器 computername.domain2.com 失败并显示以下错误消息:WinRM 客户端
无法处理请求。计算机策略不允许将用户凭据委派给目标计算机,因为该计算机不受信任。目标的身份
如果您使用以下命令将 WSMAN 服务配置为使用有效证书,则可以验证计算机: winrm set winrm/config/service '@{CertificateThumbprint=""}' 或
您可以在事件查看器中检查指定无法创建以下 SPN 的事件:WSMAN/。如果您发现此事件,您可以使用手动创建 SPN
setspn.exe 。如果 SPN 存在,但 CredSSP … 在尝试使用远程处理创建 PowerShell 脚本时,我遇到了我认为的双跳问题。在那篇文章中,Perriman 简要描述了问题以及解决问题的具体步骤(如果您知道命令,那几乎是微不足道的,但对于像我这样不太熟悉的人来说,这些信息非常宝贵!)。
我Enable-WSManCredSSP Server在我的 Win7 服务器上运行Enable-WSManCredSSP Client –DelegateComputer <FQDN of the server>时没有发生任何意外,但尝试在我的 Win7 客户端上运行时产生了这个错误:
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 WinRM. If the destination
is the WinRM service, run the following com mand on the …Run Code Online (Sandbox Code Playgroud) 我有一个带有 Windows 2003、2008 和 2008r2 服务器的网络。我有一个 powershell 脚本,我编写它来使用“Microsoft.Update”com 对象修补本地机器。(类似于 Windows 更新 PowerShell 远程处理。)我的脚本在本地运行良好,但我想远程使用它的功能,因为我有相当数量的服务器需要管理。在这种情况下,它会掉下来(类似于没有解决的其他帖子)。
然而,我能够将失败缩小到特定类的两种方法。
(New-Object -ComObject "Microsoft.Update.Session").CreateUpdateDownloader()
(New-Object -ComObject "Microsoft.Update.Session").CreateUpdateInstaller()
Run Code Online (Sandbox Code Playgroud)
如果您以管理员身份在本地的 powershell 中运行这些,则不会有任何问题。如果您尝试使用 invoke-command(或 enter-session 或 winrs),您将收到以下错误。(这是使用 localhost 进行测试,但任何主机都可以。我还尝试了不同的身份验证方法,例如 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
Run Code Online (Sandbox Code Playgroud)
我在博客上看到这是一个错误,但没有备份该声明。存在两种解决方法,但都不让我高兴。
我对在主机上远程运行更新的其他方法持开放态度,因为这似乎是很多人都遇到的问题。
我找到了 …
powershell windows-server-2003 windows-server-2008 windows-update winrm
我已通过执行以下命令禁用了服务器上 winrm 服务的协商身份验证:
winrm put winrm/config/service/Auth @{Negotiate="false"}
Run Code Online (Sandbox Code Playgroud)
现在我可以使用 winrm 执行任何操作。我收到错误:
Message = The WinRM client cannot process the request. The WinRM client trie
d to use Negotiate authentication mechanism, but the destination computer (local
host:47001) returned an 'access denied' error. Change the configuration to allow
Negotiate authentication mechanism to be used or specify one of the authenticat
ion mechanisms supported by the server. To use Kerberos, specify the local compu
ter name as the remote destination. Also verify that the …Run Code Online (Sandbox Code Playgroud) 我们计划为我们的构建基础架构自动创建 VM,以便我们可以:
此过程中的步骤之一是自动创建 VM 基础映像(在我们的示例中使用 Hyper-V)。为此,我们有一个脚本:
我们遇到的问题是在第 6 步和第 9 步。理想情况下,我们在重新启动/关闭机器之前等待所有配置完成,但似乎没有一种方法可以检测到 Windows 已完成配置阶段。
在浏览 UI 时,任何一个步骤何时完成都非常清楚,因为登录 UI 在进程准备就绪之前不会显示。然而,当使用 WinRM 远程连接到机器时,这不太清楚,因为 WinRM 在完成配置工作之前提供了对机器的访问。
所以问题是通过远程连接检测 …
我在尝试使用自定义日志日志在 Windows 2008 R2 服务器上存储转发的事件(通过订阅)时遇到问题,自定义日志被描述为不是“有效的目标日志”。
我目前正在使用内置的事件转发和收集功能(通过 WS-management 和 wecutil)建立一个用于集中 Windows 事件的架构。
我的要求之一是能够在收集器机器上创建多个订阅并将转发的事件存储在不同的日志文件中。为此,我测试了创建自定义日志(称为 CustomLog)。此日志出现在“应用程序和服务日志”类别下的事件查看器中。
但是,我无法将转发的事件重定向到此 CustomLog。在事件查看器用户界面中创建订阅时,CustomLog 不会出现在可能的目的地列表中。
为了尝试可能出错的地方,我将默认的 ForwardedEvents 作为目的地,并尝试通过 Powershell 更改它。我运行了以下命令,该命令应该将目标日志设置为 CustomLog:
wecutil ss "Collect from both sources" /lf:CustomLog
Run Code Online (Sandbox Code Playgroud)
它运行没有错误。但是,CustomLog 中没有记录任何事件,当我返回 GUI 创建/修改订阅并尝试打开我设置的订阅时,我会收到一个弹出窗口,说明以下内容:
在此计算机上的有效目标日志列表中找不到此订阅中定义的目标日志。验证此日志是否存在于计算机上并且作为转发事件的目的地有效。请注意,经典日志、分析和调试日志以及安全日志不能用作目标。
有谁知道什么是“有效的目标日志”以及如何将我的 CustomLog 变成这样一个有效的目标?
我试图获取远程机器的磁盘信息,包括是否使用 win32_diskdrive 类在驱动器上启用了 SMART。
这比我想象的要棘手。虽然读取 status 属性很容易,但我在 Capabilities 属性中发现了一些有趣的东西——即表示“智能通知”是否可用的值。除非该命令在提升的安全上下文中运行,否则不会出现此值。因此,例如,如果我运行 (gwmi win32_diskdrive).Capabilities SMART 值 (10) 尚未出现在值数组中,如果我在提升的提示中运行它,它确实会出现。据我所知,您无法在提升的上下文中运行 winrm 会话(而且我对俗气的 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
它显示接口类型 (IDE) 型号 (ST3250312AS) 固件版本 (JC47) 我认为是某种唯一标识符 ( 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
Run Code Online (Sandbox Code Playgroud)
而所有这些的 win32_diskdrive 的 PNPDeviceID 属性就是
IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0
如何MSStorageDriver_FailurePredictStatus通过远程会话可靠地将从 win32_diskdrive 检索到的对象映射到powershell 或以另一种方式执行此操作? …
我正在尝试winrm在 Windows 机器上配置https 侦听器。早些时候我遵循了WinRm https 侦听器配置
上述解决方案对我有用。
但是现在我已经删除了监听器并想再次使用配置 winrm
winrm quickconfig -transport:https但我无法做到这一点,因为它的抛出错误
WSManFault
消息 = 无法在 HTTPS 上创建 WinRM 侦听器,因为此计算机没有适当的证书。要用于 SSL,证书必须具有与主机名匹配的 CN,适用于服务器身份验证,并且未过期、撤销或自签名。
即使删除 https 侦听器,我也无法进行快速配置。我觉得需要从某个地方删除指纹,但不确定从哪里删除。
我浏览了 Jared 指出我们需要手动删除指纹的链接之一:自动重新配置 WinRM HTTPS 侦听器
winrm ×10
powershell ×5
windows ×4
credssp ×1
forwarding ×1
https ×1
iis ×1
iis-7 ×1
remoting ×1
smart ×1
unattended ×1
wmi ×1