小编Ωme*_*Man的帖子

使用脚本中的参数调用第二个脚本

我对PowerShell比较陌生,并且有一个脚本可以读取一个配置文件,该文件会产生一组名称值对,我希望将它们作为参数传递给第二个PowerShell脚本中的函数.

我不知道在设计时将在此配置文件中放置哪些参数,所以就在我需要调用第二个PowerShell脚本时,我基本上只有一个变量具有第二个脚本的路径,第二个脚本变量,它是要传递给路径变量中标识的脚本的参数数组.

因此,包含第二个脚本($ scriptPath)路径的变量可能具有如下值:

"c:\the\path\to\the\second\script.ps1"
Run Code Online (Sandbox Code Playgroud)

包含参数($ argumentList)的变量可能类似于:

-ConfigFilename "doohickey.txt" -RootDirectory "c:\some\kind\of\path" -Max 11
Run Code Online (Sandbox Code Playgroud)

如何从这种状态到使用$ argumentList中的所有参数执行script.ps1?

我希望来自第二个脚本的任何write-host命令对于调用此第一个脚本的控制台是可见的.

我尝试过dot-sourcing,Invoke-Command,Invoke-Expression和Start-Job,但我还没有找到一种不会产生错误的方法.

例如,我认为最简单的第一条路线是尝试按如下方式调用Start-Job:

Start-Job -FilePath $scriptPath -ArgumentList $argumentList
Run Code Online (Sandbox Code Playgroud)

...但是由于此错误而失败:

System.Management.Automation.ValidationMetadataException:
Attribute cannot be added because it would cause the variable
ConfigFilename with value -ConfigFilename to become invalid.
Run Code Online (Sandbox Code Playgroud)

...在这种情况下,"ConfigFilename"是第二个脚本定义的参数列表中的第一个参数,我的调用显然试图将其值设置为"-ConfigFilename",这显然是为了按名称标识参数,没有设定它的价值.

我错过了什么?

编辑:

好的,这是一个名为invokee.ps1的文件中的待调用脚本的模型

Param(
[parameter(Mandatory=$true)]
[alias("rc")]
[string]
[ValidateScript( {Test-Path $_ -PathType Leaf} )]
$ConfigurationFilename,
[alias("e")]
[switch]
$Evaluate,
[array]
[Parameter(ValueFromRemainingArguments=$true)]
$remaining)

