小编Gre*_*ray的帖子

如何在运行时通过脚本检查PowerShell中是否存在cmdlet

我有一个需要在多个主机(PowerGUI,PowerShell ISE等)下运行的PowerShell脚本,但我遇到的问题是有时某个主机下不存在cmdlet.有没有办法检查是否存在cmdlet,以便我可以将代码包装在if块中,并在不存在时执行其他操作?

我知道我可以使用它$host.name来划分在每个主机上运行的代码,但我更愿意使用功能检测,以防将来添加cmdlet.

我也可以使用try/catch块,但由于它在托管代码中运行,我假设有一个检测是否通过代码安装了cmdlet.

powershell powershell-2.0

50
推荐指数
3
解决办法
3万
查看次数

$ {env:ProgramFiles(x86)} Powershell变量在32位/ x86系统上包含什么?

简单的问题:

如果我在32位系统上的PowerShell脚本中使用$ {env:ProgramFiles(x86)}变量,它会返回"C:\ Program Files"还是未定义?

在x64系统上,当在x64和x86模式下运行时,它将映射到"C:\ Program Files(x86)".我没有要测试的32位系统,但我希望它将映射到"C:\ Program Files"文件夹,这样我就可以用它来引用任何系统上的x86程序.

powershell x86

17
推荐指数
1
解决办法
3万
查看次数

System.Windows.Forms.WebBrowser在相同窗口或新窗口中打开具有相同会话的链接

使用.NET WebBrowser控件时如何使用相同的会话在新窗口中打开链接(即..不要在服务器上启动新的ASP.NET会话),或者如何捕获新窗口事件到在同一个WebBrowser控件中打开URL?

.net browser session popup new-window

12
推荐指数
1
解决办法
3万
查看次数

Powershell相当于Bash Brace Expansion用于生成列表/数组

编写Bash脚本时,您可以使用大括号扩展来快速生成列表:

Bash Brace扩展

在Powershell中生成类似列表的最简单方法是什么?我可以使用..或者运算符来生成数组,但是如何使用静态字符串文字为项添加前缀?

PS C:\Users\gb> 1..5
1
2
3
4
5

PS C:\Users\gb> "test"+1..5
test1 2 3 4 5

PS C:\Users\gb> "test","dev","prod"
test
dev
prod

PS C:\Users\gb> "asdf"+"test","dev","prod"
asdftest dev prod
Run Code Online (Sandbox Code Playgroud)

arrays powershell brace-expansion

11
推荐指数
2
解决办法
2504
查看次数

由KB2918614引起的MSI错误"计算机必须受信任以进行委派"

我们有一个基于MSI的安装程序,最近停止在Windows 2008 R2环境中工作.使用\\servername\c$\admin UNC共享将安装程序复制到目标计算机,然后使用WMI Win32_Process类上的create方法远程执行.远程执行现在失败,并在事件查看器中显示以下错误消息:

找不到来自源MsiInstaller的事件ID 10837的描述.引发此事件的组件未安装在本地计算机上,或者安装已损坏.您可以在本地计算机上安装或修复该组件.

如果事件源自另一台计算机,则必须随事件一起保存显示信息.

活动中包含以下信息:

产品:我们的产品名称 - 无法完成所要求的操作.必须信任计算机以进行委派,并且必须将当前用户帐户配置为允许委派.

搜索后看起来这是由最近发布的Windows Installer安全补丁引起的.当我卸载KB2918614时,安装程​​序再次开始工作,如果我重新安装KB2918614,MSI将再次停止工作.

错误消息表明要解决此问题,我们必须让域管理员使用Active Directory用户和计算机编辑目标计算机以允许委派,但MSI不使用任何远程资源,所以我不明白为什么这是需要.相同的MSI和远程执行过程在Windows Server 2012上运行正常,所以我想知道这是否是2008 R2补丁的问题.

有没有其他方法来解决此错误消息?

更新:这似乎不是WMI远程执行的问题,因为当我们尝试使用Powershell,WinRM和Invoke-Commmand -ComputerName TargetComputer ...cmdlet 远程安装MSI时也会出现这种情况.安装KB2918614后,2008 R2上的Windows Installer的工作方式发生了变化,现在阻止自定义操作完成它的任务.

wmi windows-installer windows-server-2008-r2

11
推荐指数
2
解决办法
2万
查看次数

Amazon Elastic Block Storage(EBS)和Microsoft Azure Drives之间的差异

我一直在寻找使用Amazon EC2或Microsoft Azure来托管新项目,并计划使用Amazon EBSMicrosoft Azure Drives来存储用于运行ASP.NET网站的文件.据我所知,这两种技术非常相似,都提供了一个由云存储(Amazon S3Azure Blob)支持的虚拟硬盘.随着EC2和EBS的最近中断(请参阅Post Mortem),我想了解更多关于EBS如何与Azure驱动器进行比较的信息.特别:

  1. 我知道Azure驱动器可以作为读/写在单个实例上安装,也可以在多个实例上以只读方式安装.EBS也是如此吗?我还听说过Microsoft Azure Drives可以使用SMB协议在多个实例上读/写模式使用.有人有这方面的经验吗?

  2. 甚至在今天停电之前,有很多人抱怨亚马逊EBS的可靠性.我甚至听到一些人使用多个EBS卷来创建类似RAID的系统,这对我来说似乎很愚蠢.Microsoft Azure Drives与EBS相比有多可靠?

  3. 我相信EBS和Microsoft Azure驱动器都允许您拍摄快照,这些快照可用于备份或安装到VM实例并在不更改原始卷的情况下进行修改.这是升级在多个实例上运行的网站的合理方法(例如:创建快照,部署更改,然后在所有实例上以只读方式挂载)

