Tag: powershell

PowerShell是否编译脚本?

假设我有一个简单的PowerShell脚本: 1..3 | Write-Host PowerShell如何处理它? 它是构建内存中的程序集还是一些临时的.dll文件? 我可以使用一些工具(例如ILSpy,VS,WinDbg)检查这个程序集和MSIL吗? PowerShell是否以相同的方式处理文件脚本和REPL命令行输入(即编译/解释)? 我可以将此编译的程序集与C#和其他.Net语言一起使用吗? PS脚本可以编译为本机二进制代码吗?

指定内容的构建操作 – Nuget

告诉Nuget包将所有css文件添加为嵌入式资源(即构建操作是嵌入式资源)的最简单方法是什么。 我试图通过工具文件夹中的install.ps1来实现它,但仍然无法到达任何地方 注意:我正在从目录结构(tools \ content \ lib)创建包 这是我的install.ps1,它不起作用。 param($installPath, $toolsPath, $package, $project) $MsbNS = @{msb = ‘http://schemas.microsoft.com/developer/msbuild/2003’} function EmbeddContent($ProjectLink, [string]$XPath) { $nodes = @(Select-Xml $XPath $ProjectLink -Namespace $MsbNS | Foreach {$_.Node}) foreach ($node in $nodes) { if($node.Include.StartsWith(“Content\css”)) { $cet = $node.ownerdocument.CreateElement(“EmbeddedResource”) $cet.setAttribute(“Include”, $node.Include) $parent = $node.ParentNode [void]$parent.RemoveChild($node) [void]$parent.Appendchild($cet) } } } $project.Save() $fileLocation = $project.FileName […]

以编程方式安装证书吊销列表(CRL)

我需要每周下载并安装大约50个CRL,并将它们安装在多个Windows服务器上。 下载是一个简单的部分,有没有办法编写CRL导入过程的脚本?

如何将.cs文件转换为PowerShell cmdlet?

任何人都可以帮我将C#.NET程序转换为PowerShell cmdlet吗? 我对这个领域很新。 请帮我走出这个检查站! 问候, 阿伦

什么是PowerShell中的Linq.First等价物?

下面的代码片段从文件列表中检测到哪些文件是Ftp上的目录 作为C#,它将如下所示 var files = new List(){“App_Data”, “bin”, “Content”}; var line = “drwxr-xr-x 1 ftp ftp 0 Mar 18 22:41 App_Data” var dir = files.First(x => line.EndsWith(x)); 我如何在PowerShell中转换最后一行?

自动化EF-Migrations“Update-Database -Script”

我正在使用EF迁移来跟踪我们的EF代码优先数据库模型的更改。 现在我需要为每次迁移生成一个SQL脚本,以便我可以将这组脚本传递给DBA。 我能用Update-Database -Script …生成SQL脚本Update-Database -Script … 但是,我想自动化这个。 我希望-Script开关接受一个指定SQL编写位置的参数,但事实并非如此。 此外,输出重定向不起作用,因为SQL脚本不会写入STDOUT,而是写入临时文件。 我认为无法从脚本中获取该临时文件。 有关如何自动化迁移 – > SQL脚本生成的任何想法? 也许有一些我不知道的神奇的PowerShell技巧? 编辑:顺便说一句,使用migrate.exe或任何其他“迁移感知”方法不是一个选项,交付SQL脚本是必须的。

使用Runspace Factory for Powershell会产生错误

我在下面使用这一行得到了以下错误,在我开始在这家新公司工作之前,我从未见过它。 System.PlatformNotSupportedException:此平台不支持ReflectionOnly加载。 在System.Reflection.Assembly.ReflectionOnlyLoadFrom(String assemblyFile) 在System.Management.Automation.Runspaces.RunspaceConfigForSingleShell.LoadMshSnapinAssembly(PSSnapInInfo mshsnapinInfo) 在using语句中发生错误。 我在Windows 2008 R2上使用Visual Studio 2017。 using (Runspace runspace = RunspaceFactory.CreateRunspace()) { runspace.Open(); PowerShell ps = PowerShell.Create(); ps.Runspace = runspace; PSSnapInException psex; runspace.RunspaceConfiguration.AddPSSnapIn(“Citrix*”, out psex); Pipeline pipeline = runspace.CreatePipeline(); Command getSession = new Command(“Get-XASession”); getSession.Parameters.Add(“-ComputerName”, serverName); getSession.Parameters.Add(“-AccountDisplayName”, objWINS + “\\” + strUser); pipeline.Commands.Add(getSession); Collection output = pipeline.Invoke(); }

在C#中使用PowerShell处理CimObjects

我有一个执行PowerShell脚本的代码段 using (var ps = PowerShell.Create()) { ps.AddScript(“function Test() { return Get-Disk -Number 0 } “); ps.Invoke(); ps.AddCommand(“Test”); var results = ps.Invoke(); var disk = results.First(); MyDisk myDisk = // do something to convert disk to myDisk } Debuggin,它得到他的内部disk : 我该如何处理这个对象( CimObject )? 我想从“名称”和“数字”属性中获取值。 只是为了澄清,我想要处理的对象与此类型相同(作为管理员运行到PowerShell) PS C:\windows\system32> $disk = Get-Disk -Number 0 PS C:\windows\system32> $disk.GetType(); […]

TFS 2015 api使用PowerShell从池中删除代理

我正在努力暂时从池中删除代理,在代理所在的构建服务器上安装新软件,测试它是否有效,然后再将代理添加到池中。 我想以编程方式执行此操作,无论是使用PowerShell还是不可能,然后使用C#执行此操作。 问题是我找不到任何可以帮助我这样做的文档,无论是通过TFS rest api还是通过visual studio附带的工具。 所以我特别要问的是:如何从构建池中删除命名代理,以及如何将命名代理添加回构建池。 我基本上想要的是进入TFS的Web管理和取消选中/检查池上的代理的相同function。 编辑 – > 当我尝试使用starain-msft提供的信息启用/禁用代理时,我收到以下错误:Invoke-RestMethod:404 – 找不到文件或目录。 服务器错误 编辑 – > 删除了大部分错误,因为我发现该问题存在于我的公司代理中请阅读: https : //www.visualstudio.com/en-us/docs/integrate/get-started/rest/basics#http-method-覆盖 但是我在starain-msft的帮助下得到了它。 最终解决方案如下所示: Function TFSwebRequest{ param ( [ValidateNotNullOrEmpty()] [Parameter(Mandatory=$true)] [string] $Uri, [ValidateNotNullOrEmpty()] [Parameter(Mandatory=$true)] [string] $Method, [ValidateNotNullOrEmpty()] [string] $ContentType, [ValidateNotNullOrEmpty()] [string] $ContentBody, [ValidateNotNullOrEmpty()] [System.Net.WebHeaderCollection] $Headers ) # Creating Webrequest from Uri $webRequest = [System.Net.HttpWebRequest]::CreateHttp($Uri) $webRequest.UseDefaultCredentials […]

ImportPSModule故障检测

我试图使用InitialSessionState.ImportPSModule来导入Powershell模块。 我有兴趣知道模块的导入是否由于任何原因(例如找不到文件等)而失败。 将这些代码放在try块中不会在出现故障时引发exception,并且该函数似乎无声地失败并且如果无法导入模块则继续。 如果导入失败,有没有办法在代码中发出警报? 我正在尝试做类似以下的事情。 在下面的代码中,模块“TestModule1234”不存在。 catch块没有捕获exception。 注意:这只是原型测试代码,因此请忽略任何与生产代码相关的违规行为。 try { //Initializing the PowerShell runspace InitialSessionState psSessionInitialState = InitialSessionState.CreateDefault(); LogFile.Log(“Importing Module TestModule1234”); psSessionInitialState.ImportPSModule(new[] { “TestModule1234” }); LogFile.Log(“Creating Powershell Runspace”); m_PoshRunspace = RunspaceFactory.CreateRunspace(psSessionInitialState); } catch (System.Exception ex) { LogFile.Log(“Failed to create a Powershell Runspace”); LogFile.Log(ex.ToString()); throw; }