我正在用C#编写PowerShell提供程序.提供程序通过类似驱动器的接口公开应用程序域对象.例如:
my:\Users\joe@blow.com
my:\Customers\Marty
Run Code Online (Sandbox Code Playgroud)
这些数据最终来自数据库.
我一直无法找到任何有关何时应该访问数据库以及何时应该缓存数据的指导.我发现PowerShell多次调用ItemExists和GetChildNames之类的方法; 经常反复为同一个命令.例如,仅仅因为他们点击Tab进行自动完成而去数据库5到6次是不切实际的.
但与此同时,作为命令提示符下的用户,如果我键入Get-ChildItem(dir)并查看列表,那么在PowerShell外部执行一些操作以便我知道数据已刷新,另一个目录列表应该会看到任何更改数据库.
我觉得,如果我知道用正确的术语来描述我的问题(用PowerShell的说法),我可以谷歌答案或找到一个现有的重复问题,但我卡住了.
我们有一个已部署的ASP.NET MVC 3应用程序,并在其中一个控制器操作中发现了一个错误.出于政治原因,我们不允许替换任何现有的代码,如果没有一个需要数周头痛的大流程.即我们无法重建MVC应用程序.
我们被允许部署一个新的程序集,其中包含一个只有一个固定动作的新控制器.
有没有办法添加或编辑MVC应用程序的路由来映射新的控制器操作?
我正在考虑将我的MVC应用程序子类化在修复程序DLL中并更新global.asax以引用子类应用程序.
public class HotfixApplication : RealApplication
{
public override void Init()
{
base.Init();
var badRoute = RouteTable.Routes.Where(...);
var badRoute.FixIt();
}
}
Run Code Online (Sandbox Code Playgroud)
它将路由到修补程序DLL中的控制器操作.
这听起来有道理吗?安全?
我在文件中有一些PowerShell帮助函数.我想让它们可用于我正在编写的另一个文件的范围,但不会污染全局范围.
Helpers.ps1
function global:Helper1
{
# this function pollutes the global scope
}
function Helper2
{
# this function is not visible to the Utility.ps1 file.
}
Run Code Online (Sandbox Code Playgroud)
Utilities.ps1
&{
./Helpers.ps1
function global:Utility1
{
Helper1
}
function global:Utility2
{
Helper2
}
}
Run Code Online (Sandbox Code Playgroud)
我发现了这个问题: 如何动态创建父作用域中可访问的函数?但答案讨论了将功能添加到全局范围.我真正想做的是将Helper函数从一个PS1文件提供给调用的PS1文件,而不会使用帮助程序污染全局范围.
我想避免将函数定义为变量,这可以使用Set-Variable和-Scope参数.我见过的最接近的(来自链接线程)在函数:drive中使用Set-Item.
任何帮助,将不胜感激!
编辑:这是从迈克的答案扩展的解决方案
Helpers.ps1
function Helper
{
}
Run Code Online (Sandbox Code Playgroud)
Utilities.ps1
&{
function global:Utility
{
. ./Helpers.ps1
Helper1
}
}
Run Code Online (Sandbox Code Playgroud)
使用点源语法加载Helpers.ps1将其内容放在Utility函数的范围内.将Helpers.ps1放在Utility函数之外会使它位于&{...}范围内,但是一旦定义了函数,该范围就会结束.
我已经在我的两个Web域上成功地将SSO与WIF集成在一起.现在我要求某些用户使用SSO登录,而其他用户不使用SSO.我怎么能做到这一点?
非常感谢你的帮助,
谢谢
Shahram Javed
是否有任何工具可以从命令行编辑PhotoShop文件?
我想为我们的自动构建过程(MS Build)添加步骤,该过程采用我们的艺术家制作的原始PhotoShop文件并生成.png文件; 我正在看一些像photoshop-to-png,调整大小以及可能显示/隐藏图层的操作.我没有很幸运找到一个可以用于此的工具.
如果可以使用Photoshop本身或Photoshop实用程序编写脚本,那就太棒了.
HttpContext.Items仍然被认为是在请求的不同部分之间共享内容的合理位置吗?特别是HttpHandler在MVC之外,就像WIF扩展点一样.
你如何从MVC4的ApiController中访问这个词典?不使用HttpContext.Current静态方法(我仍然希望它单元可测试).普通控制器有HttpContextBase/Wrapper,它抽象了一点进行测试.
以下关于"非管理员用户实例"的"SQL Server 2008 R2"页面顶部有一个注释,内容如下:
将在Microsoft SQL Server的未来版本中删除此功能.避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序.
http://msdn.microsoft.com/en-us/library/ms143684.aspx
这个功能的未来是什么?会完全放弃吗?取而代之的是另一个功能?SQL Server Compact版本是否意味着填补这个空间?
凹凸.没有人?有没有人使用用户实例功能?
是否可以在另一个窗口内运行 Windows 应用程序(打开顶级窗口)?或者设置一个拥有该窗口的备用“桌面”/假桌面?
我正在使用 UI 自动化来自动化应用程序进行测试。我想将正在测试的应用程序放在一种沙箱中:桌面和应用程序之间的人工父窗口,或伪桌面,第二个桌面等。此桌面(以及正在测试的应用程序)不需要可见。
被测应用程序的不同实例(在普通桌面上或沙箱中)不应相互冲突(窗口名称/类明智)——被测应用程序可以安全地拥有多个实例...
我意识到这看起来有些 hackish,所以 win32 hacks 会受到欢迎。:)
在PowerShell中,我需要更改系统路径变量:
$oldPath = [System.Environment]::GetEnvironmentVariable('Path', 'Machine')
[System.Environment]::SetEnvironmentVariable('Path', (Transform-It $oldPath), 'Machine')
Run Code Online (Sandbox Code Playgroud)
然后启动一个程序:
& $someExeName 'someargument'
Run Code Online (Sandbox Code Playgroud)
我得到的问题是可执行文件正在使用旧环境.它无法识别新路径.如果我也更改$env.path,要仅更改此PowerShell会话的路径,它也不会传播到新进程.如果我关闭PowerShell并在新窗口中启动可执行文件,那很好.据推测,它继承了PowerShell流程中的(未更新的)环境.
在PowerShell中更改环境变量并通过从该窗口启动的新进程识别它的最佳实践是什么?
有人可以解释jQuery源文件中使用的以下语法吗?我正在学习jQuery并试图深入编写jquery.ui.widget.
(function ($)
{
... code ...
} (jQuery));
Run Code Online (Sandbox Code Playgroud)
我在使用jQuery时,我认为这只是一个JavaScript问题.
谢谢,克雷格
powershell ×3
windows ×2
asp.net ×1
asp.net-mvc ×1
javascript ×1
jquery ×1
photoshop ×1
wif ×1
winapi ×1