function sayHelloWorld()
{
    Write-Host "Hello, everybody, the config file is <$ConfigurationFilename>."
    if ($ExitOnErrors)
    {
        Write-Host "I should …
Run Code Online (Sandbox Code Playgroud)

powershell parameter-passing command-line-arguments invoke-command start-job

57
推荐指数
5
解决办法
16万
查看次数

选择中的SQL用户定义函数

我在SQL中有一个名为getBuisnessDays的用户定义函数,它需要@startdate和@enddate,并返回两个日期之间的工作日数.如何在我的选择中调用该函数?

这就是我想要做的......

SELECT getBusinessDays(a.opendate,a.closedate) 
FROM account a
WHERE ...
Run Code Online (Sandbox Code Playgroud)

sql sql-server select user-defined-functions

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

我应该在数据库连接字符串中设置最大池大小吗?如果我不这样做会怎么样?

这是我的数据库连接字符串.到目前为止我没有设置最大池大小.

public static string srConnectionString = 
                       "server=localhost;database=mydb;uid=sa;pwd=mypw;";
Run Code Online (Sandbox Code Playgroud)

那么目前我的应用程序支持多少个连接?增加连接池大小的正确语法是什么?

该应用程序是用C#4.0编写的.

sql connection-string connection-pooling sql-server-2008

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

如何将更改从一个分支移动到另一个分支git?

如何将我的工作和更改从master分支移动到新创建的分支,并在移动后保持主分支完整?

git

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

由于处于Internet或Restricted区域或在文件上具有Web标记,因此无法处理文件resx

我在Visual Studio 2017中调试c#API编码时遇到问题.调试未启动并显示错误消息

在此输入图像描述

有关此错误消息的任何想法?请帮忙.

c# api

51
推荐指数
9
解决办法
5万
查看次数

使用String.Join将数组转换为字符串后从字符串中删除多余的逗号(C#)

这里有个问题.我正在使用String.Join将数组转换为字符串.我遇到的一个小问题是,在数组中,一些索引位置将为空白.一个例子如下:

array[1] = "Firstcolumn"
array[3] = "Thirdcolumn"
Run Code Online (Sandbox Code Playgroud)

通过使用String.Join(",",array);,我将得到以下内容:

Firstcolumn ,, Thirdcolumn

注意额外的,.如何在使用String.Join时从字符串中删除额外的逗号,或者理想情况下不包含空索引?

c# string join

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

如何使用"使用PowerShell运行"执行PowerShell脚本时在另一个PowerShell脚本中调用函数

我开始使用PowerShell并在'库'文件中创建函数以提高可读性,然后我从'worker'脚本调用它.

function ShowMessage($AValue)
{
  $a = new-object -comobject wscript.shell
  $b = $a.popup( $AValue )
}
Run Code Online (Sandbox Code Playgroud)

在PowerShell IDE中运行'worker'脚本时工作正常,但是当我右键单击worker文件并选择'Run with PowerShell'时,它找不到函数'ShowMessage'.两个文件都在同一个文件夹中.请问这里可能会发生什么?

powershell function

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

使用PowerShell解压缩子串

如何使用PowerShell提取子字符串?

我有这个字符串......

"-----start-------Hello World------end-------"
Run Code Online (Sandbox Code Playgroud)

我必须提取......

Hello World
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?

string powershell-2.0

46
推荐指数
6
解决办法
24万
查看次数

什么是比较参考类型的两个实例的"最佳实践"?

我最近遇到过这种情况,到目前为止,我一直在愉快地重写等于运算符(==)和/或Equals方法,以查看两个引用类型是否实际包含相同的数据(即两个看起来相同的不同实例).

我一直在使用它,因为我已经进行了更多的自动化测试(比较参考/预期数据与返回的数据).

在查看MSDN中的一些编码标准指南时,我遇到了一篇建议反对它的文章.现在我理解为什么文章说这个(因为它们不是同一个实例)但它没有回答这个问题:

  1. 比较两种参考类型的最佳方法是什么?
  2. 我们应该实施IComparable吗?(我还看到提到这应该仅为值类型保留).
  3. 有一些我不知道的界面吗?
  4. 我们应该自己动手吗?!

非常感谢^ _ ^

更新

看起来我错误地阅读了一些文档(这是漫长的一天)并且压倒Equals可能是要走的路.

如果要实现引用类型,则应考虑在引用类型上覆盖Equals方法(如果类型看起来像基本类型,如Point,String,BigNumber等).大多数引用类型不应重载等于运算符,即使它们重写等于.但是,如果要实现旨在具有值语义的引用类型(例如复数类型),则应覆盖相等运算符.

.net c# comparison equality operator-overloading

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

在ViewModel中使用CollectionViewSource的正确方法

我使用Drag和Drop将Data Source对象(一个DB模型)绑定到DataGrid(基本上遵循WPF实体框架数据绑定中的这个示例).

这个实现一切正常.

XAML

<Window.Resources>    
<CollectionViewSource x:Key="categoryViewSource"  
    d:DesignSource="{d:DesignInstance {x:Type local:Category}, CreateList=True}"/>
</Window.Resources>
<Grid DataContext="{StaticResource categoryViewSource}">
..
Run Code Online (Sandbox Code Playgroud)

代码背后

private void Window_Loaded(object sender, RoutedEventArgs e)
{
   System.Windows.Data.CollectionViewSource categoryViewSource =
      ((System.Windows.Data.CollectionViewSource)(this.FindResource("categoryViewSource")));

  _context.Categories.Load();
  categoryViewSource.Source = _context.Categories.Local;        
}
Run Code Online (Sandbox Code Playgroud)

视图模型

public MainWindow()
{
    InitializeComponent();
    this.DataContext = new MyViewModel();
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在ViewModel中使用相同的代码时,它不起作用(FindResource不可用),此外,我不认为这是正确的方法(即x:Key在MVVM中使用).

我真的很感激任何帮助点我是什么来实现的正确途径CollectionViewSource,并DataBindingDataGrid.

c# wpf datagrid mvvm collectionviewsource

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