这些只是我的一些基本问题,但我很乐意听到任何有Amazon EBS和Microsoft Azure Drives经验的人.

amazon-ec2 azure amazon-ebs azure-storage

8
推荐指数
1
解决办法
1万
查看次数

任何托管版本的jQuery都设置了"Access-Control-Allow-Origin:*"标头?

我最近一直在使用jQuery并遇到一个问题,我无法将其包含在用户脚本中,因为XmlHttpRequest使用相同的源策略.经过进一步测试后,我发现大多数浏览器还支持W3C定义的跨源资源共享访问控制,作为同源策略问题的解决方法.我通过在包含Access-Control-Allow-Origin: *http标头的本地Web服务器上托管jQuery脚本来测试这一点,该标头允许使用XmlHttpRequest下载脚本,以便它可以包含在我的用户脚本中.我想在发布脚本时使用托管版本的jQuery,但到目前为止使用http://www.seoconsultants.com/tools/headers等工具进行测试我还没有发现任何允许跨域访问的网站jQuery脚本.这是我到目前为止测试的列表:

是否有任何其他托管版本的jQuery允许跨源访问?我知道,jQuery的通常是通过脚本标签(有时是动态创建的脚本标签)加载,但在这个特定的情况下,我不得不使用XMLHttpRequest和eval,以确保它被装载到正确的范围.谷歌Chrome浏览器支持用户脚本,但不支持@require,这意味着使用的唯一途径,在谷歌浏览器用户脚本jQuery的是将它嵌入到.user.js文件或负载并通过的XmlHttpRequest EVAL它.嵌入是一个不太理想的解决方案,虽然Chrome扩展程序允许您将jQuery js文件包含在扩展中,但我更喜欢使用用户脚本,因为它们更简单,并且可以在多个浏览器中运行.我已经提交了Google Ajax APIjQuery团队的门票,允许跨域访问CDN,但我的猜测是我现在必须自己托管它.

jquery same-origin-policy

7
推荐指数
1
解决办法
7623
查看次数

使用列级WHERE子句更新多列中的所有SQL NULL值?

我们有一个包含大量宽表(每个40-80列)的数据库,并且发现了一个将NULL值引入大约500条记录的错误.NULL值可以出现在任何列中(都是整数列,请参见下图)但这些NULL值导致我们的报告系统之一无法轻易更改.我们需要用特定的静态值(在本例中为99)替换NULL值,但由于这个更改必须基于每列超过250个不同的列,我宁愿不编写更新每个列的单个TSQL脚本一个人.

我的大脑现在太过于思考一个聪明的解决方案,所以我的问题是如何使用简单易读的SQL查询在表(或更好的多个表)上的所有列上执行此任务.我可以使用WHERE (Answer_1 IS NULL) OR (Answer_2 IS NULL) OR ...每个表的链或甚至每个表的AdministrationID号来容易地隔离记录,但是当更新为where子句是每行而不是每列时,这个技巧将不起作用.有什么建议?

以下是一个示例查询,显示了来自4个不同表的一些记录: 样品

sql t-sql sql-server sql-server-2005 sql-update

7
推荐指数
2
解决办法
4万
查看次数

写入转储文件时出现Procdump错误:0x80070005错误0x80070005(-2147024891):访问被拒绝

最近,我们在尝试捕获2012 R2服务器上的各种IIS应用程序池的内存转储时遇到了问题.我已尝试使用任务管理器,但它会生成错误,以及在管理控制台中使用procdump:

PS C:\Users\_______\Downloads> procdump -mA 31016

ProcDump v7.1 - Writes process dump files
Copyright (C) 2009-2014 Mark Russinovich
Sysinternals - www.sysinternals.com
With contributions from Andrew Richards

[19:59:22] Dump 1 initiated: C:\Users\____\Downloads\w3wp.exe_161008_195922.dmp
[19:59:25] Dump 1 writing: Estimated dump file size is 29278 MB.
[20:01:15] Dump 1 error: Error writing dump file: 0x80070005
Error 0x80070005 (-2147024891): Access is denied.

[20:01:15] Waiting for dump to complete...
[20:01:17] Dump count not reached.
Run Code Online (Sandbox Code Playgroud)

我已经尝试了-ma和-mA以及-64和procdump64的各种组合,但是对于使用超过~16GB内存的工作进程,它们都具有相同的Access被拒绝错误.

我还尝试添加-r来反映/克隆该过程,如下所述:快速获取ASP.NET应用程序池的内存转储但仍然得到与上面相同的错误消息.

更新:因此,默认情况下,如果IIS应用程序池在90秒内未响应正在进行的内部ping请求,则它们将被回收.您可以在高级设置中看到此信息:

90秒Ping最大响应时间

并且大约90秒后出现错误消息,因此可能是问题的原因.

iis procdump

7
推荐指数
1
解决办法
3357
查看次数

创建全景控制截图

微软全景控制是对Windows Phone 7个的应用程序进行布局和导航的常用方法.在许多博客和评论中,您将找到在一个图像而不是单个部分中显示整个全景控件的屏幕截图.有没有办法从XAML代码自动创建这些,或者你只需​​要使用图像编辑软件合并单个图片?

screenshot windows-phone panorama-control

6
推荐指数
1
解决办法
1654
查看次数