小编Ani*_*esh的帖子

Powershell:在html报告的顶部显示一次表头

我正在尝试创建一个电子邮件报告,以显示失败/成功备份作业的列表.

这是我的脚本:

$servers = @(gc config\dbs.txt)
foreach($server in $servers)
{
  $dt = new-object "System.Data.DataTable"
  $cn = new-object System.Data.SqlClient.SqlConnection "server=$server;database=msdb;Integrated Security=sspi"
  $cn.Open()
  $sql = $cn.CreateCommand()
  $sql.CommandText = $(get-content config\query.sql)
  $rdr = $sql.ExecuteReader()
  $dt.Load($rdr)
  $cn.Close()
  $dt |ft Server,RunStatus,JobName >> $log
  $dt | ConvertTo-Html Server,JobName,RunStatus -head $a | ac logs\backups\report.htm    
}

Server      JobName     RunStatus
srv1        job1        success
srv1        job2        success
Server      JobName     RunStatus
srv2        job1        fail
srv2        job2        success
srv2        job3        success
Server      JobName     RunStatus
srv3        job1        fail
srv3        job2        success
srv3        job3 …
Run Code Online (Sandbox Code Playgroud)

powershell powershell-2.0

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

While循环中的DateTime.AddDays.我错过了什么?

我有一个日期时间对象,dt它保存今天的日期.

DateTime dt = DateTime.Today;
DateTime idt = new DateTime();
Run Code Online (Sandbox Code Playgroud)

我需要在循环到达当前年度的最后一天时打印日期,如下所示:
345 more days to 12/31/2012

如果我这样做的话

while (dt.AddDays(i).Year == dt.Year) 
{
    idt = dt.AddDays(i);
    i++;
}
Console.WriteLine("{0} more days to {1}", i, idt.ToString("d")); 
Run Code Online (Sandbox Code Playgroud)

我能够像我想要的那样打印: 345 more days to 1/1/2012

我想避免dt.AddDays(i)在上面的部分重复.如果我这样做:

while (idt.Year != dt.Year + 1)
{
    idt = dt.AddDays(i);
    i++;
}
Console.WriteLine("{0} more days to {1}", i, idt.ToString("d"));
Run Code Online (Sandbox Code Playgroud)

或者这样:

