小编Mr *_*ubs的帖子

如何更正自动删除Sharepoint备份的PowerShell脚本

我一直在使用这个(和这个)脚本来删除旧的sharepoint备份,但它会删除所有备份而不是14天以上的备份.

我通过powershell_ise.exe运行它并在其中包含的行下面放置一个断点$_.SPStartTime,它显示$_.SPStartTime =好像没有填充日期.我查看里面$sp.SPBackupRestoreHistory.SPHistoryObject,包含我期望的数据.

有问题的部分是在这一行:

# Find the old backups in spbrtoc.xml
$old = $sp.SPBackupRestoreHistory.SPHistoryObject |
? { $_.SPStartTime -lt ((get-date).adddays(-$days)) }
Run Code Online (Sandbox Code Playgroud)

我得到了所有的日期输出(我期望).这告诉我'where'或'?'中的问题 - 我知道它们是可以互换的.无论如何,$ old似乎总是为空.

按照要求:

<?xml version="1.0" encoding="utf-8"?>
<SPBackupRestoreHistory>
    <SPHistoryObject>
        <SPId>a8a03c50-6bc2-4af4-87b3-caf60e750fa0</SPId>
        <SPRequestedBy>ASERVER\AUSER</SPRequestedBy>
        <SPBackupMethod>Full</SPBackupMethod>
        <SPRestoreMethod>None</SPRestoreMethod>
        <SPStartTime>01/09/2011 00:00:13</SPStartTime>
        <SPFinishTime>01/09/2011 00:05:22</SPFinishTime>
        <SPIsBackup>True</SPIsBackup>
        <SPConfigurationOnly>False</SPConfigurationOnly>
        <SPBackupDirectory>E:\Backups\spbr0003\</SPBackupDirectory>
        <SPDirectoryName>spbr0003</SPDirectoryName>
        <SPDirectoryNumber>3</SPDirectoryNumber>
        <SPTopComponent>Farm</SPTopComponent>
        <SPTopComponentId>689d7f0b-4f64-45d4-ac58-7ab225223625</SPTopComponentId>
        <SPWarningCount>0</SPWarningCount>
        <SPErrorCount>0</SPErrorCount>
    </SPHistoryObject>
    <SPHistoryObject>
        <SPId>22dace04-c300-41d0-a9f1-7cfe638809ef</SPId>
        <SPRequestedBy>ASERVER\AUSER</SPRequestedBy>
        <SPBackupMethod>Full</SPBackupMethod>
        <SPRestoreMethod>None</SPRestoreMethod>
        <SPStartTime>01/08/2011 00:00:13</SPStartTime>
        <SPFinishTime>01/08/2011 00:05:26</SPFinishTime>
        <SPIsBackup>True</SPIsBackup>
        <SPConfigurationOnly>False</SPConfigurationOnly>
        <SPBackupDirectory>E:\Backups\spbr0002\</SPBackupDirectory>
        <SPDirectoryName>spbr0002</SPDirectoryName>
        <SPDirectoryNumber>2</SPDirectoryNumber>
        <SPTopComponent>Farm</SPTopComponent>
        <SPTopComponentId>689d7f0b-4f64-45d4-ac58-7ab225223625</SPTopComponentId>
        <SPWarningCount>0</SPWarningCount>
        <SPErrorCount>0</SPErrorCount>
    </SPHistoryObject>
</SPBackupRestoreHistory>
Run Code Online (Sandbox Code Playgroud)

powershell sharepoint sharepoint-2010

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

如何在Postgres数据库中存储UTF-16字符?

我试图?在Postgres数据库中存储一些文本(例如),但是当检索此值时,它在屏幕上显示为?.我不确定为什么这样做,我的印象是它是一个UTF-8不支持的角色,但是是UTF-8,但是,从第一个答案来看,这是一个不正确的假设.

原始问题(可能仍然有效):

我已经阅读过关于UTF-8 Surrogate对的内容,它可以实现我的要求,并且我已经看到了一些涉及该stringinfo 对象的示例TextElementEnumerators,但我无法找出实际的概念证明.

有人可以提供一个示例,说明如何编写和读取UTF-16(可能使用此代理对概念)到postgres数据库.谢谢.

更新的问题:为什么将?字符作为问号从数据库返回?

我们使用NPGSQL访问数据库和VB.Net.

.net postgresql encoding utf-16 surrogate-pairs

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

如何将对象数组拆分为多个给定大小的子数组

我想将一个对象数组拆分为多个包含不超过 10 个元素的数组。

花了很长时间查看示例,我能找到的最接近的是 C# 中的示例:

Enumerable.Range(0, 100).Select((Value, Index) => new {Value, Index})
    .GroupBy(p => p.Index/10)
    .Select(g => g.Select(p => p.Value).ToList())
Run Code Online (Sandbox Code Playgroud)

它在 LinqPad 中运行并工作,所以我尝试将其转换为 VB.Net:

Enumerable.Range(0, 100).Select(Function(Value, Index) New With {Value, Index}) _
    .GroupBy(Function(x) x.Index / 10) _
    .Select(Function(g) g.Select(Function(p) p.Value).ToList())
Run Code Online (Sandbox Code Playgroud)

但这并没有给出相同的结果,尽管看起来应该如此。

显然这只是一个例子,我真的希望它能够处理一系列海关对象。(加分点:为什么这两个例子不等价?)。

linq vb.net

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

为什么我不应该将.Net Framework对象作为字节数组发送到Web服务?

我一直想发送可以跨网站串行化的对象,比如字典或异常(因为我很反常).

我知道例如在字典中,我不应该发送自定义对象(作为值部分),以防我在Web服务上升级类库,但不在客户端上,因为这会导致字节数组不匹配它无法在另一端正确反序列化.

但我没有看到异常或图像对象等问题?

还有其他原因,比如我应该注意的性能问题吗?

如果我仔细使用它,这是一种有效的Web服务方法吗?这更像是一个理论问题,因此任何对答案的阐述都将受到赞赏.谢谢.

.net serialization web-services

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

在此代码中锁定的位置和内容

我有一个类,其中有两个方法,一个调用一个创建并执行多个线程的类,另一个是一个事件处理程序,它处理在这些线程完成时引发的事件(然后再次调用第一个方法).

我知道处理事件的方法在引发事件的线程中运行.因此,我SyncLock一个成员变量,说明正在运行多少个线程并从中减去一个:

SyncLock Me ' GetType(me)
    _availableThreads -= 1
End SyncLock
Run Code Online (Sandbox Code Playgroud)

所以我有几个问题:

主要问题:我是否应该在类中的任何地方使用SyncLock'ing _availableThreads - 即在创建线程的方法中(在创建线程时添加1)

与此问题相关的附带问题:

  1. 我通常会同步SyncLock当前的实例,但我已经看到了SyncLocks类型的代码,那么同步锁定SyncLock(Current Instance)和_availableThreads?之间的区别是什么?

  2. 这两者之间会有性能差异吗?并且有什么小的我可以锁定以上不影响其他任何东西 - 可能是一个单独的'挂锁'对象创建的唯一目的是锁定类中的东西?

注意:_available线程的唯一目的是控制在任何给定时间可以运行的线程数,并且线程处理可能需要数小时才能运行的作业.

码:

Public Class QManager
    Private _maxThreadCount, _availableThreads As Integer

    Public Sub New(ByVal maxThreadCount As Integer)
        Me.MaximumThreadCount = maxThreadCount
    End Sub

    Public Sub WorkThroughQueue()

        //get jobs from queue (priorities change, so call this every time)
        Dim jobQ As Queue(Of QdJobInfo) = QueueDAO.GetJobList


        //loop job queue while there are jobs and we have threads …
Run Code Online (Sandbox Code Playgroud)

vb.net multithreading thread-safety synclock

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

使用BlockCopy方法时,为什么要添加额外的4个字节

搜索后,我没能找到一个很容易理解的解释,为什么额外的4个使用时对加BlockCopy方法(如图所示这里,这里,这里,这里)

文件说:

顾名思义,BlockCopy方法整体复制一个字节块,而不是一次复制一个字节.因此,如果src和dst引用相同的数组,并且srcOffset + count -1的范围与dstOffset + count - 1的范围重叠,则重叠字节的值在复制到目标之前不会被覆盖.在以下示例中,名为arr的数组中的字节0-16的值将复制到字节12-28.尽管范围重叠,但源字节的值已成功复制.

但是我并没有真正明白这一点,并希望有人能够以不同的方式解释它(或发布一个解释这个的资源的链接),以及为什么需要添加这些额外的4个字节.

为清楚起见,这里是我所指的代码:

作为压缩方法的一部分:

byte[] gzBuffer = new byte[compressed.Length + 4];
System.Buffer.BlockCopy(compressed, 0, gzBuffer, 4, compressed.Length);
System.Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gzBuffer, 0, 4);
Run Code Online (Sandbox Code Playgroud)

作为解压缩方法的一部分:

ms.Write(gzBuffer, 4, gzBuffer.Length - 4);
Run Code Online (Sandbox Code Playgroud)

.net compression copy bytearray

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