while (idt.Year < 2013)
{
    idt = dt.AddDays(i);
    i++;
} 
Console.WriteLine("{0} more days to {1}", …
Run Code Online (Sandbox Code Playgroud)

c#

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

搜索列表列表

我有这样的数据列表

data = [['A',11],['A',22],['B',14],['C',23],['C',31],['B',12]]
Run Code Online (Sandbox Code Playgroud)

我将这些独特的项目放在另一个列表中,如下所示:

search=[]
for item in data:
    if search.count(item[0]) == 0:
        search.append(item[0])

# search contains ['A', 'B', 'C']
Run Code Online (Sandbox Code Playgroud)

如何使用列表搜索data列表search并生成类似的输出?

['A', [11,22]]
['B', [14,12]]
['C', [23,31]]
Run Code Online (Sandbox Code Playgroud)

python

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

当我尝试使用C#Lambda扩展方法All时,我收到以下错误

private void EnsureCurrentlyValid()
{
    //I'm valid if IDataErrorInfo.this[] returns null for every property
    var propsToValidate = new[] { "Name", "Email", "Phone", "WillAttend" };
    bool isValid = propsToValidate.All(x => this[x] == null);
    if (!isValid)
        throw new InvalidOperationException("Can't submit invalid GuestResponse");
}
Run Code Online (Sandbox Code Playgroud)

'System.Array'不包含'All'的定义,并且没有扩展方法'All'接受类型'System.Array'的第一个参数可以找到(你是否缺少using指令或汇编引用?)C:\dev的\ ASPNET\PartyInvites \型号\ GuestResponse.cs


我错过了什么?

asp.net-mvc

0
推荐指数
1
解决办法
361
查看次数

Console.ReadKey正在退出之前处理最后一项

我有一个很小的命令行实用程序,它读取用户输入并将所有输入添加到列表中.Esc按下该键后,程序退出.但是,按下该Esc键后,即使Escape键也被添加到列表中,然后程序退出.

如何防止将Esc密钥添加到列表中?

码:

    ConsoleKeyInfo cki;
    List<string> stuffs = new List<string>();

    Console.WriteLine("Press Escape (Esc) to quit the program.");

    do {
        cki = Console.ReadKey();
        stuffs.Add(cki.Key.ToString());
        Console.WriteLine();
    } while(cki.Key != ConsoleKey.Escape);

    Console.WriteLine("You have entered the following data:");

    foreach(string stuff in stuffs)
        Console.WriteLine(stuff);
Run Code Online (Sandbox Code Playgroud)

c# console-application

0
推荐指数
1
解决办法
1052
查看次数

在notepad ++ regex中匹配所有出现的html元素属性

我有一个文件,有这样的数百个链接:

<h3>aspnet</h3>
<a href="http://example.com/1" icon="data:image/png;base64,iwl1zecylifzn3fz9fr3l4cdjqhigcmjo9m">Ex 1</a>
<a href="http://example.com/2" icon="data:image/png;base64,ivborw0kggoaaaansuheugaaaqcayaaaaf8">Ex 2</a>
<a href="http://example.com/3" icon="data:image/png;base64,jmiaw+f2pwdohka6t+hnyfanbkwoa1olmug">Ex 3</a>
Run Code Online (Sandbox Code Playgroud)

所以我想删除所有元素

icon="data:image/png;base64,ivborw0kggoaaaansuheugaaabaaaaaqcayaaaaf8..."

来自各方面.我浏览了官方的Notepad ++正则表达式wiki,经过几次试验后得出了这个结论:

icon=\"[^\.]+\"
Run Code Online (Sandbox Code Playgroud)

问题是,它选择超过第二个双引号并在下一个双引号处停止.为了说明,这将选择以下内容:

icon="data:image/png;base64,...jbvebich4sec9zgth1sfue1cdt...">EX 1</a> <a href="
Run Code Online (Sandbox Code Playgroud)

如果我修改上面的正则表达式,

icon=\"[^\.]+\">
Run Code Online (Sandbox Code Playgroud)

然后它几乎是完美的,但它也选择了>:

icon="data:image/png;base64,...jbvebich4sec9zgth1sfue1cdt...">
Run Code Online (Sandbox Code Playgroud)

我正在寻找的正则表达式将选择如下:

icon="data:image/png;base64,...jbvebich4sec9zgth1sfue1cdt..."
Run Code Online (Sandbox Code Playgroud)

我也试过以下,但它根本不匹配

icon=\"[^\.]+\"$
Run Code Online (Sandbox Code Playgroud)

regex notepad++

0
推荐指数
1
解决办法
1346
查看次数

当没有元素匹配条件时的谓词行为

当我尝试这个:

Month1Value = 
    g.Where(i => DateTime.ParseExact(i.Period, fmt, cult).Month == lastMonth)
    .FirstOrDefault()
    .Value
Run Code Online (Sandbox Code Playgroud)

如果上个月有数据,我得到的Value分配就好了.如果没有值,我会得到这个例外:

你调用的对象是空的

但是,如果我将以上内容更改为:

Month1Value = 
     g.Where(i => DateTime.ParseExact(i.Period, fmt, cult).Month == lastMonth)
     .Select(x=>x.Value)
     .FirstOrDefault()
Run Code Online (Sandbox Code Playgroud)

如果没有匹配元素,我会得到零,就像我想要的那样.

这两种写lambda表达式的方法有什么区别?

SSCCE:

void Main() {
    var currentMonth = DateTime.Now.Month;
    var currentTimeStamp = DateTime.Now;

    int lastMonth = currentTimeStamp.AddMonths(-1).Month; // 9

    System.Globalization.CultureInfo cInfo = new System.Globalization.CultureInfo("en-US");
    System.Globalization.DateTimeFormatInfo english = cInfo.DateTimeFormat;
    var cult = System.Globalization.CultureInfo.InvariantCulture;
    string fmt = "yyyyMM";

    var DataResults = new[] {
        new Data() {Desc="Item Name", Seq=10639, Period="200906", Value=1.65M},
        new …
Run Code Online (Sandbox Code Playgroud)

c# linq

0
推荐指数
1
解决办法
155
查看次数